我在我的C++應用程序上使用VS2015調試器。當我啓動應用程序時,調試器給出消息PDB不匹配.exe
Loaded 'C:\MyDir\Working\x64\Debug\MyApp.exe'. Cannot find or open the PDB file
因此,我無法設置斷點。
根據VS調試器以及WidDBG Symchk的說法,在.exe的同一目錄下有一個.pdb文件,但它不匹配。 Symchk不提供不匹配的原因,即使使用/ v選項也是如此。
完全重建不會使此問題消失。它只發生在調試版本,並且今天剛剛開始。在今天之前,對於調試或發佈版本,不匹配的pdb是沒有問題的。
我使用的VS選項有:
- C++:調試信息格式=程序數據庫(/ ZI)程序數據庫文件名= $(IntDir)%(文件名).PDB;
- 鏈接器:生成調試信息=優化調試(/ DEBUG),生成程序數據庫文件= $(OutDir)MyApp.pdb,生成完整的程序數據庫文件=是。
單個對象的pdb文件出現在中間目錄中,MyApp.pdb和MyApp.exe一起出現在輸出目錄中。
現在,這裏是一個奇怪的部分:當刪除現有的MyApp.pdb然後重新鏈接時,新的.pdb文件出現在當前mod時間的輸出目錄中。鏈接器運行時,pdb文件會變大(〜70 MB),但當鏈接器完成時,pdb文件會突然變小(〜4 MB),並且mod時間現在會在幾個小時之前更改。這是非常可疑的,可能會導致pdb不匹配。
鏈接器的最終輸出線
我怎麼能強迫VS產生的調試版本匹配和正確的PDB文件?