Debugging Tools for Windows

双防火墙

假设需要对A建筑内的机器进行内核调试,而技术员在建筑C,他/她需要在那里访问符号。但是,两个建筑里面都有防火墙阻止外来的连接。

需要在另一个位置设置一个转发器 — 例如建筑B。然后可以从A连接到B,同时从C连接到B。

这种情况下需要4台计算机:

首先,确认目标机已经配置为可以调试并且被本地主机附加上去。本例中使用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 

5台计算机的情况

当符号在建筑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上的灵巧客户端)提供,而不是链尾的调试器提供。

Build machine: CAPEBUILD