windbg调试技巧

windbg调试技巧

ID:22025640

大小:637.00 KB

页数:36页

时间:2018-10-21

windbg调试技巧_第1页
windbg调试技巧_第2页
windbg调试技巧_第3页
windbg调试技巧_第4页
windbg调试技巧_第5页
资源描述:

《windbg调试技巧》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WinDBG调试技巧LeoJiang什么是WinDBGDebuggingToolsforWindows简称为WinDBG根据CPU指令架构的不同分为:x86版下载6.8.4.0AMD64版下载6.8.4.0IA64版下载6.8.4.0WinDBG可以调试什么?调试应用程序调试驱动分析dumpWinDBGVSVC自带调试器WinDBG利用自带的符号检查下载工具,可以获包含VC自带的符号文件外,系统大部分DLL或EXE的符号文件,调试粒度更小。而VC除了自带的符号文件,和自身产生的符号文件外,只能使用DLL导出的函数作为符号。WinDBG可

2、以调试驱动;VC不能,只能作为普通的应用程序调试器WinDBG和VC都支持远程调试WinDBG和VC调试器的关系相同的核心dbghelp.dll+dbgeng.dll不同的IDE只是VC没有把核心所有的功能都开放出来WinDBG加载符号File->SymbolFilePath;或者Ctrl+S;或者命令行两种符号格式srv*\jiangfengbingsymbols$*http://msdl.microsoft.com/download/symbols表示从\jiangfengbingsymbols$这个可写共享去加载pdb,如果pdb不存在则从http://msdl.micr

3、osoft.com/download/symbols/这个地方下载,加到\jiangfengbingsymbols$,同时加载进调试器;表示;后面还有一个符号信息D:workcodekistrunkproductwin32d表示要加载D:workcodekistrunkproductwin32d目录里面的pdb文件让VC获得同样的符号加载功能把WinDBG安装目录下的symsrv.dll拷贝到VC的IDE目录,类似于D:DevToolsMicrosoftVisualStudio8Common7IDE,VC2005默认是有这个文件的,但版本已老启动V

4、C,打开Tools->Options中设置(每个版本的VC设置有所不同)用WinDBG保存dump发现程序运行异常,又不能立刻确定原因,又怕调试后找不到原因,且现象不能重现。这个时候需要保存现场。打开WinDBG,按F6attach到目标进程,然后.dump/maC:dumpxxx.dmp不要直接退出WinDBG,先detach在退出WinDBG,否则目标进程会被关闭对测试来说,这个功能很有效。dump不是崩溃的时候才能产生,而是随时可以产生,只要你会用WinDBG使用WinDBG分析dumpKIS2008在编译的时候都保存了pdb文件,而且加入了异常模块生产dump,所以分析du

5、mp变成了程序员的基本要求没有技巧,只有流程加载崩溃程序的pdb(要版本相符),加载系统模块的pdb,符号越全越好;符号不全,可能导致你看到的stack是错误的如何看加载了哪些symbol,使用命令lm,WinDBG会把该进程的module都显示出来,如果有symbol,后面会显示symbols字样对于应用崩溃(包括应用程序和驱动)产生的dump,在加载完符号后,可以让WinDBG自动分析分析,执行命令!analyze-v即可。对于手工尝试的dump,一般currentthread不是出问题的thread,所以要看所有的线程,执行命令~*kb,显示所以的线程的callstack。大部分

6、问题,只要看一眼就出来了。设置好源代码的路径,甚至可以找到出问题的一行。其他所要使用到的技巧后面再详细阐述。注意用户通过键盘触发的minidump是没有分析意义的。调试,分析就是找联系;符号,代码,等都是联系的桥梁,如果没pdb,怎么办?那image(目标dll或者exe)就是你的主要桥梁了,IDA将是你手中的另一个利器。主动调试应用程序打开WinDbg,Ctrl+E,打开想要调试的EXE打开WinDBG,F6,attach到要调试的进程*设置symbol加载路径,设置源代码目录,使用WinDBG就和VC一样,包括快捷键*优点:如果你在测试的机器上调试问题,装VC根本不现实,而安装Wi

7、nDBG则很容易,体积小,你只要把你开发机器上的符号,源代码共享,就可以利用这个体积轻量级的工具实现功能非轻量级的调试了。被动调试一般用来调试服务。因为我们没法由我们的调试器去加载服务进程。服务进程只能由service.exe去创建。因此我们希望目标一启动,我们的调试器就attach上去了。WinDBG自动的工具GlobalFlags可以帮我们的忙当然也可以使用VC的即时调试器大部分服务是不和桌面交互的,所以在WinXP下面,你还需要把服务设为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。