Oracle® Solaris Studio 12.4:使用 dbx 调试程序

退出打印视图

更新时间: 2015 年 1 月
 
 

dbx 连接到正在运行的进程

    可能需要调试已经运行的程序。在以下情况中,需要连接到正在运行的进程:

  • 要调试正在运行的服务器,但又不想停止或中止服务器。

  • 要调试正在运行的具有图形用户界面的程序,但又不想重新启动该程序。

  • 程序处于无限循环,要调试该程序但又不想将其中止。

通过将程序的进程 ID 编号用作 dbx debug 命令的一个参数,可以将 dbx 连接到正在运行的程序。

程序调试完毕后,便可以使用 detach 命令来解除 dbx 对程序的控制,而无需终止进程。

如果在将 dbx 连接到正在运行的进程后退出,dbx 会在终止前隐式分离。

要将 dbx 连接到独立于 dbx 运行的程序,可以使用 attach 命令或 debug 命令:

(dbx) debug program-name process-ID

(dbx) attach process-ID

可以用一个 –(短划线)替换程序名称。dbx 将自动查找与进程 ID 相关联的程序并将其装入。

有关更多信息,请参见debug 命令attach 命令

如果 dbx 未运行,可通过键入以下命令来启动 dbx

% dbx program-name process-id

dbx 连接到程序后,程序便停止执行。将其他程序装入 dbx 时,可以检查该程序。可以使用任何事件管理或进程控制命令来调试该程序。

    在调试现有进程的过程中将 dbx 连接到新进程时,会出现下列情况:

  • 如果使用 run 命令启动当前正在调试的进程,那么 dbx 会在连接新进程之前终止此进程。

  • 如果使用 attach 命令或通过在命令行中指定进程 ID 来开始调试当前进程,则 dbx 会在连接到新进程之前从当前进程中分离。

如果要将 dbx 连接到的进程由于 SIGSTOP 信号、SIGTSTOP 信号、SIGTTIN 信号或 SIGTTOUT 信号而停止,则连接会成功,并显示类似以下的消息:

dbx76: warning: Process is stopped due to signal SIGSTOP

该进程是可检查的,但是要恢复它,您需要使用 cont 命令向其发送 SIGCONT 信号:

(dbx) cont -sig cont

可以对具有某些异常的连接的进程使用运行时检查。请参见对连接的进程使用运行时检查