两个防火墙
在此场景中,您需要对 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=Password
最后,在C栋启动127.0.30.30上的智能客户端(这实际上可以在A栋启动服务器之前或之后完成)。
windbg -k kdsrv:server=@{tcp:server=127.0.20.20,port=9001,password=Password},trans=@{1394:channel=9} -y SymbolPath
包含五台计算机的方案
如果假设符号位于 Building 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=Password},trans=@{1394:channel=9} -y SymbolPath
然后,在大楼中的其他位置,技术人员可以启动调试客户端,如下所示:
windbg -remote npipe:server=\\BOXC,pipe=randomname
请注意,密码必须由链中的第一个非重复程序(\\BOXC
上的智能客户端)提供,而不是由链中的最终调试器提供。
重要
使用远程调试时,有一些重要的安全注意事项。 有关详细信息,包括启用安全模式的信息,请参阅