windows程序中生成崩溃转储文件(.dmp)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

提供给用户使用的程序如果崩溃,如果能生成相应的转储文件,那么很容易定位出错原因

对于自己编写的win32程序,可以如下编写

__try

{

逻辑代码

...

}

__exception(ExceptionHandler(GetExceptionInformation()))

{

//log info

//::ExitProcess();

}

ExceptionHandler里面进行转储文件生成

unsigned long ExceptionHandler(LPEXCEPTION_POINTERS pExceptionPointers)

{

char szFile[MAX_PATH];

sprintf(szFile, "mydmp%d.dmp", exe_version); // 记录程序版本

HANDLE hDmpFile = ::CreateFile(szFile, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0)

MINIDUMP_EXEPTION_INFORMATION stInfo = {0};

stInfo.ThreadId = GetCurrentThreadId();

stInfo.ExceptionPointers = pExceptionPointers;

stInfo.ClientPointers = TRUE;

BOOL bOk = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &stInfo, NULL, NULL);

if(!bOK)

   //logInfo


对于MFC程序,可以在程序初始化的时候,比如App::Instance()函数中,设置未处理异常处理函数:

LPTOP_LEVEL_EXCEPTION_FILTER __hTopLevelExceptionFilter; // 全局变量

__hTopLevelExceptionFilter = ::SetUnhandledExcewptionFilter(TopLevelExceptionHandler);

TopLevelExceptionHandler与ExceptionHandler处理方式类似


如果客户程序崩溃了,将收到的*.dmp文件与程序以及相应的符号文件放到一个目录中,直接用vs打开即可跟踪到出问题的位置




别再让崩溃日志成谜!手把手教你用Visual Studio 2022分析DMP文件,精准定位Windows程序闪退 本文详细介绍了如何使用Visual Studio 2022分析Windows程序崩溃生成DMP文件,帮助开发者精准定位程序闪退问题。从准备工作到高级调试技巧,再到典型崩溃场景的解决方案,手把手教你构建完善的崩溃分析体系,提升排错效率。 阅读详情

相关推荐

发布版程序崩溃了怎么办?保姆级教程:为你的Qt/Win32程序集成自动生成DMP文件功能

本文详细介绍了如何为Qt/Win32程序集成自动生成DMP文件功能,解决发布版程序崩溃问题。通过解析Windows异常处理机制、Qt项目配置要点及完整的DMP生成实现,帮助开发者构建企业级崩溃诊断体系,有效捕获和分析程序异常崩溃信息。

weixin_42525005的博客 227

windows 应用程序崩溃时的内存转储及dump文件的分析

windows 应用程序崩溃时的内存转储及dump文件的分析

C++程序崩溃分析实战:利用dmp文件精准定位内存访问违规与堆损坏问题

在软件开发和运维中,程序崩溃是常见且棘手的问题,尤其是对于C++这类贴近系统底层的语言,内存访问越界、空指针解引用等错误往往难以复现和定位。其核心原理在于,当程序异常终止时,操作系统可以生成内存转储文件dmp文件),它本质上是进程崩溃瞬间内存空间的一个完整快照,记录了线程堆栈、寄存器状态和内存数据。这项技术的核心价值在于,它不依赖于预设的日志,而是直接提供崩溃现场的“法医证据”,使得开发者能从被动的猜测转变为主动的精准分析。在应用场景上,无论是线上服务器偶发的堆损坏,还是多线程环境下的复杂死锁,dmp文件

weixin_30899023的博客 284

Windows平台崩溃转储系统crashrpt的使用

windows平台崩溃转储系统CashRpt介绍

nwhasd的博客 9981

重新安装SecureCRT报错

