vs2010 無法找到調試信息 或者調試信息不匹配

在visual裏找到pdb相關的配置選項,共2個如下:

configuration property->c/c++->output files->program database file name

這是編譯時產生的pdb文件的輸出位置,vs在編譯後會將該位置符合$(TargetName).pdb格式的文件複製到configuration property->general的output directory目錄中(不知道是哪裏的設置起作用),作爲運行時debug信息。不過這一pdb文件包含的信息包括類型信息,但不包括函數定義等符號信息。因此,即使每個源文件都包含公共頭文件(如 <windows.h>),這些頭文件中的 typedef 也只存儲一次,而不是在每個 OBJ 文件中都存在(見下面的定義)。因此這個pdb文件是不足以做調試之用的。

configuration property->linker->debugging->generate program database file

這是鏈接時鏈接器產生的pdb文件的輸出位置,它包含項目的 EXE 文件的調試信息。該 文件包含完整的調試信息(包括函數原型),而不僅僅是在 上一個.PDB 中找到的類型信息。

這兩個 PDB 文件都允許增量更新。鏈接器還在其創建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路徑。

對照項目配置,很快發現問題所在。output files->program database file name裏設置的文件名符合$(TargetName).pdb的格式,因此被複制到output directory目錄中,而linker->debugging->generate program database file設置的文件名也剛好是這個位置,因此就沒有被複制進來,所以“鵲巢鳩佔”引起的後果是,包含完整調試信息的9mb大的pdb文件沒有被如約創建,而1mb大的pdb文件被錯誤的複製倒了不該放的地方,自然.exe文件就找不到debug信息了。

 

 

配置屬性->c/c++->常規->調試信息格式:改爲”用於‘編輯並繼續’的程序數據庫(/ZI)“;

配置屬性->c/c++->優化->優化:改爲“已禁用(/Od)";

配置屬性->c/c++->優化->全程優化:改爲”否“;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章