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 版本一致,否则无法附加程序。