PDB檔案格式概述

2021-06-16 11:00:44 字數 1683 閱讀 4847

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如何工作

在你開啟了development模式後,如果devpath沒有定義或路徑不存在的話會導致程式啟動時異常"invalid value for registry"。而且如果在machine.config中開啟devpath的使用會影響其他的所有的程式,所以要慎重使用machine.config。

最後開發人員需要知道的是源**資訊是如何儲存在pdb檔案中的。對於public builds,在執行source indexing tool後,版本控制工具將**儲存到你設定的**cache中。對於private builds,只是儲存了pdb檔案的全路徑,例如在c:\foo下的原始檔mycode.cpp,在pdb檔案中儲存的路徑為c:\foo\mycode.cpp。對於private builds可以使用虛擬盤來增加pdb對絕對路徑的依賴,例如可以使用subst.exe將源**路徑掛載為v:,在別人的機器上debug的時候也掛載v:。

完! 感謝,thanks!

蛋白PDB檔案格式

列 資料型別 欄位名稱 定義描述 1 6 record name dbref 8 11 idcode idcode 記錄的id號 13 character chainid 鏈的識別符號 15 18 integer seqbegin pdb序列片段的起始序列號 19 achar insertbegin...

Oracle 控制檔案格式ctl檔案格式

options skip 1,errors 10 load data characterset zhs16gbk infile into table table name truncate fields terminated by optionally enclosed by trailing nu...

檔案格式 gff格式

gff檔案格式 gff格式是 sanger 研究所定義,是一種簡單的 方便的對於 dna rna以及蛋白質序列的特徵進行描述的一種資料格式,已經成為序列注釋的通用格式,比如基因組的基因 許多軟體都支援輸入或者輸出gff格式。前格式定義的最新版本是版本3。原始定義見 song websitegff是存...