windows生成dump檔案

2022-01-11 23:30:04 字數 2318 閱讀 9315

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()

}

使用:

int

main()

呼叫一下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要把當時程式記憶體空間資料都儲存下來...