// Copyright (c) 2020 Lv Decai, Shenzhen, China.// Filename: MiniDumper.h// Version: 1.0// Release date: 2020年10月11日// License: MIT (http://opensource.org/licenses/MIT)#pragma once#include <DbgHelp.h>#include "../CommonCpp.h"struct _EXCEPTION_POINTERS;NAMESPACE_BEGIN;// 程序崩溃内存信息转储类class COMMON_API CMiniDumper{public:// 配置类class CConfig{public:// 转储类型,参见 enum _MINIDUMP_TYPEint DumpType = MiniDumpNormal;// 应用程序名,用作显示提示信息的提示窗口标题,以及崩溃信息转储文件的名称TCHAR AppName[MAX_PATH] = { 0 };// 是否把进程的模块信息写入文件BOOL DumpModuleInfo = FALSE;// 是否显示错误提示信息BOOL ShowError = FALSE;// 发生错误时回调的函数,可用于记录日志或显示提示信息void (*OnError)(PCTSTR sErrorMessage) = NULL;// 发生崩溃的回调的函数,可用于显示提示信息或重启进程void (*OnCrush)() = NULL;};// 启用崩溃内存信息转储static void Enable(// 转储类型,参见 enum _MINIDUMP_TYPEint iDumpType = MiniDumpNormal,// 应用程序名,用作显示提示信息的提示窗口标题,以及崩溃信息转储文件的名称,未设置应用程序名时自动使用可执行文件名PCTSTR sAppName = NULL,// 是否显示错误提示信息BOOL bShowError = FALSE);// 启用崩溃内存信息转储// 未设置应用程序名时自动使用可执行文件名static void Enable(// 程序崩溃内存信息转储配置const CConfig& Config);// 创建内存信息转储文件// 未发生异常时也可以调用该函数创建内存信息转储文件// 返回值:错误信息,空字符串表示操作成功static CString CreateDumpFile(// 转储类型,参见 enum _MINIDUMP_TYPEMINIDUMP_TYPE iDumpType,// 异常信息,空指针表示无异常_EXCEPTION_POINTERS* pExceptionInfo);// 改名备份已存在的内存信息转储文件static void BackupDumpFile();// 把进程的模块信息保存到文件中static BOOL DumpModuleInfo(PCTSTR sFilePath);private:// 程序崩溃内存信息转储配置static CConfig m_Config;// 异常处理函数static LONG WINAPI TopLevelFilter(_EXCEPTION_POINTERS* pExceptionInfo);// 获取转储文件路径static CString GetDumpFilePath();// 显示错误提示信息static int ShowError(PCTSTR sErrorMessage, UINT iType);};NAMESPACE_END;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。