Debugging Tools for Windows

KD连接服务器示例

假设调试技术人员和被调试的计算机不在同一个地方。技术人员请在机器旁边的其他人将目标机和另一台计算机用调试电缆连接起来。

假设另一台计算机的IP地址是127.0.0.42。调试电缆将该计算机的COM1接口和目标机的调试端口连接起来。KD连接服务器使用下面的命令启动:

E:\Debugging Tools for Windows> kdsrv -t tcp:port=1027 

然后在另一边,技术人员使用下面的命令将WinDbg作为灵巧客户端启动起来:

G:\Debugging Tools> windbg -k kdsrv:server=@{tcp:server=127.0.0.42,port=1027},trans=@{com:port=com1,baud=57600} -y SymbolPath 

符号路径和灵巧客户端运行的计算机关联。

这里有另外一个例子。该示例中,选择使用NPIPE协议,调试器使用KD而不是WinDbg。第一个用户选择了管道名。可以是任意字母或和数字组成的字符串 — 本例中为"KernelPipe"。

E:\Debugging Tools for Windows> set _NT_DEBUG_PORT=com1 
E:\Debugging Tools for Windows> kdsrv -t npipe:pipe=KernelPipe 

技术人员不清楚所使用的名字,所以他/她在网络上查询管道名:

G:\Debugging Tools> cdb -QR 127.0.0.42 
Servers on 127.0.0.42:
Debugger Server - npipe:Pipe=MainPipe
Remote Process Server - npipe:Pipe=AnotherPipe
Remote Kernel Debugger Server - npipe:Pipe=KernelPipe

显示出了三个管道。但是,只有一个是KD连接服务器 — 其他是调试服务器和用户模式进程服务器。所以可以用下面的命令来启动灵巧客户端:

G:\Debugging Tools> kd -k kdsrv:server=@{npipe:server=127.0.0.42,pipe=KernelPipe},trans=@{com:baud=57600} -y SymbolPath 

注意,虽然设置了波特率,但是没有设置端口。这使得调试器默认使用由KdSrv运行的机器上的_NT_DEBUG_PORT 环境变量指定的端口。

Build machine: CAPEBUILD