Windows C++ 程式崩潰收集工具
阿新 • • 發佈:2020-11-28
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檔案,其過程如下:
- 顯式載入
DBGHELP.DLL
,並定位到MiniDumpWriteDump
函式地址 - 呼叫
MiniDumpWriteDump
函式生成DumpFileNamePrefix
字首的minidump檔案 - 呼叫
ContextDump
函式生成當前堆疊日誌檔案 - 建立程序
CmdLine
如果指定,這裡一般會呼叫上傳程式把相關日誌記錄上傳到遠端伺服器,由工程師統一調查處理。 - 建立程序
ExeNameToReboot
如果指定