Debugging Tools for Windows |
在调试会话中时可以退出任何Microsoft Windows调试器。三个调试器退出的方法有一些不同点。WinDbg可以在不结束自己的情况下结束调试会话。
如果想避免意外结束调试会话,可以使用.quit_lock (Prevent Accidental Quit)命令。
可以使用q (Quit)命令退出CDB。该命令同时关闭被调试的程序。
在Windows XP和之后版本的Windows中, qd (Quit and Detach) 命令停止CDB对目标程序的附加,退出调试器,并让目标程序继续运行。如果启动调试器时使用了-pd命令行选项,因为任何原因产生的会话结束都会造成停止附加。(该技术使得-pd 在调试不希望被结束的敏感程序如CSRSS时特别有用。)
在Windows 2000中,qd 命令和-pd 选项会产生一条警告消息,并且不起作用。这些系统上不允许调试器停止对目标程序的附加。 (如果目标一定不能被结束,应该使用非侵入式的调试,并且使用Q命令退出。更多信息,查看附加到运行中的进程(用户模式)。)
如果调试器停止了响应,可以通过按下CTRL+B再按下ENTER来退出。这种方法是退出的后备机制。它强制性的结束调试器,类似从任务管理器结束进程或关闭窗口。
有两种方法用于退出KD。
kd> g
kd> <CTRL+B> <ENTER>
使用CTRL+B退出调试器不会清除内核模式断点。但是附加一个新的内核调试器上去会清除这些断点。
进行远程调试时,使用q结束调试会话。CTRL+B退出调试器,但是保持会话激活。这种情况使得另一个调试器可以连接到该会话。
如果q命令不起作用,在主控机上按下CTRL+R再按下ENTER,再尝试使用q命令。如果还是无效,则只能使用CTRL+B来退出调试器。
可以通过在File菜单点击Exit或按下ALT+F4退出WinDbg。
如果在进行用户模式调试,这些命令会关闭调试的程序,除非在启动调试器时使用了-pd命令行选项。
如果在进行内核模式调试,目标机会保持它的当前状态。所以这样可以让目标保持运行或冻结。(如果让目标冻结,之后的任何内核调试器的连接都可以恢复调试。)
要停止用户模式调试会话将调试器返回到静止状态,并关闭目标程序,可以使用下面一些方法:
要停止用户模式调试会话,将调试器返回到静止模式,并让目标程序重新运行起来,可以使用下面方法:
在Windows XP和之后的Windows中可以停止对目标的附加。在Windows 2000中,qd 命令和-pd选项产生一条警告信息,并且不起作用。这些操作系统不允许调试器停止对目标的附加。如果目标一定不能被结束,应该使用非侵入式调试。更多信息,查看非侵入式调试(用户模式))。
停止用户模式调试会话并将调试器返回到静止模式,但保持目标程序在调试状态,可以使用下面的方法:
关于重新附加到目标的更多信息,查看重新附加目标程序。
停止内核模式调试会话,将调试器返回到静止模式并保持目标机被冻结,可以使用如下方法:
当WinDbg会话结束时,会提示保存当前会话的工作空间,并且WinDbg返回到静止模式。这时,可以使用任何开始的方法。即可以开始调试一个运行中的进程、创建新进程、附加到目标机或连接到远程调试会话。关于这些选择的更多信息,查看启动调试器。