Solaris 模块调试器指南

进程的附加和释放

如果 MDB 附加到正在运行的用户进程,则会停止该进程并使其一直处于停止状态,直到应用一个用于继续执行操作的 dcmd 或调试器退出为止。 如果在使用 -p 将调试器附加到某个进程之前或者发出 ::attach:A 命令之前启用了 -o nostop 选项,MDB 将会附加到该进程但不会将其停止。在进程仍然运行的同时,可以按通常那样对其进行检查(尽管结果会不一致),并且可以启用断点或其他跟踪标志。 如果在进程运行的同时执行 :c::cont dcmd,则调试器将等待进程停止。如果没有发生跟踪的软件事件,则用户可以在 :c::cont 之后发送中断字符 (^C),以强制进程停止并将控制返回到调试器。

执行 :R::release:r::run$q::quit dcmd 时,或者调试器因遇到 EOF 或信号而终止时,MDB 将释放当前运行的进程(如果有)。如果进程最初是调试器使用 :r::run 创建的,则在释放该进程时会强制将其终止,就好像是通过 SIGKILL 执行一样。 如果在将 MDB 附加到进程之前该进程已经运行,则在释放该进程时会将其设置为再次运行。使用 ::release -a 选项,可以释放进程并使其保持停止和放弃状态。