WinDbg 配置调试服务器
2024-04-15 08:42:08

WinDbg 支持远程调试,支持协议:命名管道 (NPIPE)、TCP、COM 端口、安全管道 (SPIPE) 和安全套接字层 (SSL)。
如今绝大多数只会用到 COM 和 TCP 通信。走 COM 协议一般是用来调试系统内核,而应用层软件调试基本就是用 TCP。

用 WinDbg.exe 建立服务器

启动调试服务器

  • 通过命令行参数启动

    1
    windbg.exe -server tcp:port=5000
  • 通过调试命令启动
    .server 用于启动一个调试服务器。

    1
    .server tcp:port=5000

连接调试服务器

  • 通过命令行参数连接
    .remote 用于连接调试服务器。

    1
    windbg.exe -remote tcp:server=192.168.175.134,port=5000
  • 通过 WinDbg 图形界面操作
    按下Ctrl + R打开Connect to Remote Debugger Session窗口并输入调试服务器地址:

    输入服务器地址:

    1
    tcp:server=192.168.175.134,port=5000

用 dbgsrv.exe 建立调试服务器

与 windbg 作为调试服务器的区别是无界面,全程在客户端即可操作。但是要求双方的 windbg 版本一致,否则附加进程列表显示为空。
通过命令行参数启动服务器:

1
dbgsrv.exe -t tcp:port=5000

连接服务器

  • 客户端通过-premote来连接。

    1
    windbg.exe -premote tcp:server=192.168.175.134,port=5000
  • 通过 WinDbg 图形界面操作
    打开File菜单,选择Connect to Remote Stub...

    输入服务器地址,和前面一样:

    1
    tcp:server=192.168.175.134,port=5000

总结

windbg 和 dbgsrv 都可以作为调试服务器,但有些区别:

  • windbg 会出现图形界面,双方均可输入调试命令并且操作是同步的。而 dbgsrv 仅在后台工作,调试完全在控制端进行。
  • windbg 作为服务器时,符号文件缓存在被控端本地。而用 dbgsrv 时符号文件在控制端。
  • windbg 作为服务器时,不要求双方 windbg 的版本一致。而用 dbgsrv 时则要求 windbg 版本一致,否则无法附加程序。

相关阅读

激活调试服务器
WinDbg 命令行选项
DbgSrv 命令行选项
windbg调试命令