引自  南海之星

用vs2008分析dump文件

  1. 双击minidump文件(*.dmp)。默认会启动vs2008。
  2. 菜单Tools/Options, Debugging/Symbols,增加PDB文件路径。注:如果minidump文件与pdb文件在同一目录,就不用设置这个了。
  3. 若调试的程序需要微软基础库的PDB信息,可以增加一个路径为:
  4. http://msdl.microsoft.com/download/symbols
  5. 在界面下方Cache Symbol From symbol…选择本地存储这些Symbols的路径。 注:如果本地已存储过微软基础库的pdb,就直接按照此步操作设置本地路径,不必执行上一步操作了。

设置代码路径:

刚打开的dmp工程,进入解决方案的属性。在这里输入源程序的代码路径。注:一定是sln所在的路径,而不是vcproj的路径!

按F5,debug吧。

//

PS:或者可以这样加载符号路径,如果没有加载本应用程序的符号表,可以在加载模块里面修改符号表的路径.(也是弹出菜单Tools/Options, Debugging/Symbols)

*************************************************

引自

似水流年


附:常见问题讨论

1、  Dump文件放在哪里

Dump文件不用非要放在你编译出来的位置,你完全可以建立一个新的文件夹来放它。但若不是存放在编译出来的位置,需要将编译生成的PDB文件拷贝到Dump文件目录,或是利用VS2005(2008)打开Dump文件后,设置PDB文件路径。

2、  如何恢复当时的现场?

可能你要问,怎么可能,这个dump文件可是用户发给我的,我不可能去用户家里调试吧?这个恢复现场可不是指的非要到那台机器上去,而是要把产生dump文件对应的二进制文件拿到。

但是恢复现场需要所有的二进制文件都要对应,你一定要有导致用户崩溃的那些Exe和DLL。既然是你发布的程序,Exe文件当然你会有。所以这里只考虑DLL就行了。

Dump文件中记录了所有DLL文件的版本号和时间戳,所以你一定可以同过某种途径拿到它。如果你能从用户那里拿到最好,如果不方便,用户不可能用的是我们平常不常用的操作系统,所以找个有对应系统的机器一般都会有。但是记住不仅是文件名称要一致,还要核对版本和时间戳,如果不同一样没有办法用。

如果客户用了某个特殊的补丁怎么办?

其实这个问题也很好解决,只要它不阻碍阅读堆栈,就不用管它,调试Dump和运行程序不一样,缺少一两个DLL没有任何问题。

3、  如果真的需要怎么办?

符号文件现在主要是指PDB文件。

如果没有符号文件,那么调试的时候可能导致堆栈错误。

如果你丢失了这个发布版本中你编译出来的那些exe和DLL的PDB,那么这个损失是严重的,重新编译出来的版本是不能使用的。

我自己的DLL都有了,可是缺的是系统的DLL的对应PDB文件怎么办?上图已经介绍了方法。微软在它的符号数据库上为我们提供了所有的PDB文件,还有部分非关键DLL。设置好后程序将自动下载需要的PDB及DLL文件。

4、  拿到需要的文件了,这些文件应该放在哪里?

符号数据库中的文件不用动,把其它的exe和DLL、PDB文件放在dump文件目录里就行了。

5、  我用的是VS2005(2008),明明有源代码,为什么显示不了?

这个是dump调试的最头痛问题,代码可能已经改过了,即使你从SVN拿到当时的版本,时间戳也是错的,VS2005(2008)就是不让你显示代码。

其实只要在VS2005(2008)工具选项调试常规 中去掉 “要求源文件与原始版本完全匹配”(Require source files to exactly match the original version) 的复选就行了。

