關於VS2010的除錯資訊即 pdb檔案

2021-05-26 07:01:59 字數 2131 閱讀 2469

'importexport.exe': loaded 'c:/program files/autodesk/fbx/fbxsdk/2012.1/bin/importexport/win32/net2010/debug/importexport.exe', cannot find or open the pdb file

即找不到pdb檔案,因此無法除錯。

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

這是編譯時產生的pdb檔案的輸出位置,vs在編譯後會將該位置符合$(targetname).pdb格式的檔案複製到configuration property->general的output directory目錄中(不知道是**的設定起作用),作為執行時debug資訊。不過這一pdb檔案包含的資訊包括型別資訊,但不包括函式定義等符號資訊。因此,即使每個原始檔都包含公共標頭檔案(如 ),這些標頭檔案中的 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資訊了。

以下作為參考:

visual c+中的pdb檔案及其作用

程式資料庫 (pdb) 檔案儲存著除錯和專案狀態資訊,使用這些資訊可以對程式的除錯配置進行增量鏈結。當以 /zi 或 /zi(用於 c/c++)生成時,將建立乙個 pdb 檔案。

在 visual c++ 中,/fd 選項用於命名由編譯器建立的 pdb 檔案。當使用嚮導在 visual studio 中建立專案時,/fd 選項被設定為建立乙個名為 project.pdb 的 pdb。

如果使用生成檔案建立 c/c++ 應用程式,並指定 /zi 或 /zi 而不指定 /fd 時,則最終將生成兩個 pdb 檔案: 

vc80.pdb (更籠統地說就是 vcx0.pdb,其中 x 表示 visual c++ 的版本。)該檔案儲存各個 obj 檔案的所有除錯資訊並與專案生成檔案駐留在同乙個目錄中。

project.pdb 該檔案儲存 .exe 檔案的所有除錯資訊。對於本機 c/c++**,它駐留在 /debug 子目錄中。對於託管**,它駐留在 /windebug 子目錄中。

每當建立 obj 檔案時,c/c++ 編譯器都將除錯資訊合併到 vcx0.pdb 中。插入的資訊包括型別資訊,但不包括函式定義等符號資訊。因此,即使每個原始檔都包含公共標頭檔案(如 ),這些標頭檔案中的 typedef 也只儲存一次,而不是在每個 obj 檔案中都存在。

鏈結器將建立 project.pdb,它包含專案的 exe 檔案的除錯資訊。project.pdb 檔案包含完整的除錯資訊(包括函式原型),而不僅僅是在 vcx0.pdb 中找到的型別資訊。這兩個 pdb 檔案都允許增量更新。鏈結器還在其建立的 .exe 或 .dll 檔案中嵌入 .pdb 檔案的路徑。

visual studio 偵錯程式使用 exe 或 dll 檔案中的 pdb 路徑查詢 project.pdb 檔案。如果偵錯程式在該位置無法找到 pdb 檔案或者如果路徑無效(例如,如果專案被移動到了另一台計算機上),偵錯程式將搜尋包含 exe 的路徑,即在「選項」對話方塊(「除錯」資料夾,「符號」節點)中指定的符號路徑。偵錯程式不會載入與所除錯的二進位制不匹配的 pdb。

VS2010遠端除錯

一 應用場景 bug在本機環境下不可再現,但在另外一台遠端機器上可以再現。二 準備 1.假設本機名為a機,遠端機名為b機 2.在b機上安裝vs2010,同時在目錄 microsoft visual studio10.0 common7 ide remote debugger x86 注 為vs的安裝...

vs2010遠端除錯

vs2010遠端除錯,工作使用到,通過網上的部落格學習了,使用成功。但是過程中也遇到了一點小問題,所以記錄下來,希望能幫到有需要的朋友。vs2010遠端除錯,在本地端除錯遠端端的程式,步驟如下 第一步 在本地端,你的vs安裝目錄下 microsoft visual studio 10.0 commo...

vs2010斷點除錯技巧

如何設定條件斷點 設定條件斷點非常容易。在特定的行上,按f9設定斷點。然後右擊斷點 編輯視窗左側的紅點,在上下文選單上選擇 condition 記錄到達斷點次數 有時你希望,只有當第n次滿足條件的執行到達斷點時,才中斷程式執行。例如 當第五次返回少於10份晚餐的查詢結果時,中斷程式執行。可以通過右擊...