未加載pdb文件解決方法 無法查找或打開pdb文件( 二 )


這并不是說您必須擁有PDBs和二進制部署來獲得關于異常的額外信息 。同樣可以使用符號服務器和源索引來實現,我將在下面的主題中討論 。
和PDB安全風險嗎?
任何使用DLL/EXE的人都可以很容易地進行反向工程,使用諸如反射器之類的工具來生成帶有或不帶PDB的源代碼 。因此,在這種情況下,不提供PDB將不會有多大幫助 。
如果PDB被部署,并且用戶無法訪問二進制文件,那么向他們顯示堆棧跟蹤信息并讓他們知道應用程序的內部信息不是一個好主意 。
Symbol Server
符號服務器
符號服務器用來存儲被調試器所知道的pdb文件,可以用來查找更詳細的調用堆棧信息 。
我們可以使用symstore.exe設置自己的符號服務器,它允許調試器找到與二進制相關的實際PDB 。symstore.exe包含在窗口包的調試工具中 。
微軟還保留了符號服務器,我們可以通過從微軟的符號服務器加載PDBs來使用它 。
如何以及為什么加載微軟符號存儲?
當您在debug點和open Modules窗口停止執行時(如下所示),您將會發現所有的dll(外部或內部)加載到該斷點之前,但是默認情況下的符號狀態將顯示“無法找到或打開pdb文件”,除了您的pdb 。這些是Microsoft BCL二進制文件,因為我們的調試器找不到相關的PDBs,所以沒有加載 。

未加載pdb文件解決方法 無法查找或打開pdb文件

文章插圖
要加載這些符號,可以去Debugging->Symbols,并檢查微軟的符號服務器,并將緩存符號作為任何共享文件夾在這個目錄中提供,以便所有的開發人員都可以使用它 。
由于這些二進制文件是您的應用程序之外的,所以您還需要在Debugging->General 菜單中取消 “Enable just my Code”。
在下面的截圖中,您可以看到我已經加載了符號,現在符號的狀態顯示了“Symbols loaded” 。
未加載pdb文件解決方法,無法查找或打開pdb文件 。小編來告訴你更多相關信息 。
無法查找或打開pdb文件
未加載pdb文件解決方法 無法查找或打開pdb文件

文章插圖
這怎么有用呢?
您可以在代碼中放置斷點,并在沒有加載符號的情況下查看調用堆棧 。
下圖顯示了沒有加載符號的調用堆棧,它只是將我的方法和BCL的方法顯示為[外部代碼] 。
未加載pdb文件解決方法 無法查找或打開pdb文件

文章插圖
在加載了這些符號之后,調用棧將在斷點之前顯示所有的方法調用(參見下圖) 。當我們想知道調用的外部方法是什么時,它當然是有幫助的,這樣它就可以使用反射器或調試拆解來分析,而在我們的應用程序中,由于外部代碼而導致某些行為更改的任何特定問題 。
未加載pdb文件解決方法 無法查找或打開pdb文件

文章插圖
與符號服務器一樣,也有稱為源服務器的東西,用于檢索用于構建任何特定應用程序的源文件的確切版本 。在構建時,二進制文件可以被索引,并且該信息存儲在PDB文件中,它幫助源服務器找到確切的源文件 。
您可以檢查MSDN了解更多關于符號和源存儲 。
PDB文件是微軟專有格式的文件,也沒有提供什么文檔詳細介紹 。因為微軟并未公布PDB內部細節,所以對于這個文件一直是一個迷 。
上述就是無法查找或打開pdb文件 跟 未加載pdb文件解決方法的電腦IT小方法,供您全面了解參考!

推薦閱讀