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

技术人员使用无权访问服务器计算机的帐户登录到客户端计算机。 但技术人员知道有权访问服务器计算机的帐户的用户名和密码。 该帐户的用户名为 Contoso。 技术人员输入以下命令:

net use \\BOX17\ipc$ /user:Contoso

出现提示时,技术人员输入 Contoso 帐户的密码。

技术人员不确定命名管道使用的名称,因此他们查询 KD 连接服务器的 127.0.0.42:

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 指定的端口。