日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

DMP文件的生成和使用

發布時間:2023/12/31 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 DMP文件的生成和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、生成dmp的程序

#include<dbghelp.h>
#pragmacomment(lib, "dbghelp.lib")

//設置異常處理回調函數
SetUnhandledExceptionFilter(UnhandledExceptionFilter);

//異常處理代碼
//EXCEPTION_EXECUTE_HANDLER equ 1 表示我已經處理了異常,可以優雅地結束了
//EXCEPTION_CONTINUE_SEARCH equ 0 表示我不處理,其他人來吧,于是windows調用默認的處理程序顯示一個錯誤框,并結束
//EXCEPTION_CONTINUE_EXECUTION equ -1 表示錯誤已經被修復,請從異常發生處繼續執行
LONG UnhandledExceptionFilter(struct_EXCEPTION_POINTERS*ExceptionInfo)
{
CString strDumpFile;
strDumpFile.Format("%d",CTime::GetCurrentTime().GetTickCount());
strDumpFile+=".dmp";
HANDLE hFile= CreateFile(strDumpFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL );

if (hFile!=INVALID_HANDLE_VALUE)
{
MINIDUMP_EXCEPTION_INFORMATION ExInfo;

ExInfo.ThreadId= ::GetCurrentThreadId();
ExInfo.ExceptionPointers= ExceptionInfo;
ExInfo.ClientPointers= NULL;

// write the dump
BOOL bOK= MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal,&ExInfo, NULL, NULL );
CloseHandle(hFile);
}

theApp.PostThreadMessage(WM_QUIT,0,0);
returnEXCEPTION_EXECUTE_HANDLER;
}

2、調試dump文件

1)用windbg。

2)用vc,把dmp文件和exe, pdb文件放在同一目錄下, 然后用編譯器(如vc)打開, 然后開始調試就會中斷到剛才中斷的地方.

3、以下是網上搜集到的條件,尚未驗證是否是必需的,如果不能正確的生成dmp,可嘗試以下方法

1)SetUnhandledExceptionFilter()并不能處理所有的異常,比如CRT異常需要調用_set_invalid_parameter_handler()才行

1)要設置c運行庫異常處理函授。這樣當出錯后,會引發你的異常處理,你的處理中,可以直接丟掉或重新啟動你的exe,或寫入log文件。

2)注意生成的release應用程序需要開啟“生成調試信息”選項。

2)使用VS2008的話,不需要開啟“生成調試信息”選項就可以生成的。

3)編譯release版本的時候同時生成map文件,具體可以在網上查找一下關于map文件的使用方法。

3)生成可執行文件時在工程屬性設置里的“調試”選項里將“生成映射文件”設置為“是”。這主要是用來在出錯時通過dump和map文件對錯誤定位。

4、其他工具

1)生成dump文件需要Dr.Watson,它是Windows自帶的調試工具,只要對它進行了設置,程序出錯后就可以在相應目錄下找到dump文件。可參見如下資料:http://hi.baidu.com/mryongzhang/blog/item/11a774edf9b513d72e2e2167.html

2)adplus是最有用的工具,http://support.microsoft.com/kb/286350/

總結

以上是生活随笔為你收集整理的DMP文件的生成和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。