两个防火墙

在此方案中,需要在生成 A 中的计算机上执行内核调试。技术人员位于大楼 C 中,有权访问该处的符号。 但是,这两个建筑物的防火墙都不允许传入连接。

你需要在中性站点设置中继器-例如,建筑物 B。然后,可以将 A 向外连接到 B,将 C 向外连接到 B。

此方案涉及四台计算机:

  • 位于建筑物 A 中的目标计算机。

  • 位于建筑物 A 中的本地主机。此计算机将运行 KD 连接服务器。 它将通过调试电缆或 1394 电缆连接到目标计算机,并将向外连接到中继器。 让此计算机的 IP 地址为 127.0.10.10。

  • 建筑物 B 中的计算机。这将运行中继器。 使其 IP 地址为 127.0.20.20。

  • 技术人员所在的大楼 C 中的计算机。 此计算机将作为智能客户端运行 WinDbg。 使其 IP 地址为 127.0.30.30。

首先,确保目标计算机已配置为进行调试,并且已附加到本地主计算机。 在此示例中,使用 1394 电缆。

其次,在 127.0.20.20 启动中继器:

dbengprx -p -s tcp:port=9001 -c tcp:port=9000,clicon=127.0.10.10

第三,在建筑物 A 中的 127.0.10.10 上启动 KD 连接服务器,如下所示:

kdsrv -t tcp:port=9000,clicon=127.0.20.20,password=longjump

最后,在大楼 C.中启动智能客户端 127.0.30.30, (这实际上可以在建筑物 A.) 中启动服务器之前或之后完成

windbg -k kdsrv:server=@{tcp:server=127.0.20.20,port=9001,password=longjump},trans=@{1394:channel=9} -y SymbolPath

Five-Computer方案

如果假设符号位于建筑物 C 中的一台计算机上,但技术人员位于另一台计算机上,则此方案可能更加复杂。

假设 127.0.30.30 与之前一样具有符号,并且其本地名称为 \\BOXC。 可以使用上述相同命令启动智能客户端,但使用附加的 -server 参数。 由于没有人会使用此计算机,因此如果使用 KD 而不是 WinDbg,则需要更少的处理时间:

kd -server npipe:pipe=randomname -k kdsrv:server=@{tcp:server=127.0.20.20,port=9001,password=longjump},trans=@{1394:channel=9} -y SymbolPath

然后,技术人员可以在大楼中的其他位置启动调试客户端,如下所示:

windbg -remote npipe:server=\\BOXC,pipe=randomname

请注意,密码必须由链中的第一个非中继器提供, (\\BOXC) 上的智能客户端,而不是由链中的最后一个调试器提供。