- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windbg簡明教程
Windbg简明教程
Sucsor on 2006.06.11
Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug(新版本对于XP+操作系统支持Live kernel debug),同时结合Microsoft的Symbol Server调试应用程序和Kernel非常得利。Windbg支持x86,IA64,AMD64。
Windbg下载地址:/whdc/devtools/debugging/default.mspx
下面我来说一下Windbg的基本用法:
基本设置
由于Windbg是GUI调试器,所以在设置方面可以通过菜单,也可以通过命令。我只说明最方便的办法:),那请先打开Windbg吧
符号路径设置,Ctrl+S在弹出的窗口中输入你的符号路径,路径的格式只要符合Windows操作系统路径格式即可,路径可以多个,中间以分号间隔,如:d:\symbols\win2k3_en;个人感觉Windbg的强大功能之一在于Windbg会自动到Microsoft的服务器上下载符号表文件(.dbg或.pdb,有时DLL和EXE也会下载),只要在符合表路径里做如下设置:srv*d:\symbolslocal*/download/symbols,这样如果相关符号表在d:\symbolslocal目录没有找到的话,Windbg会自动在Microsoft的Symbol Servers上下载。如果你是调试自己的应用程序的话,建议你将自己应用程序的*.pdb文件的路径放在前面这样对Windbg来说查找起来比较快。
源文件路径设置:Ctrl+P在弹出的窗口里指定你的源代码文件的路径,路径格式只要符合Windows操作系统的格式即可,可以指定多个,中间以分号间隔。
可以将你的设置进行保存,File-Save Workspace。
开始调试
可以创建一个子进程进行调试,也可以对正在运行的程序进行调试,方法如下:Ctrl+E打开一个应用程序并可指定运行参数进行调试;F6从对话框中选择当前正在运行的进程调试。
对于调试子进程,通常Windbg会在应用程序运行之前中断,此时你可下一些想要的断点:
以Notepad.exe为例,如果你还没有符号表文件的而又设置了MicrosoftSymbol Servers的话,你得先等一下,因为Windbg会自己自动到Microsoft上下载相关的符号表,在命令提示符的位置如果没有出现0:000这个标记表示Windbg正在忙。
表达式格式:
无论在那条指定里都会涉及这个问题:数制,语法。Windbg支持C++和MASM两个表达式格式,@@用于即时改变语法格式,即在MASM下使用@@指令来使用C++的语法解释器,反之亦然。Windbg数制的表示0x表示16进制,0n表示10进制,0t表示8进制,0y表示2进制;Windbg默认数制为16进制,n指认用于设置数制;默认表达式语法是MASM,.expr 指令用于设置表达式语法解释器。本文均使用MASM为默认语法解释器。大小问题,通常如果不特别说明,Windbg对指令不区分大小
断点指令:BP,BM,BA,BL,BC,BD,BE
BP 在指定的地址设置断点
bp notepad!WinMain,在Notepad的WinMain函数处下断点。
断点的位置可以用符号表示,也以直接使用地址及Windbg的Pseudo-Register(虚拟寄存器),如$exentry表示进程的入口点,可以使用bp @$exentry在进程的入口点设置断点,对于Notepad当前入口点也可以直接 bp等效于bp notepad!WinMainCRTStartup.
BM 使用模式匹配设置断点,需要符号表支持
bm值一提,在符号表合法的情况下(符号表中包含私有符号的时候),bm可能通过模式一次下多个断点,bm mydriver!FastIo*指定可以将所有与FastIo*模式相匹配的函数下断点,如FastIoRead,FastIoWrite等。但是bm需要full or export symbols支持,Microsoft的提供的符号表不是都支持的,通常我们自己编译的程序的符号表(Windbg显示为private pdb symbols)默认是支持的。
BA (Break on Access)
顾名思义,对内存访问下断点。对于在多核或多处理器调试的时候很有用,对于调试多线程也很有用,应该说用处很多,比如对一个全局变量设置断点,ba mydriver!gMonitoredDevices,如果如
您可能关注的文档
- web環境办公自动化技术与应用-通识教育核心课程.doc
- web系統安全分析.doc
- WEB網站系统安全解决方案.doc
- WEB英語课件DynEd安装常见问题个人总结篇.doc
- web項目测试实战性能测试结果分析样章.doc
- Web高性能開发之疯狂的HTML压缩.doc
- web黑盒安全測试经验分享.docx
- Web開发40个UI设计工具和资源.doc
- WEST8作品墨西哥巴亞尔塔港海滨景观设计.doc
- WesternBlotting綜述.doc
- 中国人工智能学会-2022中国人工智能系列白皮书-人工智能与药物发现.pdf
- 中国住房金融发展报告2022-NIFD【下(共两册)】.pdf
- 中国人工智能学会-2022中国人工智能系列白皮书-人工智能与药物发现【上(共两册)】.pdf
- 中国金融业CEO冬季刊_影响全球金融业未来格局的七大科技【下(共两册)】.pdf
- 中国金融业CEO冬季刊_影响全球金融业未来格局的七大科技【上(共两册)】.pdf
- 中国住房金融发展报告2022-NIFD【上(共两册)】.pdf
- 中国人工智能学会-2022中国人工智能系列白皮书-人工智能与药物发现【下(共两册)】.pdf
- 中国容器安全市场报告(2022) .pdf
- 2024年《简爱》读后感真题15篇完整版2 .pdf
- 大学生职业生涯规划模板-建筑工程技术完整版124.pptx
文档评论(0)