WinDbg分析DMP文件方法完全攻略

简介: 前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger工具进行远程调试(关于vs2010远程调试的方法,请参考http://blog.
前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交 给测试人员进行测试。在开发人员测试出现的bug,我们可以直接在本地进行调试。如果测试人员测试出崩溃级别的bug,如果我们需要调试往往借助于vs提供的Remote Debugger 工具进行远程调试(关于vs2010远程调试的方法,请参考http://blog.sina.com.cn/s/blog_a459dcf5010153o7.html),然是当程序在用户手中出现崩溃此时我们可以采用Remote Debugger进行调试,但是如果此时开发人员无法直接去 用户现场调试,此时就需要用户生成DMP文件,以便开发人员使用DMP文件进行分析。
 
    本文主要介绍C++开发过程中出现程序崩溃后,如何进行分析定位bug(基于xp系统)。
 
一、DMP文件获取设置
  (1)在运行窗口中输入 drwtsn32 -i ,并且点击确定
WinDbg分析DMP文件方法完全攻略
 
  (2)在(1)确定后弹出如下对话框
WinDbg分析DMP文件方法完全攻略

  (3)在(2)弹出的确定框后点击确定按钮完成,将Dr.Watson设置为默认应用程序调试程序。
     Dr.Watson系统自带的程序。
 
  (4)再次在运行窗口中输入:drwtsn32,如下图:
WinDbg分析DMP文件方法完全攻略
  
  (5)点击确定按钮,在弹出的对话框中按照下列方式设置
  WinDbg分析DMP文件方法完全攻略

  (6) 点击确定按钮完成DMP文件设置。
 
 
二、关闭Dr.Watson方法
(1)打开注册表
(2)在注册表中进入主键[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug],然后将“AUTO”键值设置为0 如下图:
WinDbg分析DMP文件方法完全攻略

 
三、Windbg下载地址
 
 
四、DMP文件获取
(1) 用vs2010创建一个基于win32的程序,其源码如下:
WinDbg分析DMP文件方法完全攻略

 
(2)我们知道在学习C++中整数不能跟0进行除运算,否则会引起程序崩溃。而(1)中就是编写能触发0的异常,导致程序结束运行的程序。 编译(1)中的程序,结果如下:
WinDbg分析DMP文件方法完全攻略

 
(3)运行(2)中test.exe程序 ,程序崩溃。如下图:
WinDbg分析DMP文件方法完全攻略

 
(4) 按照一、DMP文件获取设置步骤实现Dr.Watson设置为默认应用程序调试程序
 
(5)再次运行运行(2)中test.exe程序 如下图:
  WinDbg分析DMP文件方法完全攻略

点击确定完成dmp文件的生成。
 
 
(6)打开在(4)中设置dmp文件路径。(本例中默认地址为:C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson) 如下图:
  WinDbg分析DMP文件方法完全攻略

其中user.dmp就是我们需要的dmp文件。
 
五、分析《四、DMP文件获取》中获取的DMP文件
(1)符号表路径设置(参考下图)
  WinDbg分析DMP文件方法完全攻略

 
(2)在弹出对话框中输入:
D:\testdmp;srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols  点击ok按钮
  WinDbg分析DMP文件方法完全攻略

注意:D:\testdmp; 这个是我们存放符号的文件夹,在进行此步骤前创建。
其中;srv*d:/symbolslocal*http://msdl.microsoft.com/download/symbols设置的目的是下载该程序用到的操作系统相关的库函数的符号表到本地
 
(3) 将前面《四、DMP文件获取》中程序生成的符号test.pdb(下图)拷贝到D:\testdmp中
  WinDbg分析DMP文件方法完全攻略

拷贝后结果如下
  WinDbg分析DMP文件方法完全攻略

 
(4) 源代码路径设置(参考下图)
  WinDbg分析DMP文件方法完全攻略
 
(5)在弹出对话框中输入:D:\Personal\My Documents\Visual Studio 2010\Projects\test 点击ok按钮
 
  WinDbg分析DMP文件方法完全攻略

(6)DMP文件导入(参考下图)
 
WinDbg分析DMP文件方法完全攻略

WinDbg分析DMP文件方法完全攻略

 
点击打开,完成dmp导入。导入后自动定位错误的行,并在command中给出崩溃的原因,如下如:
WinDbg分析DMP文件方法完全攻略
目录
相关文章
|
存储 JSON 大数据
大数据离线数仓---金融审批数仓
大数据离线数仓---金融审批数仓
947 1
|
安全 Android开发
Android 预置可卸载分区接收不到任何广播问题分析和解决
Android 预置可卸载分区接收不到任何广播问题分析和解决
551 0
|
人工智能 人机交互 语音技术
让大模型能听会说,国内机构开源全球首个端到端语音对话模型Mini-Omni
【10月更文挑战第2天】国内研究机构提出的Mini-Omni是一个端到端的音频对话模型,实现了实时语音交互,标志着全球首个开源的端到端语音对话模型。通过文本引导的语音生成方法和批处理并行策略,Mini-Omni在保持语言能力的同时,实现了流畅的语音输出。研究团队还引入了VoiceAssistant-400K数据集进行微调,提升了模型性能。尽管如此,Mini_Omni在语音质量、计算资源需求及伦理监管方面仍面临挑战。论文详见:[链接]。
642 3
|
9月前
|
自然语言处理 PHP SEO
WordPress文章自动标签插件
文章自动标签插件可为文章智能生成标签并添加标签链接。支持PHP、SCWS及结巴分词,可设置字段、最少字数与语言限制,还支持SEO优化和自定义标签类型。注意事项包括仅无标签时生成,且结巴分词需更多内存。更新内容含新增分词方式与绑定功能,截图展示设置界面与效果。
277 0
|
SQL 监控 安全
浅析Waf优缺点:硬件Waf、软件Waf、云Waf之总结
WAF(Web应用防火墙)是专为Web应用设计的安全防护产品,主要形态有硬件WAF、软件WAF和云WAF。硬件WAF易于部署,可承受高吞吐量,但价格昂贵;软件WAF廉价易用,功能丰富,但可能误杀和占用内存;云WAF部署简单,维护成本低,但存在被绕过和数据泄露的风险。RASP(运行时应用自我保护)是一种新兴技术,通过注入应用程序提供实时保护,误报率低,维护成本低,但部署复杂且可能影响性能。未来,WAF防护技术将结合机器学习、词法分析、行为识别和大数据关联分析,实现更精准的攻击识别和防护。
2298 2
多进程同步之文件锁
【10月更文挑战第16天】文件锁是一种常用的多进程同步机制,它可以用于确保多个进程在访问共享资源时的互斥性。在使用文件锁时,需要注意锁的粒度、释放、竞争和性能等问题。通过合理使用文件锁,可以提高多进程程序的正确性和性能
|
机器学习/深度学习 并行计算 计算机视觉
Jurgen、曼宁等大佬新作:MoE重塑6年前的Universal Transformer,高效升级
本文介绍了一种新型Transformer架构,旨在解决Universal Transformer (UT) 在参数-计算效率上的问题。MoEUT结合了Mixture-of-Experts (MoE) 方法和UT的优点,通过MoE Feedforward Blocks、MoE Self-Attention Layers、Layer Grouping及Peri-LayerNorm等技术创新,实现了更高效的计算和内存使用。实验结果显示,MoEUT在多个语言建模和代码生成任务上显著优于标准Transformer,且计算资源需求更低。
338 5
|
存储
Pinia 是如何实现状态共享的?
Pinia 是如何实现状态共享的?
374 4
|
Java 关系型数据库 MySQL
Spring Boot中集成MySQL数据库的步骤和技巧
Spring Boot中集成MySQL数据库的步骤和技巧
1277 0
|
监控 定位技术 Android开发
如何获得你的准确位置及iphon手机应用定位不准确原因分析
如何获得你的准确位置及iphon手机应用定位不准确原因分析
824 0