Windbg远程调试(MSDN翻译)
使用Windbg进行远程调试
远程调试是需要又在不同位置上的调试器。执行真正调试称为调试服务器,另外一个,被称为,调试客户端。调试客户端,控制着一个与远程调试器相应的是会话。为了建立调试服务器,然后再打开调试客户端。
被调试的代码可以运行在调试服务器的同一台机器上,或者是运行在独立的机器上。如果调试服务器作为用户调试模式,这是被调试的进程能够运行在调试服务器所在的机器上。如果调试服务器作为内核调试模式,这是被调试的代码往往需要运行在另一台目标机器上。
下面的图表示了一个调试服务器的远程会话,调试服务器运行在宿主计算机上,被调试的内核模式代码运行在另一台分离的目标计算机上。
有几种传输协议可以用来作为远程调试的连接:TCP,NPIPE,SSL和COM port.假设你选择使用TCP作为连接协议你就需要选择Windbg作为调试客户端和调试服务器。你可以按照下面的内容来建立远程内核模式调试会话:
1.在宿主计算机上,打开WinDBG,然后和目标机器建立内核模式调试会话。
2.在调试菜单中点击Break或者直接Ctrl-Break。
3.在Debugger Command Window中,输入如下命令(5005为任意选择的端口作为实例):
.server tcp:port=5005
4.WinDbg将返回如下内容:
Server started. Client can connect with any of these command lines
0: <debugger> -remote tcp:Port=5005,Server=YourHostComputer
5.在远程计算机上,打开WinDbg,选择File菜单中的Connect to Remote Session。
6.在Connection String下面, 输入下面的字符串
tcp:Port=5005,Server=YourHostComputer
YourHostComputer的地方可以是你运行调试服务器计算机的名字,或者是IP.
完成上述步骤之后,点击OK。
使用命令行
作为之前提供方法的另一种可行的方法,你可以使用命令行来建立一个远程调试会话。假设你已经建立了一个内核模式的调试会话,在Host计算机和目标计算机之间使用32通道的1394线缆来进行连接。你可以使用如下的命令来建立一个远程调试会话:
1.在你的Host计算机上,打开CMD,输入如下的命令:
windbg -server tcp:port=5005 -k 1394:channel=32
2.在作为客户端的远程计算机上,打开CMD输入如下的命令:
windbg -remote tcp:Port=5005,Server=YourHostComputer
在YourHostComputer的地方,可以输入你的作为调试服务器的计算机的名称或者是IP,
附加信息
有许多建立远程调试的方法。有关于建立一个调试服务器更完整的信息可以在WinDbg的命令输入框中输入 .server 查看。要查看更完整的关于WinDbg启动命令行的信息可以查看WinDbg Command-Line Options.
推荐阅读