原貼地址:https://blog.csdn.net/wangkui1331/article/details/78029940
vc/vs開發的應用程序出現崩潰的時候,由于沒有任何記錄,導致開發人員很難追蹤,但是添加dump文件后,就可以免除這些煩惱
1.添加方法
(1)添加頭文件
#include <imagehlp.h>
#pragma comment(lib, "DbgHelp.lib")
(2)在InitInstance()函數中添加:
//抓捕異常文件 ::SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ExceptionCrashHandler); //cash代碼
其中ExceptionCrashHandler是自自己添加的回調函數,代碼如下:
//抓捕異常信息 LONG ExceptionCrashHandler(EXCEPTION_POINTERS *pException) { // 創建Dump文件HANDLE hDumpFile = CreateFileW(L"Exception.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);// Dump信息 MINIDUMP_EXCEPTION_INFORMATION dumpInfo;dumpInfo.ExceptionPointers = pException;dumpInfo.ThreadId = GetCurrentThreadId();dumpInfo.ClientPointers = TRUE;// 寫入Dump文件內容MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);CloseHandle(hDumpFile);return EXCEPTION_EXECUTE_HANDLER; }
崩潰時會在exe所在目錄生成Exception.dmp文件
2.調試方法
調試時需要的文件包括:exe文件,dump文件,還有編譯生成對應exe的pdb文件(這就需要提前保存好對應版本的pdb文件,否則提示pdb文件不匹配),保證它們在同一目錄下,用vs2010打開dump文件(安裝了vs2010的雙擊dump即可自動打開),按下圖操作即可