找到路径计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\。请提交个bug报告给VanDyke Software, Inc.的技术支持,SecureCRT遇到一个致命的错误且必须关闭。(此信息的内容可以通过CTRL+C复制。你将收到如何发送崩溃转储文件的说明。win+r快捷键:输入regedit。在这里面将VanDyke删除。并且已包含在bug报告中。

qq_46537100的博客 1410

securecrt遇到一个致命的错误且必须关闭问题解决

securecrt遇到一个致命的错误且必须关闭问题解决 一个崩溃转储文件已创建于: C:***\secureCRT.dmp 1.将对应崩溃转储文件进行删除 2.打开cmd->输入regedit打开注册表 搜索 VanDyke的项全部删除即可。我是win764位的HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\下有个vandyke项删了就能启动了 ...

weixin_42599429的博客 2596

“SecureCRT遇到一个致命的错误且必须关闭”处理办法

打开SecureCRT时报错:SecureCRT遇到一个致命的错误且发须关闭。一个崩溃转储文件已创建于... 解决办法是,如下在cmd中输入regedit回车打开注册表编缉器 展开HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ 找到包含“VanDyke”字眼的那些文件夹(有时只有VanDyke一个有时有几个)在其上点击右键选择全删掉,然后重新双击启...

weixin_43818597的博客 3651

如何在windows中配置自动生成崩溃文件(.dmp)

如何在windows中配置自动生成崩溃文件(.dmp)

邓校长的编程课堂专栏 2204

Windows程序崩溃现场重建:巧用VS、DMP与PDB文件精准定位异常根源

本文详细解析了如何利用Visual Studio、DMP与PDB文件精准定位Windows程序异常崩溃的根源。通过实战案例和技巧分享,介绍了DMP文件生成方法、符号调试配置、高级调试场景分析以及自动化崩溃分析系统的搭建,帮助开发者高效解决程序崩溃问题。

weixin_30596023的博客 300

别再让程序崩溃无迹可寻:手把手教你用C++代码生成DMP文件(附完整源码)

本文详细介绍了如何在C++开发中生成DMP文件以捕获程序崩溃信息,提供完整的源码实现和工程实践建议。通过Windows异常处理机制和MiniDump技术,开发者可以快速定位崩溃原因,解决用户环境中的疑难问题。文章还涵盖了PDB管理、服务程序特殊考量及高级调试技巧,帮助构建健壮的崩溃捕获系统

weixin_30443747的博客 272

QT应用编程: window下QT程序异常捕获并生成DMP文件、PDB文件

win10 64位QT5.12.6。

thanklife的专栏 2120

别再抓瞎了!手把手教你用Visual Studio 2022分析Windows程序崩溃DMP文件(附PDB配置全流程)

本文详细介绍了如何使用Visual Studio 2022分析Windows程序崩溃DMP文件的全流程,包括PDB文件配置、符号路径设置及高级调试技巧。通过实战案例和最佳实践,帮助开发者快速定位和解决程序崩溃问题,提升调试效率。

weixin_30291791的博客 223

Qt qBreakpad使用

环境:Windows10 qtcreator5.14 Debugging Tools for Windows(X64+X86) 源码:qBreakpad

qq_16377055的博客 1810

生成到解析:实战指南:利用DMP文件精准定位Windows程序崩溃

本文详细介绍了如何利用DMP文件精准定位Windows程序崩溃问题。从生成DMP文件的三种实战方法(代码集成、任务管理器、ADPlus)到使用WinDbg进行高级分析,提供了完整的解决方案。特别适合开发人员处理难以复现的崩溃问题,提升调试效率。

weixin_30561177的博客 347

mfc 增加 dmp导出功能

#include <Windows.h> #include <DbgHelp.h> #pragma comment(lib,"DbgHelp.lib") //创建dump文件 void CreateDumpFile(CString lpstrDumpFilePathName, EXCEPTION_POINTERS* pException) { HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE.

瞬Future 365

windbg 进行调试

这里就是介绍下如何使用windbg,然后把几种常用的形式记录下,本人对于windbg的使用也是小白,所以只是简单的记录如下: 1.程序没有响应,处于假死状态,一般情况下我们在windows下弄出个转存储文件,然后对dump进行分析,得到转存储文件的不走如下: 1.1 启动windows任务管理器,找到对应进程,然后鼠标右键,创建转储文件,然后得到DMP文件 1.2 打开windbg,然...

zhc的博客 413

使用windbg分析程序崩溃后附加windbg dump出来的dmp文件

程序崩溃后附加windbg,.dump生成dmp文件并不是直接保存着程序崩溃时的状况,而是保持着windows在做崩溃处理时的状况,因此此时的调用堆栈并不是崩溃时的调用堆栈。 下面是实际崩溃时的调用栈 下面是崩溃处理时的调用栈 两个调用栈中都有,对比一下可以猜测是__RtlUserTh...

chilu6000的博客 501

利用Windows自带的功能当程序崩溃时产生崩溃转储文件(dmp)

何志丹 以管理员身份 运行 :OpenDump.bat 其本质是写注册表。 运行后: 任何程序崩溃都会在C:\CrashDump 产生dmp文件(比较大,约50到200M)。 至少在Win7、Win10的电脑,Win10的平板上运行正确。 OpenDump.bat @echo off echo 正在启用Dump... reg add "HKEY_LOCAL_M

闻缺陷则喜何志丹 1万+

Windows上Qt程序生成pdb文件,并在exe崩溃生成dmp文件,且由dmp查询崩溃原因

Qt在windows下dump文件bug溯源

joyopirate的博客 5133
上一篇: 学会放弃
下一篇: vs2008设置完系统窗口颜色以后自定义类白底
buck
博客等级 码龄14年 185粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值