DUMP文件调试

来源:互联网 发布:麻纱布料淘宝 编辑:程序博客网 时间:2024/05/13 19:44

一、vc6.0

1、首先要生成pdbmap文件,需要做以下设置:

  


     勾选红色的地方

  

 

按上面截图的设置好后编译即可。

 

 

 

二、dmp文件生成

 

1dmp文件的生成,这个需要依赖一些代码来生成这个文件,这里就不贴代码了。

 

程序测试下这个函数。

 

 

 

上面代码让他人为崩溃,运行完后崩溃,会生成dmp文件。

  

 


三、windbg的配置和使用

 

1、先配置symbolFile \ Symbol File Path

 


打开后填入C:\Symbols;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

后面那个带链接的是第一次使用需要下载一些微软的支持库。后边使用就可以去掉了。

 

比如:C:\Symbols;D:\NoMi\worktest\TestDumpForVc\Debug

;;注意上面的C:\Symbols;”,因为我在最上面已经把Symbols下载到C盘的Symbols了,所以可以把后面的http去掉,后边的;D:\NoMi\worktest\TestDumpForVc\Debug路径是pdb文件路径

 

注意路径不用包含pdbexe的名字 比如到D:\\xxx\debug就行

 

 

2、配置源码路径( File \ Source File Path )

 

 

把代码路径贴进去就行了。比如“D:\worktest\TestDumpForVc”


3、设置Exe路径( File \ Image File Path )

 

 

填入执行程序路径,只要到目录层就行,例如“D:\worktest\TestDumpForVc\Release”

 

 

 

4.打开dmp文件

 

可以直接拖dmp进去,也可用下面的方式打开

 

 

 

 

5.打开后检测一些信息,然后输以下命令进行查看

 

打开dmp文件后会看到一些设置信息

 

 

l 输入命令!analyze -v

 

看到以下信息

 

 

 

再来对比下代码里的出问题的地方。

 

 

 

6.高版本的dmp文件设置

就拿2013来说

 

 

选择生成映射文件。

 

 

三、高版本的dmp文件调试。

1、高版本的可以用上面的方法进行windbg调试,也可以自身的编译器进行调试。

自身的编译器调试,dmp文件直接拖进去,然后,选择调试,如下图,他会定位出崩溃位置

 

 

 

 

 

 

四、map文件查看

1map文件里存储的是各个函数的偏移地址。

当程序崩溃时,弹出的框里面会带有函数地址(winserver会弹出,win7好像不会有那种界面弹出),根据这个偏移地址就能找到相应的函数。

 

2、根据dmp文件提示出错的地址。去map里面找也能找着。比如

 

 

 

 

这里提示出错的地址是004014cb

 

 

打开map文件查看

 

 

 

 

根据上面出错的地址004014cb 找到地址范围,在下图中是

004014b0004014e0中间。

 

 

 

从这就可以看出,是TestCrash到CreateDumpFile中间出错了。

 

 

再看下图的函数,找到问题所在。

 

原创粉丝点击