开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

WinDBG 技巧: 如何用WinDBG远程调试程序

简介:
+关注继续查看
在某些情况下我们需要进行远程调试(比如该程序运行需要时候全屏,或者程序在客户的机器上crash崩溃), 这时候可以使用WinDBG的远程调试功能。
WinDBG的远程调试由服务端和客户端组成,和visual studio类似。 被调试的机器是服务端(server), 我们做调试的机器是客户端(client)。 两台机器都需要安装WinDBG。
第一步, 建立WinDBG server 端。
使用 -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 -server npipe:pipe=DbgPipe winmine.exe (使用命名管道DbgPipe 建立调试服务,调试winmine.exe 程序)
WinDBG.exe -server tcp:port=1025 -p 122 (使用TCP协议,在端口1025建立调试服务, 调试机器上进程号为122的程序, 或者说Attach 到122进程进行调试)
第二步, 用WinDBG client 端连接服务端
使用 -remote 参数可以使WinDBG 以客户端方式启动去连接服务端, 可以指定不同的连接方式:
命名管道
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]

示例 (假设被调试的机器名字是dbgPC):
 

WinDBG.exe-remote npipe:server=dbgPC,pipe=DbgPipe (使用命名管道DbgPipe 建立连接被调试机器dbgPC)
 

WinDBG.exe-remote tcp:server=dbgPC,port=1025 (使用TC协议, 连接被调试机器dbgPC的端口1025)

关于Windows 远程调试更多详细的内容,请参考MSDN http://msdn.microsoft.com/en-us/library/cc266457.aspx
 


 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273978,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Go 实现 WebSockets:2. 如何在 Go 中创建 WebSockets 应用程序
上一篇文章我们先介绍了什么是 WebSockets 协议。本篇文章将来介绍如何利用 Go 来实现一个 WebSockets。要基于 net/http 库编写一个简单的 WebSocket 响应服务器,我们需要: 1.建立握手 2.从客户端接收数据帧 3.向客户端发送数据帧 4.关闭握手
31 0
IDEA调试技巧:远程调试
IDEA调试技巧:远程调试
55 0
如何验证程序是否完成,测试以及修正Bug?
在日常中,我们码代码都是按照需求来的,为了验证我们的工作成果是否符合项目的需求,那么验证程序是否完成、测试以及修复bug就成了我们工作中非常重要的流程。
322 0
如何将Skyline66嵌入WPF中
1.新建WPF项目; 2.添加引用 .net引用:System.Windows.Forms和WindowsFormsIntegration skyline引用:AxInterop.TerraExplorerX和TerraExplorerX 3.
1082 0
uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试
      今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行。这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟4412是一样的架构了,今天将uboot加载流程基本上算是搞明白了,也明白了uboot最后是通过一些手段,最终能够去加载kernel.img,最终启动内核,后面就是加载文件系统了。
1267 0
gdbserver远程调试嵌入式linux应用程序方法
此处所讲的是基于gdb和gdbsever的远程调试方法。环境为:PC机:win7、虚拟机:10.04、下位机:飞嵌TE2440开发板。   嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行。
1182 0
WinCE中串口通讯的调试方法
串口是嵌入式系统中应用很广的一种通讯接口。在WinCE中,通常会有一个串口供调试使用,另外的串口可与外围设备连接,如GSM和GPS等模块,以获取相应的信息并进行处理。       在WinCE中,为了使用串口,必须有相应的串口驱动程序,一般在BSP中都有实现。
1025 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
小程序 大世界
立即下载
15分钟打造你自己的小程序
立即下载
《15分钟打造你自己的小程序》
立即下载