2017-08-08 86 views
0

我是Windows編程環境的新手。所以,如果你能幫助我這個將不勝感激:pdb不匹配或未找到 - 在Windows中調試

我有一個應用程序Controller.exe,我建立在TeamCity構建服務器。該應用程序的生成生成exe文件和pdb文件。

當我在部署機器上運行Controller.exe時,它會崩潰並生成轉儲。

在應用程序中我已經啓用傾銷崩潰有以下:

unsigned long stackSize = 16384; 
SetThreadStackGuarantee(&stackSize); 
SetUnhandledExceptionFilter(WriteLargeMiniDump); 

功能WriteLargeMiniDump()成功寫入轉儲。我知道這一點,因爲當我在開發計算機上運行Controller.exe時,它會生成轉儲文件,我可以成功打開它並在源代碼中查看崩潰行。

但是,在由TeamCity服務器生成的exepdb的情況下,我無法調試轉儲。當我在visual studio 2015中打開轉儲文件並嘗試到Debug with Native Only時,它表示pdb未加載。

我搜索了一下,檢查pdb文件是否正確。於是我下載了Debugging Tools for windows其中symchk.exe

當我運行symchk.exe它提供了以下錯誤:

SYMCHK: Controller.exe FAILED - Controller.pdb mismatched or not found 

SYMCHK: FAILED files = 1 
SYMCHK: PASSED + IGNORED files = 0 

Controller.pdb是在同一個目錄,我複製從TeamCity服務器生成的exe

我在這裏錯過了什麼嗎?

+0

什麼是二進制的文件大小?我們在這裏講的是本地C++還是.NET程序集?這是一個奇怪的錯誤,它幾乎聽起來像.pdb由於複製錯誤或雙寫錯誤而被切碎。 –

+0

@ justin.m.chase'exe'大約2MB,'pdb'大約15MB – Monku

+1

請看看時間戳記。也許構建已被更改爲不生成調試數據庫,並且您正在複製過時的pdb。 – IInspectable

回答

0

我能解決這個問題。問題在於該項目的原始作者已將pdb簽入到SVN存儲庫中,其中TeamCity正在構建中。因此,生成的exepdb不匹配。根據MSDN文檔,我們必須使用exe版本生成期間生成的pdb

使用在生成exe期間生成的pdb,我能夠調試dump文件。

,幫助我理解pdb文件的一個重要環節是:https://www.wintellect.com/pdb-files-what-every-developer-must-know

相關問題