vs2008 dump文件调试相关推荐

  1. centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

    写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用. 当然,在真实的产线环境中需要分析的数据和难度远远高于demo所示,所以demo的作用也仅仅只能起到介绍工具的作用. ...

  2. dump文件调试技巧(产生Dump文件)

    主函数: #include "stdafx.h" #include "DumpFile.h" int _tmain(int argc, _TCHAR* argv ...

  3. .NET -- 使用Dump文件分析异常

    目录 1. Dump文件 2. 程序崩溃时自动生成Dump文件 2.1 注册表生成 2.2 代码生成 3. 手动生成Dump文件 3.1 任务管理器生成 3.2 VS生成 4. Dump文件调试分析 ...

  4. vs2008调试c语言,VS2008调试Release程序-Dump文件方式_C/C++技术分享_看流星社区 www.kanliuxing.com...

    在Windows平台下用C++开发应用程序,最不想见到的情况恐怕就是程序崩溃,而要想解决引起问题的bug,最困难的应该就是调试release版本了.因为release版本来就少了很多调试信息,更何况一 ...

  5. VS2015调试dump文件时提示未找到xxx.exe或xxx.dll

    前言 游戏开发的过程中,经常会出现客户端宕机的问题,这时候一个小小的dump文件可以记录当时的内存及堆栈情况,对于解决崩溃的问题有巨大的帮助,之前用VS2008的时候调试过dump文件,但是最近客户端 ...

  6. VC++ 利用PDB和dump文件定位问题并进行调试

    转载:https://blog.csdn.net/zfs_kuai/article/details/43646665 转载:https://blog.csdn.net/i_chaoren/articl ...

  7. c++ dump某个变量_linux内核调试之 crash分析dump文件

    Linux 下也有众多的内存转储分析工具,lcrash.Alicia.Crash.Crash 是由 Dave Anderson 开发和维护的一个内存转储分析工具,目前它的最新版本是 5.0.0. 在没 ...

  8. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  9. 深度解析windows调试技术之一 [抓取user mode dump文件的几重境界]

    抓取user mode dump文件的几重境界 导读 记得去年对一些朋友说过要写一些调试技术相关的文章,但是后来出于种种原因吧,还是没写成.最近终于有些时间,希望可以把这些文章补上.对于软件开发而言, ...

最新文章

  1. 过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件
  2. spring boot2.x使用rabbitmq
  3. 002_FastDFS单机部署
  4. 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处
  5. boost :: swap交换整数数组的测试程序
  6. 学习面试题Day08
  7. 团队项目第一篇——NABCD
  8. kettle 内存设置_【转】kettle 的内存设置及输出日志的时间类型
  9. AC日记——小木棍【数据加强版】 洛谷 P1120
  10. 二分图匹配的判断+p1322+二分图最大匹配+tyvj1035
  11. java集群调度_集群环境下定时调度的解决方案之Quartz集群
  12. awk , 统计secure.log中 每个破解你密码的ip的出现次数|access.log 中 每个ip地址出现的次数...
  13. roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
  14. 家里WiFi突然连不上网了?
  15. RabbitMQ第二话 -- Springboot基于四种Exchange(Direct、Fanout、Topic、Heders、延时队列)的实现和多虚拟主机下的生产消费者实现
  16. ASR自动语音识别技术
  17. 免费实时汇率查询Api接口
  18. 我的学习笔记003--!!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN http://www.w3.org/mxx
  19. excel怎么设置打印区域_Excel如何设置打印区域及打印区域如何调整
  20. 目前医疗大数据面临四大挑战

热门文章

  1. 人类的第一语言是什么
  2. Python 微信自动化工具开发系列04_所有微信群的群文件自动同步拷贝到群名对应的新文件夹中(2023年1月可用)
  3. 【读书笔记《Android游戏编程之从零开始》】20.游戏开发基础(游戏数据存储)...
  4. linux系统启动过程详解-开机加电后发生了什么 --linux内核剖析(零)
  5. 计算最大曝光时间保证图像不拖影
  6. Linux系统里如何彻底的清空终端屏幕?
  7. java 数组 合并_Java合并数组的实现方式
  8. WAS的SystemOut.log中报错“ADMS0015E”
  9. Java50个基础代码
  10. Windows App开发之使用通知与动态磁贴