1. 程式人生 > >vs2008 dump檔案除錯

vs2008 dump檔案除錯

引自  南海之星 

用vs2008分析dump檔案

  1. 雙擊minidump檔案(*.dmp)。預設會啟動vs2008。
  2. 選單Tools/Options, Debugging/Symbols,增加PDB檔案路徑。注:如果minidump檔案與pdb檔案在同一目錄,就不用設定這個了。
  3. 若除錯的程式需要微軟基礎庫的PDB資訊,可以增加一個路徑為:
  4. 在介面下方Cache Symbol From symbol…選擇本地儲存這些Symbols的路徑。 注:如果本地已儲存過微軟基礎庫的pdb,就直接按照此步操作設定本地路徑,不必執行上一步操作了。

setting

設定程式碼路徑:

剛開啟的dmp工程,進入解決方案的屬性。在這裡輸入源程式的程式碼路徑。注:一定是sln所在的路徑,而不是vcproj的路徑!

solution_properties

按F5,debug吧。

//

PS:或者可以這樣載入符號路徑,如果沒有載入本應用程式的符號表,可以在載入模組裡面修改符號表的路徑.(也是彈出選單Tools/Options, Debugging/Symbols)

*************************************************

引自 

似水流年

附:常見問題討論

1  Dump檔案放在哪裡

Dump檔案不用非要放在你編譯出來的位置,你完全可以建立一個新的資料夾來放它。但若不是存放在編譯出來的位置,需要將編譯生成的PDB檔案拷貝到Dump檔案目錄,或是利用VS2005(2008)開啟Dump檔案後,設定

PDB檔案路徑。

2、如何恢復當時的現場?

可能你要問,怎麼可能,這個dump檔案可是使用者發給我的,我不可能去使用者家裡除錯吧?這個恢復現場可不是指的非要到那臺機器上去,而是要把產生dump檔案對應的二進位制檔案拿到。

但是恢復現場需要所有的二進位制檔案都要對應,你一定要有導致使用者崩潰的那些ExeDLL。既然是你釋出的程式,Exe檔案當然你會有。所以這裡只考慮DLL就行了。

Dump檔案中記錄了所有DLL檔案的版本號和時間戳,所以你一定可以同過某種途徑拿到它。如果你能從使用者那裡拿到最好,如果不方便,使用者不可能用的是我們平常不常用的作業系統,所以找個有對應系統的機器一般都會有。但是記住不僅是檔名稱要一致,還要核對版本和時間戳,如果不同一樣沒有辦法用。

如果客戶用了某個特殊的補丁怎麼辦?

其實這個問題也很好解決,只要它不阻礙閱讀堆疊,就不用管它,除錯Dump和執行程式不一樣,缺少一兩個DLL沒有任何問題。

3、如果真的需要怎麼辦?

符號檔案現在主要是指PDB檔案。

如果沒有符號檔案,那麼除錯的時候可能導致堆疊錯誤。

如果你丟失了這個釋出版本中你編譯出來的那些exe和DLL的PDB,那麼這個損失是嚴重的,重新編譯出來的版本是不能使用的。

我自己的DLL都有了,可是缺的是系統的DLL的對應PDB檔案怎麼辦?上圖已經介紹了方法。微軟在它的符號資料庫上為我們提供了所有的PDB檔案,還有部分非關鍵DLL。設定好後程序將自動下載需要的PDB及DLL檔案。

4、拿到需要的檔案了,這些檔案應該放在哪裡?

符號資料庫中的檔案不用動,把其它的exe和DLL、PDB檔案放在dump檔案目錄裡就行了。

5、我用的是VS2005(2008),明明有原始碼,為什麼顯示不了?

這個是dump除錯的最頭痛問題,程式碼可能已經改過了,即使你從SVN拿到當時的版本,時間戳也是錯的,VS2005(2008)就是不讓你顯示程式碼。

其實只要在VS2005(2008)工具選項除錯常規 中去掉 “要求原始檔與原始版本完全匹配”(Require source files to exactly match the original version) 的複選就行了。


相關推薦

vs2008 dump檔案除錯

引自  南海之星  用vs2008分析dump檔案 雙擊minidump檔案(*.dmp)。預設會啟動vs2008。選單Tools/Options, Debugging/Symbols,增加PDB檔案路徑。注:如果minidump檔案與pdb檔案在同一目錄,就不用設定這

利用VS2005進行dump檔案除錯

前言:利用drwtsn32或NTSD進行程式崩潰處理,都可以生成可用於除錯的dmp格式檔案。使用VS2005開啟生成的DMP檔案,能很方便的找出BUG所在位置。本文將討論以下內容: 1、程式編譯選項 2、利用VS2005 分析dump檔案 3、常見問題討論 一、程式編譯選項 PDB file

VS2008除錯Release程式--Dump檔案方式

                在Windows平臺下用C++開發應用程式,最不想見到的情況恐怕就是程式崩潰,而要想解決引起問題的bug,最困難的應該就是除錯release版本了。因為release版本來就少了很多除錯資訊,更何況一般都是釋出出去由使用者使用,crash的現場很難保留和重現。目前有一些方法可以

VC++ 利用PDB和dump檔案定位問題並進行除錯

轉載:https://blog.csdn.net/zfs_kuai/article/details/43646665 轉載:https://blog.csdn.net/i_chaoren/article/details/81453142 一、什麼是PDB檔案       &

