PDB是什么文件?很多開發人員發現在生成類庫項目時除了生成dll文件外,還會生成一個同名的pdb文件,它是一個程序數據庫文件,保存著調試和項目狀態信息,使用這些信息可以對程序的調試配置進行增量鏈接。 理解:pdb文件包含了編譯后程序指向源代碼的位置信息,用于調試的時候定位到源代碼,主要是用來方便調試的。如果你對pdb是什么文件還不是很清楚,可以閱讀下面的文章,還有pdb數據庫文件怎么打開。
pdb是什么文件?
大部分的開發人員應該都知道PDB文件是用來幫助軟件的調試的。但是他究竟是如何工作的呢,我們可能并不熟悉。本文描述了PDB文件的存儲和內容。同時還描 述了debugger如何找到binay相應的PDB文件,以及debugger如何找到與binay對應的源代碼文件。本文適用于所有的Native和 Managed的開發人員。
在開始前,我們先定義2個術語:private build, 用來表示在開發人員自己機器上生成的build;public build,表示在公用的build機器上生成的build。private build相對來說比較簡單,因為PDB和binay在相同的地方,通常地我們遇到的問題都是關于public build。
所有的的開發人員需要知道的最重要的事情是”PDB文件跟源代碼同樣的重要“, 沒有PDB文件,你甚至不能debugging。對于public build,需要symbol server存儲所有的PDB,然后當用戶報告錯誤的時候,debugger才可以自動地找到binay相應的PDB文件, visual studio 和 windbg都知道如何訪問symbol server。在將PDB和binay存儲到symbol server前,還需要對PDB運行進行source indexing, source indexing的作用是將PDB和source關聯起來。
接下來的部分假設有已經設置好了symbol server和source server indexing。TFS2010中可以很簡單地完成對一個新的build的source indexing 和 symbol server copying。
pdb數據庫文件怎么打開?
正式開始PDB的內容,PDB不是公開的文件格式,但是Microsoft提供了API來幫助從PDB中獲取數據。
Native C++ PDB包含了如下的信息:
* public,private 和static函數地址;
* 全局變量的名字和地址;
* 參數和局部變量的名字和在堆棧的偏移量;
* class,structure 和數據的類型定義;
* Frame Pointer Omission 數據,用來在x86上的native堆棧的遍歷;
* 源代碼文件的名字和行數;
.NET PDB只包含了2部分信息:
* 源代碼文件名字和行數;
* 和局部變量的名字;
* 所有的其他的數據都已經包含在了.NET Metadata中了;
如何在生成類庫項目時不生成pdb文件?
打開類庫項目屬性頁面→切換到生成選項卡→點擊高級按鈕→將調試信息一項設置為none
以上就是關于PDB文件的一些相關信息了,希望以上教程對大家有幫助。