重新附加到目标应用程序

如果调试器冻结或停止响应 (即在执行用户模式调试时) 崩溃 ,则可以将新的调试器附加到现有进程。

注意 此方法仅在 Microsoft Windows XP 和更高版本的 Windows 上受支持。 此方法不依赖于调试器是最初创建进程还是附加到现有进程。 此方法不依赖于是否使用了 -pd 选项。

若要将调试器重新附加到现有目标应用程序,请执行以下操作:

  1. 确定目标应用程序的进程 ID

  2. 启动 CDB 或 WinDbg 的新实例。 使用 -pe 命令行选项。

    Debugger -pe -p PID 
    

    还可以使用其他 命令行选项

    还可以使用 .attach (附加到进程) 命令以及 -e 选项,从休眠调试器进行连接。

  3. 完成附加后,结束原始调试器进程。

  4. 如果进程未正确响应,则其暂停计数可能过高。 可以使用 ~m (“恢复线程) ”命令来减少暂停计数。 有关挂起计数的详细信息,请参阅 控制进程和线程

如果原始调试器仍然正常运行,则此方法可能不起作用。 这两个调试器正在争用调试事件,Windows 操作系统不一定将所有调试事件分配给新的调试器。

如果原始调试器在附加新调试器之前已结束,则目标应用程序也会关闭。 (但是,如果调试器附加了 -pd 选项,然后正常退出,则目标应用程序将继续运行。在这种情况下,第二个调试器可以在不使用 -pe 选项的情况下附加到目标应用程序。)

如果已在调试某个进程,并且想要与进程分离,但使其处于调试状态,则可以使用 .abandon (放弃进程) 命令。 此命令后,任何 Windows 调试器都可以使用本主题中所述的过程重新附加到进程。