2015-07-21 48 views
1

我在MSVS 2013中有一個C++項目,這會在調試時導致問題:每當我運行一個調試會話時,出現一個消息框,顯示「沒有調試信息 - 'xy.exe'的調試信息找不到或不匹配,無法找到PDB文件,是否要繼續調試?「這是一個普遍的問題,這個問題曾多次提出過,但是,迄今爲止我發現的答案都不適用於我的案例。「沒有調試信息」,但它就在那裏

  1. 項目屬性 - >配置屬性 - > C/C++ - > 優化 - >優化是禁用
  2. 項目屬性 - >配置屬性 - >鏈接器 - >調試 - >生成調試信息被打開
  3. 路徑和文件名是正確的; Project Properties - > Configuration Properties - > Linker - > Debugging - > Generate Program Database File is「$(OutDir)$(TargetName).pdb」(Output File is「$(OutDir)$(TargetName)$(TargetExt)」,所以這裏也沒有配置錯誤)
  4. 我試着手動刪除文件,重新啓動Visual Studio,清理和重建。從文件時間戳我看到它確實是剛剛創建的PDB文件,並且exe和pdb都被構建到相同的文件夾並被正確命名。
  5. 有人建議重新檢查任務管理器,看看devenv.exe是否仍在後臺運行 - 的確如此。我殺了它,刪除了PDB文件,重新啓動,清理,重建,沒有運氣。
  6. 我將啓動項目切換到另外一個,並作爲海報建議[1]。沒有運氣。
  7. 當主項目的本地PDB文件與整個可執行文件的最終PDB文件具有相同的名稱時,有人報告有此問題[2]。這裏不是這種情況。
  8. 當我打開模塊窗口[3]時,我看到對於我的exe,在「符號狀態」列中,它顯示「無法找到或打開PDB」文件。當我嘗試右鍵單擊 - >加載符號時,我發現它們就在那裏(例如xy.exe的xy.pdb)。當我選擇它們時,消息框會顯示「在此文件夾中找不到加工符號文件」。

有趣的是,該解決方案中沒有任何項目可以工作。但是,其他項目沒有任何問題。我嘗試將項目屬性中的每個設置與可以工作的設置進行比較,但我找不到任何區別。

還有什麼想法?

[1] https://stackoverflow.com/a/15378106/4508058

[2] https://stackoverflow.com/a/21640745/4508058

[3] https://stackoverflow.com/a/540599/4508058

+0

當你在調試器中啓動你的應用程序(只是忽略你目前沒有調試信息),你的'輸出窗口' ?其中一行應該說「加載whatever.exe」,以及是否可以找到調試信息的狀態。請注意正在加載的完整路徑,並確保它是正在運行的正確可執行文件。 – PaulMcKenzie

+0

您的可執行文件是否以不同的用戶身份提升或運行?這聽起來像調試器/可執行文件*真的無法打開* pdb文件,這聽起來像一個文件/目錄權限問題給我。 –

+0

@PaulMcKenzie:謝謝。它寫道「無法找到或打開PDB文件」。二進制路徑是正確的。 – iko79

回答

0

++也編譯C需要生成調試方式/紫。如果這也設置了,請使用帶有!sym噪聲的windbg來查看它試圖加載符號的位置。

+0

謝謝,不知道WinDgb。符號搜索路徑是正確的。輸出爲: ***錯誤:無法找到符號文件。默認爲導出ntdll.dll的符號 - – iko79

1

好吧,給未來的讀者一個提示:現在它終於工作了。我注意到該項目與另一個項目共享它的中間目錄。但是,只是改變這一點,清理,重建,甚至手動刪除中間目錄都無濟於事。但是在一些構建之後,它終於起作用了,所以它可能與它有關(?)。所以我沒有問題的絕對解決方案,但也許有幫助。 (LNK1209:程序數據庫'D:\ work-coding- \ Projects \ vrtheater \ LoadingApp \ bin \ LoadingAppD。我有時仍然會收到我在上面評論中提到的鏈接程序錯誤。pdb'),所以仍然可能有錯誤...

相關問題