windows的dmp文件使用

本文详细介绍了如何利用Debugging Tools for Windows 和 Windbg 工具快速定位引起 Windows 蓝屏的文件,并提供了获取内核调试所需的符号文件的方法。通过配置系统环境变量,可以直接从 Microsoft 符号服务器下载所需的符号文件,从而更深入地了解内核数据结构并解决系统崩溃问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows出现蓝屏后都会产生dmp文件,它记录windows蓝屏时的内存信息。
1、快速定位引起崩溃的文件
dmp文件的查看用Debugging Tools for Windows (x86)及windbg工具,从下面地址下载
http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx
下载安装后,启动 Debugging Tools,在程序主菜单中选择“File(文件)”-“Open Crash Dump(打开崩溃转储文件)”,选择路径,打开.DMP文件即可。
  打开之后,在命令窗口中会显示一大堆的信息,找到“Probably caused by:****.sys”这一行,文件***.sys就是引起系统崩溃的系统文件,当然什么原因引起的,要经过比较复杂的查找。
2、配置及符号文件
符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息。符号文件包含了函数和变量的名称,由链接器产生,在调试过程中被用来引用和显示这些名称。为了使用任何一个内核调试工具来查看内核数据结构,必须首先至少获得内核映像Ntoskrnl.exe的正确的符号文件,即二者版本完全匹配。
符号文件那里获得?当然Microsoft符号服务器是http://msdl.microsoft.com/download/symbols啦
怎么下载? 1)通过livekd.exe(http://live.sysinternals.com/livekd.exe)工具下载符号文件到本地.
运行 livekd.exe前需配置一个系统环境变量,
变量名:_NT_SYMBOL_PATH
变量值:srv*C:/WINDOWS/Symbols*http://msdl.microsoft.com/download/symbols(表示从符号服务器上下载文件到C:/WINDOWS/Symbols,这路径可以随意)
双击运行livekd.exe 就会自动开始下载符号文件。
2)立即下载一个符号文件,在windbg的命令行中,输入ld user32, 就会马上下载user32的符号文件
当然要先设置windbg的符号文件的路径,为srv*C:/WINDOWS/Symbols*http://msdl.microsoft.com/download/symbols
来自东子的博客
<think>好的,用户想了解如何生成和分析dmp文件,特别是使用minidump的方法。首先,我需要回忆一下相关的知识,然后结合提供的引用内容来组织答案。 生成dmp文件的方法主要有两种:使用Dr.Watson工具和编程调用MiniDumpWriteDump函数。根据引用[1]和[3],Dr.Watson是Windows自带的工具,设置后程序崩溃时会自动生成dump文件。而编程方法则是在代码中主动调用函数生成dump,这在程序异常且不在调试模式时触发。 分析dmp文件需要Visual Studio,准备好exe、pdb和dmp文件,然后通过VS的“打开解决方案”加载dmp,设置符号路径和源代码路径。引用[2]提到需要这些文件,并详细说明了调试流程。 用户可能需要具体的步骤,所以需要分点说明生成和分析的方法。同时,注意引用标识的正确添加,比如生成方法中的Dr.Watson和编程方法分别对应引用[1]和[3],分析部分对应引用[2]。 还要考虑用户可能的后续问题,比如如何配置符号路径,或者如何处理没有pdb的情况,因此相关问题部分可以包括这些内容。确保回答结构清晰,步骤详细,帮助用户逐步解决问题。最后,检查LaTeX格式是否正确,虽然这个问题可能不涉及数学公式,但如果有变量或代码,需要正确使用格式。</think>### 如何生成和分析DMP文件? #### 一、生成DMP文件的方法 1. **使用Dr.Watson工具Windows自带)** - 启用Dr.Watson:在命令行输入`drwtsn32 -i`完成注册[^1]。 - 配置生成路径:通过`drwtsn32`命令打开界面,设置日志文件和dump文件的存储目录。 - 触发生成:程序崩溃后,系统会自动在指定目录生成`*.dmp`文件[^1]。 2. **编程调用MiniDumpWriteDump函数** - 在代码中封装异常处理逻辑,调用`MiniDumpWriteDump`函数生成dump文件。 - 需确保程序在非调试模式下触发异常,调试模式下不会生成dump[^3]。 ```cpp // 示例代码片段(需结合异常处理) #include <dbghelp.h> void GenerateDump(EXCEPTION_POINTERS* pException) { MINIDUMP_EXCEPTION_INFORMATION info; info.ThreadId = GetCurrentThreadId(); info.ExceptionPointers = pException; info.ClientPointers = FALSE; MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), CreateFile("crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL), MiniDumpNormal, &info, NULL, NULL); } ``` --- #### 二、分析DMP文件的步骤 1. **准备调试环境** - 确保拥有以下文件:崩溃的`*.exe`、对应的`*.pdb`(符号文件)、`*.dmp`文件[^2]。 - 使用Visual Studio(推荐2022版本)打开dmp文件,选择“使用仅限本机进行调试”。 2. **配置调试信息路径** - 在VS中设置符号路径:`工具 > 选项 > 调试 > 符号`,添加包含PDB文件的目录。 - 指定源代码路径(若需查看源码)[^2]。 3. **分析崩溃堆栈** - VS会自动加载dump文件并显示异常类型(如访问违规)。 - 查看“调用堆栈”窗口,定位到触发异常的代码行。 - 结合局部变量和内存状态分析具体原因(例如空指针、内存越界)。 --- #### 三、注意事项 1. **符号文件匹配** PDB文件必须与崩溃时的exe版本严格一致,否则无法解析堆栈。 2. **调试模式优先级** 若程序在调试模式下运行,不会生成dump文件,建议在发布版本中测试崩溃场景。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值