- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
WinDBG调试技巧WinDBG调试技巧WinDBG调试技巧什么是WinDBGDebuggingToolsforWindows简称为WinDBG根据CPU指令架构的不同分为:x86版 下载6.8.4.0AMD64版 下载6.8.4.0IA64版 下载6.8.4.0WinDBG调试技巧WinDBG可以调试什么?调试应用程序调试驱动分析dumpWinDBG调试技巧WinDBGVSVC自带调试器WinDBG利用自带的符号检查下载工具,可以获包含VC自带的符号文件外,系统大部分DLL或EXE的符号文件,调试粒度更小。而VC除了自带的符号文件,和自身产生的符号文件外,只能使用DLL导出的函数作为符号。WinDBG可以调试驱动;VC不能,只能作为普通的应用程序调试器WinDBG和VC都支持远程调试WinDBG调试技巧WinDBG和VC调试器的关系相同的核心dbghelp.dll+dbgeng.dll不同的IDE只是VC没有把核心所有的功能都开放出来WinDBG调试技巧WinDBG加载符号File-Symbol;或者Ctrl+S;或者命令行WinDBG调试技巧两种符号格式srv*\\jiangfengbing\symbols$*表示从\\jiangfengbing\symbols$这个可写共享去加载pdb,如果pdb不存在则从这个地方下载,加到\\jiangfengbing\symbols$,同时加载进调试器;表示;后面还有一个符号信息D:\work\code\kis\trunk\product\win32d表示要加载D:\work\code\kis\trunk\product\win32d目录里面的pdb文件WinDBG调试技巧让VC获得同样的符号加载功能把WinDBG安装目录下的symsrv.dll拷贝到VC的IDE目录,类似于D:\DevTools\MicrosoftVisualStudio8\Common7\IDE\,VC2005默认是有这个文件的,但版本已老启动VC,打开Tools-Options中设置(每个版本的VC设置有所不同)WinDBG调试技巧WinDBG调试技巧用WinDBG保存dump发现程序运行异常,又不能立刻确定原因,又怕调试后找不到原因,且现象不能重现。这个时候需要保存现场。打开WinDBG,按F6attach到目标进程,然后.dump/maC:\dump\xxx.dmp不要直接退出WinDBG,先detach在退出WinDBG,否则目标进程会被关闭对测试来说,这个功能很有效。dump不是崩溃的时候才能产生,而是随时可以产生,只要你会用WinDBGWinDBG调试技巧使用WinDBG分析dumpKIS2008在编译的时候都保存了pdb文件,而且加入了异常模块生产dump,所以分析dump变成了程序员的基本要求没有技巧,只有流程加载崩溃程序的pdb(要版本相符),加载系统模块的pdb,符号越全越好;符号不全,可能导致你看到的stack是错误的如何看加载了哪些symbol,使用命令lm,WinDBG会把该进程的module都显示出来,如果有symbol,后面会显示symbols字样WinDBG调试技巧对于应用崩溃(包括应用程序和驱动)产生的dump,在加载完符号后,可以让WinDBG自动分析分析,执行命令!analyze-v即可。对于手工尝试的dump,一般currentthread不是出问题的thread,所以要看所有的线程,执行命令~*kb,显示所以的线程的callstack。大部分问题,只要看一眼就出来了。设置好源代码的路径,甚至可以找到出问题的一行。其他所要使用到的技巧后面再详细阐述。WinDBG调试技巧注意用户通过键盘触发的minidump是没有分析意义的。调试,分析就是找联系;符号,代码,等都是联系的桥梁,如果没pdb,怎么办?那image(目标dll或者exe)就是你的主要桥梁了,IDA将是你手中的另一个利器。WinDBG调试技巧主动调试应用程序打开WinDbg,Ctrl+E,打开想要调试的EXE打开WinDBG,F6,attach到要调试的进程*设置symbol加载路径,设置源代码目录,使用WinDBG就和VC一样,包括快捷键*优点:如果你在测试的机器上调试问题,装VC根本不现实,而安装WinDBG则很容易,体积小,你只要把你开发机器上的符号,源代码共享,就可以利用这个体积轻量级的工具实现功能非轻量级的调试了。WinDBG调试技巧被动调试一般用来调试服务。因为我们没法由我们的调试器去加载服务进程。服务进程只能由
文档评论(0)