PDBExplorer是一款能夠幫助用戶查詢.pdb為后綴的文件中內(nèi)容的軟件,通過PDBExplorer用戶能夠?qū)δ硞€.pdb文件進行快速的關(guān)鍵詞檢索,軟件能夠查詢到文件中的符號名稱和所有的地址信息,是一款開發(fā)會用到的工具。
功能介紹
1. 查看pdb文件頭信息,可以修改名稱,模擬器不支持中文PDB名稱文件使用此功能修改比較方便;
2. 查看所有記錄,并顯示各個記錄的偏移地址、長度、屬性、標識等信息;
3. 記錄可以分文本方式、十六進制單記錄以及瀏覽全部方式查看,并可以快速定位;
使用方法
一、下載打開軟件,導(dǎo)入.pdb文件。
二、點擊打開文件可以看到.pdb文件中的符號名稱。
常見問題
什么是PDB文件?
大部分的開發(fā)人員應(yīng)該都知道PDB文件是用來幫助軟件的調(diào)試的。但是他究竟是如何工作的呢,我們可能并不熟悉。本文描述了PDB文件的存儲和內(nèi)容。同時還描 述了debugger如何找到binay相應(yīng)的PDB文件,以及debugger如何找到與binay對應(yīng)的源代碼文件。本文適用于所有的Native和 Managed的開發(fā)人員。
在開始前,我們先定義2個術(shù)語:private build, 用來表示在開發(fā)人員自己機器上生成的build;public build,表示在公用的build機器上生成的build。private build相對來說比較簡單,因為PDB和binay在相同的地方,通常地我們遇到的問題都是關(guān)于public build。
所有的的開發(fā)人員需要知道的最重要的事情是”PDB文件跟源代碼同樣的重要“, 沒有PDB文件,你甚至不能debugging。對于public build,需要symbol server存儲所有的PDB,然后當用戶報告錯誤的時候,debugger才可以自動地找到binay相應(yīng)的PDB文件, visual studio 和 windbg都知道如何訪問symbol server。在將PDB和binay存儲到symbol server前,還需要對PDB運行進行source indexing, source indexing的作用是將PDB和source關(guān)聯(lián)起來。
接下來的部分假設(shè)有已經(jīng)設(shè)置好了symbol server和source server indexing。TFS2010中可以很簡單地完成對一個新的build的source indexing 和 symbol server copying。
二 PDB文件的內(nèi)容
正式開始PDB的內(nèi)容,PDB不是公開的文件格式,但是Microsoft提供了API來幫助從PDB中獲取數(shù)據(jù)。
Native C++ PDB包含了如下的信息:
* public,private 和static函數(shù)地址;
* 全局變量的名字和地址;
* 參數(shù)和局部變量的名字和在堆棧的偏移量;
* class,structure 和數(shù)據(jù)的類型定義;
* Frame Pointer Omission 數(shù)據(jù),用來在x86上的native堆棧的遍歷;
* 源代碼文件的名字和行數(shù);
.NET PDB只包含了2部分信息:
* 源代碼文件名字和行數(shù);
* 和局部變量的名字;
* 所有的其他的數(shù)據(jù)都已經(jīng)包含在了.NET Metadata中了;