参考文档:
WinDbg的安装
WinDbg 入门教程
Windbg教程
Windbg调试命令详解
Getting Started with Windows Debugging
点我跳转下载链接
直接点击页面里的 Download WinDbg Preview from the Microsoft Store就会自动打开windows应用商城下载。
安装完成后,可以从c盘搜索WinDbg找到安装目录,默认的是在C:\Users\你的用户名\AppData\Local\Microsoft\WindowsApps
安装好之后就需要配环境变量,打开环境变量配置界面 我的电脑->右键属性->高级系统设置->环境变量设置->在系统变量里找到path,把你的WinDbg安装目录添加上去
然后再在系统变量中创建一个名为 _NT_SYMBOL_PATH,值为:SRVc:\mysymbol http://msdl.microsoft.com/download/symbols的环境变量。
1.将电脑重启
2.重启后打开WinDbg,然后点击->文件->Attach to Process->选择一个进程附加,
附加完成之后c盘根目录下出现名为mysymbol的文件夹,并且WinDbg里出现
则表示安装成功。
使用WinDbg进行远程调试是很容易的,而且有很多种可行的方法。在下文中,’调试服务器’指的是运行在你所要调试的远程机器上的调试器。’调试客户端’指的是控制当前会话的调试器。
使用调试器:你需要CDB, NTSD或者WinDbg已经安装在远程机器上。WinDbg客户端可以连接到CDB, NTSD或者WinDbg中的任何一个作为服务器,反之亦然。在客户端和服务器直接可以选择TCP或者命名管道作为通讯协议。
1.在服务器端的启动过程:
你可以用多种协议开启不同的服务会话。并且可用密码来保护一个会话。
2.从客户端连接:
使用Remote.exe:Remote.exe使用命名管道作为通讯的方式。如果你使用的是一个命令行接口的程序,比如KD,CDB或者NTSD。你可以使用remote.exe来远程调试。注意:使用@q(不是q)来退出客户端,不用关掉服务端。
3.要启动一个服务端:
Remote.exe /s “cdp –p ” test1
4.从客户端连接:
Remote.exe /c test1
上面的test1是我们所选择的命名管道的名字。
服务端会显示那个客户端从那个服务器连接以及执行过的命令。你可以使用‘qq’命令来退出服务端;或者使用File->Exit来退出客户端。另外,如果要进行远程调试,你必须属于远程机器的”Debugger User”组并且服务器必须允许远程连接。
在WinDbg的文档的”Enabling Postmorten Debugging”部分对此有很详细的讨论。简而言之,你可以把WinDbg设置成默认的即时调试器,命令就是:Windbg –I。这个命令实际上是把注册表中 HKLM/Software/Microsoft/Windows NT/CurrentVersion/AeDebug的键值设置成WinDbg。如果要把WinDbg设置成为默认的托管调试器,你需要显示设置如下的注册表键值:
通过JIT的设置,当一个应用程序在不是调试的状态下抛出了未处理的异常之时,WinDbg就会被启动。
所有这些调试器均支持在AMD64和IA64上的64位调试环境。
使用WinDbg,你可以像调试其它应用程序那样调试Windows服务程序。即可以通过附加进程的方法启动Windows服务,也可以把WinDbg当作一个即时调试器,并且在代码中调用DbgBreakPoint 或者 DebugBreak,或者在x86机器上加入一条int 3汇编指令。
一个调试器会得到两次的异常通知-第一次在应用程序有机会处理异常之前(‘first chance exception’);如果应用程序没有处理这个异常,这时候调试器就会有机会来处理异常(‘second-chance exception’)。如果调试器没有处理二次机会的异常,应用程序就会退出。
.lastevent或者,!analyze –v命令会给你显示异常的记录以及异常抛出所在函数的堆栈跟踪信息。
你也可以使用 .exr, .cxr以及 .ecxr命令来显示异常和上下文记录。同时需要注意的是,你也可以改变first-chance的处理选项。对应的命令就是: sxe, sxd, sxn和sxi。
能否请教一个问题:
我的Windbg不能设置断点,重新加载Symbols文件的时候也总是有几个加载失败,Symbols file path的设置是:
SRVc:/symbolshttp://msdl.microsoft.com/download/symbols。
类似的环境变量也设置了,可是怎么弄都不行,又没有什么好的建议?
用 ; 将Symbols file path分开,例如:
d:/dev/src;SRVc:/symbolshttp://msdl.microsoft.com/download/symbols
简单命令行示例
详细命令教程