远程调试是需要又在不同位置上的调试器。执行真正调试称为调试服务器,另外一个,被称为调试客户端。调试客户端,控制着一个与远程调试器相应的是会话。有2种方式:直接使用windbg进行远程连接,使用cmd命令行。
注意:
pdb文件一定放置在服务器上面,在客户端的windbg里设置的符号文件路径也一定设置服务器的路径,否则在客户端的调试器中会出现无法打开路径的警告。
使用Windbg进行远程调试
服务端
1.在服务端当正常普通的情况下,使用Windbg运行可执行exe,像正常调试检测一样,可以执行到dmp文件。
2.在Debugger Command Window中,输入如下命令(5005为任意选择的端口作为实例):
.server tcp:port=5005
3.WinDbg将返回如下内容:
Server started. Client can connect with any of these command lines
0: <debugger> -remote tcp:Port=5005,Server=YourHostComputer
客户端:
在客户端计算机上,打开WinDbg,选择File菜单中的Connect to Remote Session。
6.在Connection String下面, 输入下面的字符串
tcp:Port=5005,Server=YourHostComputer
YourHostComputer的地方可以是你运行调试服务器计算机的名字,或者是IP.
在服务器和客户端的Command Window 都显示连接成功,这时候就可以在客户端输入执行的命令。
使用命令行
使用 -server 参数可以使WinDBG 以服务器方式启动。 WinDBG可以用多种连接协议让客户端连接,比如命名管道(named pipe), 安全管道(secure pipe), TCP 协议(socket), SSL 协议, 串口/并口(COM port) 等等。
服务端
命名管道
WinDBG.exe -server npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [-noio] [Options]
TCP 协议
WinDBG.exe -server tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] [-noio] [Options] WinDBG.exe -server tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] [-noio] [Options]
串口/并口
WinDBG.exe -server com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden],password=Password] [-noio] [Options]
安全管道
WinDBG.exe -server spipe:proto=Protocol,certuser=Cert|machuser=Cert},pipe=PipeName[,hidden],password=Password] [-noio] [Options]
SSL 协议
WinDBG.exe -server ssl:proto=Protocol,certuser=Cert|machuser=Cert},port=Socket[,hidden],password=Password] [-noio] [Options] WinDBG.exe -server ssl:proto=Protocol,certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password] [-noio] [Options]
客户端
命名管道
WinDBG.exe -remote npipe:server=Server,pipe=PipeName[,password=Password]
TCP 协议
WinDBG.exe -remote tcp:server=Server,port=Socket[,password=Password][,ipversion=6]
WinDBG.exe -remote tcp:clicon=Server,port=Socket[,password=Password][,ipversion=6]
串口/并口
WinDBG.exe -remote com:port=COMPort,baud=BaudRate,channel=COMChannel[,password=Password]
安全管道
WinDBG.exe -remote spipe:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,pipe=PipeName[,password=Password]
SSL 协议
WinDBG.exe -remote ssl:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,port=Socket[,password=Password]
WinDBG.exe -remote ssl:proto=Protocol,{certuser=Cert|machuser=Cert},clicon=Server,port=Socket[,password=Password]
如
服务端
1)、运行cmd.exe
2)、进入windbg的安装目录
3)、运行以下命令
(1)、windbg –server tcp:port=5005 F:\test\stdtest\sdk\release\MFCtest.exe //后面的是可执行程序
客户端:
1)、运行cmd.exe
2)、进入windbg的安装目录
3)、运行以下命令
windbg –remote tcp:port=5005,server=192.168.33.11 //服务主机的ip
需要设置一下环境,有2种办法:
1.在cmd 中,跳转目录到 windbg.exe 的安装目录,使用cd 绝对路径
2.在环境变量的系统变量path 加上 windbg.exe 的安装目录。