dotnet core除錯docker下生成的dump檔案

最近公司預生產環境的docker容器經常出現記憶體暴漲現象,有時會突然吃掉幾個G,觸發監控預警,造成容器重啟。 分析了各種可能原因,修復了可能發生的記憶體洩露,經測試本地正常,但是發到預生產還是會有記憶體暴漲現象,反而更改GC模式後記憶體使用保持較低水平,百思不得其解,所以想到使用除錯dump檔案方式來分析

vs除錯dump檔案注意事項

dump檔案, pdb檔案,exe檔案要確保是一套,我就是因為那這舊版本的dump檔案在新的exe上除錯,老是報錯也不知道為什麼,坑了一下午。 dump檔案,pdb檔案,exe檔案要確保在一個目錄下,

用VS2005(其他版本也可以)除錯dump檔案

 雖然windbg也可以除錯,但是如果用VS除錯dump檔案會更方便,畢竟它有強大的反彙編檢視、變數、堆疊、記憶體檢視等非常好用的功能。 從【File】選單選擇開啟dmp檔案,會生成一個solution。 然後設定原始碼路徑:右鍵solution屬性,選擇Debug s

WINDBG除錯DUMP檔案

    對於windows程式設計師來說,程式執行時藍屏是最鬱悶的事情,如何找到藍屏的原因則是首要解決的事情,好在微軟提供了一系列的方法,為我們除錯藍屏提供了便利。     首先要用的工具是windbg,可以到微軟的官方網站下載     http://msdl.microso

使用VS2012除錯Dump檔案

前一節我講了怎麼設定C++崩潰時生成Dump檔案 , 點選 傳送門 , 這一節我講講怎麼使用 VS2012 除錯生成的 Dump 檔案 , 甚至可以精確到出錯的那一行程式碼上面 ; 1. 生成 Dump 檔案 我在主函式寫了如下崩潰程式碼 : int

生成程式崩潰的dump檔案,使用windbg除錯

1,目的 有時候程式在客戶那裡崩潰了,你程式也沒有什麼有效的log日誌能記錄到崩潰的細節,那這實在是一件很麻煩的事情。 你得向客戶反覆瞭解操作內容並希望能在自己這裡重現,這個過程想想都很痛苦吧。。 使用下面的方法,能在程式崩潰時生成一個自己的dump檔案,記錄了崩潰時的一

自定義VS程式異常處理及除錯Dump檔案(一)

1. Dump檔案 1. Dump檔案介紹 Dump檔案(Dump File),也叫轉儲檔案,以.DMP為檔案字尾。dump檔案是程序在記憶體中的映象檔案,通過轉換然後儲存成以.DMP字尾的檔案。dump檔案根據儲存時的選項不同,會生成不同大小的檔案,其

linux core dump檔案生成和除錯

1.core dump檔案生成 project(coredumptest) cmake_minimum_required(VERSION 2.8) add_compile_options(-std=c++11 -pthread -g -ggdb -O

使用dbghelp生成dump檔案以及事後除錯分析

前言 在產品的實際應用環境中,如果我們的程式在客戶那裡出現了問題,例如程式異常了,而這個時候的現象又不能還原或者很難還原重現,那麼只有使用dump檔案來儲存程式的當前執行資訊,例如呼叫堆疊等,同時使用符號檔案來定位問題了;這裡主要講解使用dbghelp庫來生成輸出dump

【取證分析】用linux命令xxd來獲取dump檔案資訊獲得flag

題目連結:https://blog.csdn.net/xiangshangbashaonian/article/details/82747394 拿到一道CTF題目  notepad++開啟如下所示 [email protected]:~/Desktop$ fi

gdb中core檔案除錯

程式執行時,如果有錯誤,則會產生core檔案。 core檔案如何檢視錯誤 在Linux系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的,本文對此做簡單介紹。 例如,一個程式cmm_test_tool在執行的時候發生了錯誤

windows程式崩潰時自動生成dump檔案方法

  /****************第一步新增createdump.h********************************* 新增一個頭檔案:createdump.h #pragma once #include <windows.h> #inclu

gdb簡單指令以及core檔案除錯——Linux除錯基本技能

core檔案除錯步驟——直接定位段錯誤堆疊 1、ulimit -c unlimited設定core檔案無限制 2、echo “/root/core” > /proc/sys/kernel/core_pattern制定core檔案生成的路徑,注意路徑後要加上core 3、在本地執

Winows下程式崩潰自動建立Dump檔案以方便跟蹤問題

首先定義一個預設的異常處理回撥函式: LONG CrashHandler(struct_EXCEPTION_POINTERS* pExceptionInfo) { std::string dumpFileName = "./CrashDump.dump"; H

dump解析入門-用VS解析dump檔案進行排障

突然有一天部署在伺服器的一個應用掛掉了,沒辦法只能進入伺服器開啟   【事件檢視器】檢視下,好不容易找到了開啟後一臉懵逼   事件檢視器查到的內容根本對我們排障沒有任何作用。 在這個時候如果有對應的dump檔案就能派上用場了, 只要有dump檔案就能查到應用掛掉那刻的一手情報,可能有人

ejabberd叢集失敗,log目錄下產生 .dump檔案

報錯檔案: 報錯資訊如下: =erl_crash_dump:0.3 Sun May 13 16:40:25 2018 Slogan: Kernel pid terminated (application_controller) ({application_