2012-06-26 46 views
9

.NET dll文件中的PDB文件是什麼?它的功能是什麼?通常人們在部署時只刪除這個文件,只保留lib文件夾中的dll文件,但似乎什麼也沒有發生,一切正常......什麼是PDB文件?

那麼,什麼是PDB文件呢?

+1

請參閱[管理符號和源代碼](http://msdn.microsoft.com/zh-cn/library/ms241613)討論程序數據庫文件。 –

回答

12

程序數據庫文件與增量鏈接和項目狀態無關! PDB文件用於映射EXE和SOURCES。它們用於調試和發佈二進制文件。 Here an article,它解釋了可執行映像和其PDB文件之間的綁定關係

+0

本文(http://www.codeproject.com/Articles/37883/ Symbols-File-Locator)也解決了這個問題 – mox

+0

因此,如果我的中間層上有一個配置文件,包含綁定,端點,安全等等......那麼它會引用pdb? –

0

在.NET中,它大多隻保留局部變量的符號信息(並且範圍信息也是IIRC)。

+0

你可以詳細說明符號嗎? –

7

PDB文件存儲允許您調試應用程序的信息。

這些文件通常沒有部署的原因是通常不需要運送它們。如果您想調試應用程序,您可以隨時從目錄,網絡共享或符號服務器加載它們。

+0

+1票。感謝您的回答,但我無法將所有答案都標記爲正確。 –

1

程序數據庫(PDB)文件保存調試和項目狀態信息,使你的程序的調試配置的增量鏈接。使用/ debug編譯帶/ ZI或/ Zi或Visual Basic/C#/ JScript .NET程序的C/C++程序時會創建PDB文件。 每次創建OBJ文件時,C/C++編譯器都會將調試信息合併到VCx0.PBD中。插入的信息包括類型信息,但不包括符號信息,如函數定義。因此,即使每個源文件都包含常見的頭文件(例如,來自這些頭文件的typedef僅存儲一次,而不是存儲在每個OBJ文件中)。

+2

這是不正確的! PDB與項目狀態信息和增量鏈接無關。 PDB確實包含定義等符號。從mox下面看到更多細節。 – mox

+1

看起來像複製粘貼https://msdn.microsoft.com/en-us/library/yd4f8bd1(vs.71).aspx – michaelmsm89