使用 WinDbg 进行远程调试

通过远程调试,可以调试在不同计算机上运行的代码。 本指南介绍如何设置调试服务器并连接调试客户端以远程控制调试会话。 你将了解配置这两个组件的确切步骤。

要调试的代码可能在调试服务器所在的同一台计算机上运行,也可能在单独的计算机上运行。 如果调试服务器执行用户模式调试,则调试的进程可以在调试服务器所在的同一台计算机上运行。 如果调试服务器执行内核模式调试,则调试的代码通常在单独的目标计算机上运行。

此图显示了三台计算机如何在典型的远程调试设置中协同工作:

展示用于内核模式调试的远程、主机和目标计算机连接示意图的屏幕截图。

重要

远程调试会使系统面临潜在的安全风险。 在继续之前:

可以将多个传输协议用于远程调试连接:TCP、NPIPE、SPIPE、SSL 和 COM 端口。 假设你选择 TCP 作为协议,WinDbg 作为调试客户端和调试服务器。 使用以下过程建立远程内核模式调试会话。

  1. 在主计算机上,打开 WinDbg,并使用目标计算机建立内核模式调试会话。 (请参阅 使用 WinDbg(经典)进行实时内核模式调试。

  2. 通过“调试”菜单中选择“中断”或按 Ctrl-Break 来中断。

  3. 调试器命令窗口中,输入以下命令。

    .server tcp:port=5005

    注释

    端口号 5005 是任意的。 选择端口号。

  4. WinDbg 使用类似于以下内容的输出做出响应。 复制连接字符串 - 下一步需要它。

    Server started.  Client can connect with any of these command lines
    0: <debugger> -remote tcp:Port=5005,Server=YourHostComputer
    
  5. 在远程计算机上,打开 WinDbg,然后从“文件”菜单中选择“连接到远程会话”。

  6. 在“连接字符串”下,输入以下字符串。

    tcp:Port=5005,Server=YourHostComputer

    其中 ,YourHostComputer 是运行调试服务器的主机的名称。

    选择“确定”

使用命令行

作为上一部分中过程的替代方法,可以在命令行中设置远程调试会话。 假设你想要在主计算机与目标计算机之间通过通道 32 上的 1394 电缆建立内核模式调试会话。 使用以下过程建立远程调试会话:

  1. 在主计算机上,在命令提示符窗口中输入以下命令。

    windbg -server tcp:port=5005 -k 1394:channel=32

  2. 等待服务器启动。 你将看到一条包含连接详细信息的确认消息。 在继续执行步骤 3 之前复制此连接字符串。

  3. 在远程计算机上,在命令提示符窗口中输入以下命令。

    windbg -remote tcp:Port=5005,Server=YourHostComputer

    其中 ,YourHostComputer 是运行调试服务器的主机的名称。

重要

1394 传输可用于 Windows 10 版本 1607 及更低版本。 它在更高版本的 Windows 中不可用。 将您的项目迁移到其他传输方式,例如使用以太网的 KDNET。 有关该传输的详细信息,请参阅自动设置 KDNET 网络内核调试

后续步骤

除了本主题中显示的远程调试之外,还可以通过多种方式建立远程调试。