《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调用的实际程序。
相关文章
|
Arthas 缓存 Java
在 Windows 下的 Arthas 快速安装 | 学习笔记
快速学习在 Windows 下的 Arthas 快速安装
2065 0
在 Windows 下的 Arthas 快速安装 | 学习笔记
|
3月前
|
网络协议 Shell vr&ar
某教程学习笔记(一):1、windows基础
某教程学习笔记(一):1、windows基础
19 0
|
数据安全/隐私保护 Windows
第二轮学习笔记:二、Windows基础
第二轮学习笔记:二、Windows基础
61 0
第二轮学习笔记:二、Windows基础
|
网络协议 安全 Oracle
某教程学习笔记(一):1、windows基础
某教程学习笔记(一):1、windows基础
100 0
某教程学习笔记(一):1、windows基础
|
编解码 网络协议 Windows
|
编解码 网络协议 C语言
|
NoSQL Shell Linux
Windows 启动和部署 | 学习笔记
快速学习 Windows 启动和部署
94 0
Windows 启动和部署 | 学习笔记
|
NoSQL 大数据 Linux
环境篇之 redis 的 linux 和 Windows 测试|学习笔记
快速学习环境篇之 redis 的 linux 和 Windows 测试
97 0
环境篇之 redis 的 linux 和 Windows 测试|学习笔记
|
Java Scala 开发者
Windows 搭建S cala 开发环境|学习笔记
快速学习 Windows 搭建 Scala 开发环境。
150 0
Windows 搭建S cala 开发环境|学习笔记
|
Linux Go C++
Windows 下 VS code 的安装和使用(1)|学习笔记
快速学习 Windows 下 VS code 的安装和使用(1)
152 0
Windows 下 VS code 的安装和使用(1)|学习笔记

热门文章

最新文章