跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:使用 dbx 调试程序 Oracle Solaris Studio 12.3 Information Library (简体中文) |
可能需要调试已经运行的程序。如果属于下列情况,便需要连接正在运行的进程:
要调试正在运行的服务器,但又不想停止或中止服务器。
要调试正在运行的具有图形用户界面的程序,但又不想重新启动该程序。
程序处于无限循环,要调试该程序但又不想将其中止。
通过将程序的 process_id 编号用作 dbx debug 命令的一个参数,可以将 dbx 连接到正在运行的程序。
程序调试完毕后,便可以使用 detach 命令来解除 dbx 对程序的控制,而无需终止进程。
如果在将 dbx 连接到正在运行的进程后退出 dbx,dbx 会在终止前隐式分离。
要将 dbx 连接到独立于 dbx 运行的程序,可以使用 attach 命令或 debug 命令。
要将 dbx 连接到已经运行的进程,请键入:
(dbx) debug program_name process_id
或
(dbx) attach process_id
可以用一个 –(破折号)代替 program_name;dbx 将自动查找与进程 ID 相关联的程序并将其载入。
% 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
可以对具有某些异常的连接的进程使用运行时检查。请参见对连接的进程使用运行时检查。