windows下程式有時突然崩潰了,偶發性的崩潰很難找。於是就需要儲存崩潰時的dump資訊了。
下面是關於如何生成dmp檔案的**。
標頭檔案
#pragma once#include#include
#include
#include
#pragma comment(lib, "dbghelp.lib")
namespace
frameworkminidump
原始檔:
#include "minidump.h
"#include
#include
#include
namespace
frameworkminidump
std::wstring stringtowstring(
const std::string&str)
return
ret;
#else
const
char* p =str.c_str();
size_t len =str.length();
size_t sz = len * sizeof
(wchar_t);
wchar_t* tp = new
wchar_t[sz];
size_t w =mbstowcs(tp, p, sz);
if (w !=len)
std::wstring ret(tp);
delete
tp;return
ret;
#endif
} std::
string wstringtostring(const std::wstring&str)
*/return
ret;
#else
const wchar_t* p =str.c_str();
char* tp = new
char
[sz];
size_t w =wcstombs(tp, p, sz);
if (w !=sz)
std::
string
ret(tp);
delete
tp;return
ret;
#endif
} std::
string
getexepath()
inline bool isdatasectionneeded(
const wchar*pmodulename)
wchar szfilename[_max_fname] = l""
; _wsplitpath(pmodulename, null, null, szfilename, null);
if (_wcsicmp(szfilename, std::wstring(l"
ntdll
").c_str()) == 0
)
return
true;
return
false;
}inline bool callback minidumpcallback(pvoid pparam,
const
pminidump_callback_input pinput,
pminidump_callback_output poutput)
return
false;
}inline
void
createminidump(pexception_pointers pep, lpctstr strfilename)
}long __stdcall myunhandledexceptionfilter(pexception_pointers pexceptioninfo)
//此函式一旦成功呼叫,之後對 setunhandledexceptionfilter 的呼叫將無效
void
disablesetunhandledexceptionfilter()
}void
initmindump()
}
使用:
intmain()
呼叫一下initmindump就可以了,這裡面會註冊乙個**,崩潰時會儲存的dmp檔案。
注意:需要在debug模式。儲存下來的dmp檔案,需要結合pdb檔案和源**才能定位到**崩潰了。具體的我也不懂。
Windows下dump檔案生成與分析
一 生成dump檔案方式 1.1任務管理器 在程式崩潰後,先不關閉程式,在任務管理器中找到該程式對應的程序。右鍵 建立轉儲檔案。此時會在預設的目錄下建立出乙個dump檔案。可以看出,此種方法只適用於程式崩潰但沒有立即自行退出的情況。倘若程式故障後自行退出,則此方法就難以應用。不過,我們可以在登錄檔中...
C 生成dump檔案,除錯dump檔案
dump 檔案是程序的記憶體映象 可以把程式的執行狀態通過偵錯程式儲存到dump檔案中 dump 檔案是用來給驅動程式編寫人員除錯驅動程式用的 這種檔案必須用專用工具軟體開啟 比如使用 windbg visualstudio開啟 當我們的程式發布出去之後 在客戶機上是無法跟蹤自己 的 bug 的 所...
使用Windbg生成dump檔案
microsoftinternetexplorer402documentnotspecified7.8normal0 使用windbg生成dump檔案 windbg生成dump檔案的方法 程式崩潰 crash 的時候,為了以後能夠除錯分析問題,可以使用windbg要把當時程式記憶體空間資料都儲存下來...