WinDbg分析DUMP文件

本文介绍了一个简单的dump文件生成方法,通过设置未处理异常过滤器来捕捉异常并生成dump文件,适用于Windows平台。文章展示了如何使用DbgHelp库来创建dump文件,并提供了完整的代码示例。

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

转载自:https://www.cnblogs.com/nchxmoon/p/4390980.html

一、生成dump文件

1 #ifndef _DUMP_GENERATE_H_
 2 #define _DUMP_GENERATE_H_
 3  
 4 #include <Windows.h>
 5 #include <DbgHelp.h>
 6 #pragma comment(lib, "DbgHelp.lib")
 7  
 8 LONG WINAPI MyUnhandledExceptionFilter(_In_ struct _EXCEPTION_POINTERS *ExceptionInfo);
 9 void MyDumpGenerate();
10  
11 void MyDumpGenerate()
12 {
13  SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
14 }
15  
16 LONG WINAPI MyUnhandledExceptionFilter(_In_ struct _EXCEPTION_POINTERS *ExceptionInfo)
17 {
18  MessageBox(0,L"DumpGenerate",0,0);
19  
20  HANDLE lhDumpFile = CreateFile(L"D:\\test.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
21  
22  MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo;
23  loExceptionInfo.ExceptionPointers = ExceptionInfo;
24  loExceptionInfo.ThreadId = GetCurrentThreadId();
25  loExceptionInfo.ClientPointers = TRUE;
26  MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), lhDumpFile, MiniDumpNormal, &loExceptionInfo, NULL, NULL);
27  
28  CloseHandle(lhDumpFile);
29  
30  /*
31   * EXCEPTION_CONTINUE_SEARCH:将异常传给调试器
32   * EXCEPTION_EXECUTE_HANDLER:不显示错误信息
33   */
34  return EXCEPTION_EXECUTE_HANDLER;
35 }
36  
37 #endif // _DUMP_GENERATE_H_
38  
39 ////////////////
40 // main.cpp
41 int main()
42 {
43  MyDumpGenerate();
44  int* p = NULL;
45  *p = 1;
46  // 这里异常后,会自动调用MyUnhandledExceptionFilter接口,生成dump文件:test.dmp。
47  return 0;
48 }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值