2010-07-15 165 views
1

我讀過很多類似的問題進行轉儲,但我似乎無法找到一個答案,我的問題是什麼。需要幫助調試使用WinDbg

我從64位Windows 2008上運行的32位應用程序中獲得了一組小型轉儲。我的32位Vista Business上的32位Visual Studio根本不會觸及它們,所以我一直試圖在WinDbg中打開它們。

我沒有確切對應的.pdb文件(我們纔開始爲他們節省這一特定版本之後),但我必須在同一臺機器建有相同的代碼.pdbs。我也可以訪問創建小型轉儲的確切可執行文件。

我發現叫ChkMatch一個漂亮的小應用程序,可以讓.pdbs匹配的可執行文件......唯一的區別(根據ChkMatch)是年齡,所以我符合我的新.pdbs原來的可執行文件。

但是,當我將它加載到WinDbg中時,它仍然表示它是「不匹配的pdb」,因爲我已經設置了.symopts+0x40它試圖加載它們。然後我得到了警告:

*** WARNING: Unable to verify checksum for myexe.exe 

我跑!lmi myexe,發現,的確,可執行文件的校驗實際上爲零。從左右一點,我發現可執行文件應該已經用/release標誌來構建,以獲得校驗和。這一切都很好,但我不能及時重建並重建(如果我這樣做了,我肯定會保存原始的.pdbs :-P)。

有什麼我可以做嗎?似乎有點荒謬,我至少不能在這裏比賽,至少得到一個調用堆棧。

+0

即使SYMOPT_LOAD_ANYTHING打開,從中獲得您的PDB文件必須具有相同的設置,您試圖調試的二進制文件的版本。是這樣嗎? – 2010-07-15 22:10:28

回答

1

你不需要校驗獲得調用堆棧 - 這樣的警告可以忽略。

得到你需要發出命令堆棧(k的任何版本)堆棧。

如果小轉儲器是好的(即描述實際故障),則應首先嚐試自動分析!analyze -v,這將幫助您開始。

回來的時候,你已經用盡你的專業知識:O)

+0

對,我已經知道了。調用堆棧非常準確,所以我確信這是由於我缺少符號。我放置了一個新的可執行文件(使用完全匹配的符號),重現了這個問題,並獲得了相同的調用堆棧。看起來我已經回到原點了。 接受你的答案,因爲它是這裏唯一的一個。 – Morinar 2010-07-15 22:31:44

0

如果你使用小型轉儲工作,那麼你必須設置你的圖像路徑(按Ctrl + I)爲指向與垃圾堆裏的圖像的位置。小轉儲的麻煩在於它們不包含來自目標上可執行文件的任何代碼或數據,因此您必須自己提供它們。

斯科特