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

本文介绍了在Windows应用程序中,如何在遇到未处理异常时生成MiniDump文件以辅助异常情况排查。通过注册特定函数,当发生Unhandled Exception时,系统将自动生成dump文件。

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

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);//这句返回的只是一个时间cuo
	tm* t = localtime(&tt);

	wsprintf(fileName, TEXT(&#
### 关于Google Breakpad的使用和文档 #### 什么是Google Breakpad? Google Breakpad 是一个跨平台的崩溃报告系统,用于捕获程序崩溃时的核心转储文件minidumps),并将其转换为可读的形式以便调试。它支持多种操作系统,包括 Windows、Linux 和 macOS。 #### 如何在Windows平台上编译和使用Google Breakpad? 为了在 Windows 平台上编译和使用 Google Breakpad,可以参考学习笔记中的相关内容[^1]。通常情况下,这涉及以下几个方面: - 配置开发环境以支持 Breakpad 的构建。 - 使用 CMake 或其他构建工具生成适合的项目文件。 - 编译完成后,集成到目标应用程序中以捕获崩溃信息。 #### 在Impala Toolchain中如何利用Breakpad工具处理Minidump文件? 如果正在使用 Impala 工具链,则可以通过其内置的 Breakpad 版本来解析 minidump 文件。具体命令如下所示[^2]: ```bash $IMPALA_TOOLCHAIN/breakpad-$IMPALA_BREAKPAD_VERSION/bin/minidump_stackwalk \ $MINIDUMP_FILE $BREAKPAD_SYMBOLS > $RESULT_FILE ``` 此命令会将指定的 minidump 文件 `$MINIDUMP_FILE` 转换成堆栈跟踪信息,并保存至 `$RESULT_FILE` 中。其中 `$BREAKPAD_SYMBOLS` 表示符号表路径,这对于正确解析堆栈至关重要。 #### 提高效率的小技巧 对于开发者而言,善于运用代码搜索工具能够显著提升工作效率[^3]。无论是查找特定函数实现还是理解复杂逻辑关系,高效的代码浏览能力都是不可或缺的一部分。 #### 其他相关资源 除了 Breakpad 外,谷歌还提供了许多有用的开源项目。例如 URL 解析与规范化库可以帮助我们更好地理解和操作网络地址数据结构[^4]。 另外,在实际部署过程中可能还需要确认某些依赖项是否存在以及它们的具体位置。比如通过 `find` 命令定位共享对象文件的位置[^5]: ```bash sudo find / | grep "libGL.so" ``` 以上就是关于 Google Breakpad 及其周边技术的一些基本信息介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值