Windows 应用生成MiniDump文件的方法笔记

news/2024/11/24 6:43:34/

Windows应用在执行过程中遇到异常等情况默认不会像linux应用那样生成dump文件,可以自己注册一个函数若应用存在Unhandled Exception的时候则执行写入dump文件的操作来排查某些异常情况。

生成dump文件与注册函数的代码如下:

// 创建Dump文件  
void CreateDumpFile(LPCTSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException)
{HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);// Dump信息  MINIDUMP_EXCEPTION_INFORMATION dumpInfo;dumpInfo.ExceptionPointers = pException;dumpInfo.ThreadId = GetCurrentThreadId();dumpInfo.ClientPointers = TRUE;// 写入Dump文件内容  MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);CloseHandle(hDumpFile);
}
// 处理Unhandled Exception的回调函数  
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{TCHAR fileName[BUFSIZ] = { 0 };time_t tt = time(NULL);//这句返回的只是一个时间cuotm* t = localtime(&tt);wsprintf(fileName, TEXT("c://crash%d_%d_%d_%d_%d_%d.dmp"),t->tm_year + 1900,t->tm_mon + 1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);CreateDumpFile(fileName, pException);return EXCEPTION_EXECUTE_HANDLER;
}

最后只要在应用程序的入口,比如main函数,后者dllmain函数中注册

int main(int argc, char * argv[])
{	//注册异常处理函数  SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);// do something else.return 0;
}

 


http://www.ppmy.cn/news/574822.html

相关文章

DUMP文件分析1:DUMP文件简介

1.1 DUMP文件类型 Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump。内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump。用户模式Dump进一步可以分为完整Dump(Full Dump&…

How to enable minidumps in Java for Windows

How to enable minidumps in Java for Windows Failed to write core dump. Minidumps are not enabled by default on client versions of Windows 错误信息 # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc000…

Effective minidump (下)

Effective minidump (下) 前半部分 (http://blog.csdn.net/pkrobbie/article/details/6636310) MiniDumpCallback函数 如果MINIDUMP_TYPE不能满足我们定制minidump内容的需要,我们可以使用MiniDumpCallback函数。这是一个用户定义的回调函数,MiniDumpW…

Effective minidump (上)

Effective minidump (上) 原文更新: 07.02.2005 翻译:2011/7/16 目录 简介Minidump 类型MiniDumpCallback函数用户数据流Dump类型其他例子程序 简介 在过去几年里,崩溃转储(crash dump)成为了调试工作的一个重要部分。如果软件在客户现场或者测试…

使用MiniDumpWriteDump API 来生成程序的Dump

MiniDumpWriteDump是MS DbgHelp.dll 中一个API, 用于导出当前运行的程序的Dump. 这个dll程序系统中就有, 但是很多软件, 都在自己的安装目录下保存了这个.dll的最新的版本. 为了测试这个API, 参考网上一些资料, 写了一个简单的C 程序. 目的是当有异常发生的时候, 自动生成Dump…

windows minidump 的那些事

在开发中最让程序员头痛的是程序异常对出。还没有留下任何蛛丝马迹。在linux系统上不用担心这个问题,linux内核可以完成这个工作,通过ulimit -c unlimited。windows也可以同windbg或dr.Watson绑定运行,当出现异常时会挂住进程。这样做是很多程…

mydumper

文章目录 mydumpermydumper 介绍mydumper 备份机制mydumper 备份原理示意图mydumper 备份过程 mydumper 备份生成的文件类型metadatadb_name-schema-create.sqldb_name.tb_name-schema.sqldb_name.tb_name.sql Mydumper 安装安装依赖包编译安装检查版本 mydumper & myloade…

MiniDumpWriteDump

MiniDumpWriteDump 转载于:https://www.cnblogs.com/chunyou128/archive/2012/10/12/2721689.html