2014-02-19 62 views
6

我有一個客戶應用程序的崩潰轉儲,用我在WinDbg中分析過的我們的一個非常舊版本的dll(發佈版本,沒有原始符號)構建。崩潰轉儲 - WinDbg - 強制PDB文件匹配不起作用?

爲了獲得更多信息,我使用相同的編譯器版本重新構建了釋放模式下的dll,並使用相同的編譯器版本,並且我相信與最初構建dll時的設置相同。我將符號文件添加到我的符號路徑中,但是WinDbg擴展!itoldyouso告訴我轉儲中的模塊與PDB文件不匹配。啓用S​​YMOPT_LOAD_ANYTHING也沒有幫助。

!itoldyouso告訴我他們不匹配,因爲模塊沒有pdb sig(值爲0),而與我創建的重新創建的符號文件(使用有效的pdb sig)不匹配。我如何讓他們匹配?

回答

9

你試過.reload /i foo.dll

詳細輸出的嘗試:

!sym noisy;.reload /i foo.dll;x foo!*test*

+0

是的,它加載了foo的符號,但是在詳細輸出中我也看到了不匹配的報告:「DBGENG:foo.dll有不匹配的符號 - 類型」.hh dbgerr003「詳細信息「 – JosephA

+0

當然,它們會被報告爲不匹配,因爲它們不是在構建DLL時構建的。但只要你使用相同的編譯器和設置(你提到的)並且源代碼根本沒有改變,那麼這些符號就可以工作。 –

+0

我想我是在假設下工作,除非我有一場比賽,我根本無法相信調用堆棧,雖然也許正如你所說他們永遠不會匹配,但也許儘管我仍然可以有一個大多數有效的調用堆棧。 – JosephA