windows Dump 調試

來源:互聯網
上載者:User

標籤:c++   dump   調試   

有時候程式的Release 版本發布出去後,在客戶的機器上發送異常,大部分的情況下 我們都可以通過我們寫的log 發現問題所在,但有時發送崩潰異常(如用到了野指標),我們希望能定位到發送崩潰的程式碼。這時我們可以用dump檔案。類似於Linux下的core檔案。可以叫他“死前遺書”。


1,產生dump 檔案。

windows 提供了dbghelp.dll 中的 MiniDumpWriteDump()。函數原型參考MSDN。

程式中先包含"dbghelp.h" "dbghelp.lib"

代碼如下:


#include "windows.h"#include "dbghelp.h"//LONG CallBackCrashHandler(EXCEPTION_POINTERS *pException)  {   // 這裡你可以做一個漂亮的介面或者其他//  MessageBox(NULL,L"哎呀媽,崩潰了",L"錯誤",MB_OK);//寫dmp檔案HANDLE hFile = CreateFile( _T("Dump.dmp"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); //一下請參考MSDNMINIDUMP_EXCEPTION_INFORMATION eInfo;eInfo.ThreadId = GetCurrentThreadId(); eInfo.ExceptionPointers = pException;eInfo.ClientPointers = FALSE;MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),hFile,MiniDumpNormal,pException ? &eInfo : NULL,NULL,NULL);CloseHandle(hFile);return EXCEPTION_EXECUTE_HANDLER;  }  void Crash()   {    int i = 13;  int j = 0;  int m = i / j;  printf("%d",m);}  int _tmain(int argc, _TCHAR* argv[])  {  // 設定處理Unhandled Exception的回呼函數  //程式發送異常調用SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CallBackCrashHandler);  Crash();return 0;  }


2,分析dump 檔案。

我用vs2010 分析步驟如下。

1,將客戶機器上的Dump.dmp 弄過來。

2,將它和你本機 exe,pdb放在同一個目錄。(Release 版本預設是不產生pdb檔案的,可以通過“連結器”->“調試”->"產生調試資訊"->"是"更改,所以你用svn管理版本的時候 要管理好)(主要exe pdb dmp 要是一致的)

3,用vs 開啟Dump.dmp檔案。


資訊如下:




可以知道異常原因。


4,點擊右上方的“使用 使用 僅限本機 進行調試”


即可追查到代碼的當前行數。







windows Dump 調試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.