前言
这个minidump对于在windows平台上调试程序问题是十分重要的,所以有必要提一下。
之前我有一个博客说的很详细了,但是因为同事借我的账号乱下载文件,所以直接给注销了。换了一家公司以后,发现他们的程序完全没有Dump检测机制,有点不放心,然后大致搜索,回顾一番了,决定还是再记录一遍。
代码
#include <tchar.h>
#include <shlwapi.h>
#include <dbghelp.h>
#include <Windows.h>
#pragma comment(lib, "Dbghelp.lib")
#pragma comment(lib, "shlwapi.lib")
int GenerateMiniDump(PEXCEPTION_POINTERS pExceptionPointers)
{
// 定义函数指针
typedef BOOL(WINAPI * MiniDumpWriteDumpT)(
HANDLE,
DWORD,
HANDLE,
MINIDUMP_TYPE,
PMINIDUMP_EXCEPTION_INFORMATION,
PMINIDUMP_USER_STREAM_INFORMATION,
PMINIDUMP_CALLBACK_INFORMATION
);
// 从 "DbgHelp.dll" 库中获取 "MiniDumpWriteDump" 函数
MiniDumpWriteDumpT pfnMiniDumpWriteDump = NULL;
HMODULE hDbgHelp = LoadLibrary(_T("DbgHelp.dll"));
if (NULL == hDbgHelp)
{
return EXC