Windows C++ 程序崩潰收集工具

Windows C++ 程序崩潰收集工具

說明

MiniDumper(LPCTSTR DumpFileNamePrefix)

MiniDumper(LPCTSTR DumpFileNamePrefix, LPCTSTR CmdLine, LPCTSTR ExeNameToReboot /* = NULL */)

DumpFileNamePrefix 崩潰文件名前綴

CmdLine 生成崩潰文件後執行命令(包含參數)

ExeNameToReboot 生成崩潰文件後執行指定程序

使用示例

在崩潰時調用指定的程序,下面的示例是調用CrashReport.exe上傳到指定的服務器

#include "PostMortem.h"

char *szArgs = new char[2048];
ZeroMemory(szArgs, 2048);
StringCbPrintf(szArgs, 2048, _T("./CrashReport.exe \"dumper.wanwanol.com\" \"%s\""), g_pLogSys->GetLogFileName());
MiniDumper g_MiniDumper(_T("Client"), szArgs);
SAFE_DELETE_ARRAY(szArgs);

大致說明

MiniDumper 初始化時調用 Win32 API SetUnhandledExceptionFilter 註冊過濾函數TopLevelFilter
當發生崩潰時會調用TopLevelFilter生成minidump文件,其過程如下:

  1. 顯式加載DBGHELP.DLL,並定位到MiniDumpWriteDump函數地址
  2. 調用MiniDumpWriteDump函數生成DumpFileNamePrefix前綴的minidump文件
  3. 調用ContextDump函數生成當前堆棧日誌文件
  4. 創建進程CmdLine如果指定,這裏一般會調用上傳程序把相關日誌記錄上傳到遠程服務器,由工程師統一調查處理。
  5. 創建進程ExeNameToReboot如果指定

Github 倉庫地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章