《Advanced Windows Debugging》学习笔记

看完了很久,也一直没有完成这篇博客,在项目使用中,大多数还是用到其中的一些命令去解析,目前没有太多机会,可以让自己用基本命令去锻炼一下“遍历堆链表”等高级调试技巧。看完这本书给我最大的感觉是:
当你觉得你有些比较难解决的调试或检测问题的时候,不妨查一查是不是有相应的工具。开发过程中需要的各种分析、检测、调试工具,这本书上都有或多或少的讲解。
  1. WinDbg 堆栈解析能力天生比vs强很多。每当程序宕掉,发现Visual studio 的【Call Stack】窗口全是汇编地址的时候,我会果断【打开 WinDbg 】-》【非入侵式Attch】,然后 WinDbg 的【Call Stack】窗口中就会显示正常的函数符号。这实际是 WinDbg 对被破坏的调用站栈,进行深度解析的结果,从而能够恢复出调用堆栈。
  2. 除了Wbg之外,最常用的还是GFlagAppVerifLeakDiag这几个工具,具体的用法我觉得其他的文档讲的已经非常好了。
  3. 另外Dump的解析当中,!analyze -v是个非常好用的命令,把一般Dump的解析过程封装成一个命令,只需敲一个命令,你就能得到最关键的信息,如调用堆栈。
另外作为福利,放上一个的Dump自动解析工具:


前提条件:
  1. 安装WinDbg,将WinDbg所在目录设置为环境变量目录。

使用说明:
  1. 将dump对应的所有pdb放入pdb_src目录下。

  2. 拖拽pdb_src目录至pdbstore.bat(实际上相当于把pdb_src路径作为参数,传递给pdbstore.bat),产生pdb tree(WinDbg天生支持的一个exe不同版本的pdb生成一个pdb tree,根据dump智能找到对应的pdb)

  3. 将所有的dump压缩包放入DumpZip文件夹(没有就新建此文件夹)中,然后拖动DumpZip文件夹,将其放入0_BatchDumpProcessor.bat 的批处理中(相当于使用命令:0_BatchDumpProcessor.bat DumpZip全路径)。

  4. 如果不是dump压缩包,即最终的dump文件,将所有的dump放入Dump文件夹(没有就新建此文件夹)中,然后拖动Dump文件夹,将其放入0_BatchDumpAnalyze.bat 的批处理中。

文件说明:
  1. 0_BatchDumpProcessor.bat 

    完整Dump分析批处理,先解压目录下所有dump的压缩包,然后逐一解析dump,并将解析结果汇总到一个execl表中。execl表中会显示某种dump宕了多少次,以及相应的堆栈调用。

  2. 0_BatchDumpUnzip.bat

    解压指定目录下所有dump压缩包。

  3. 0_BatchDumpAnalyze.bat

    解析一个目录下所有dump文件,将所有解析结果的text文件,放到另外一个目录。

  4. dumpanalyze.bat

    解析一个dump文件,输出一个解析结果文件。

  5. 0_BatchDumpAnalyzeExtractor.bat

    解析一个目录下所有text文件,将其中调用堆栈抽离出来,汇总到一个execl表中,方便浏览查看。

  6. DumpFileExtractor.exe

    dumpanalyze.bat调用的实际程序。

  7. unzip.exe

    0_BatchDumpUnzip.bat调用的实际程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值