PEReader.TryOpenAssociatedPortablePdb 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開啟與此 PE 映像建立關聯的可攜式 PDB。
public:
bool TryOpenAssociatedPortablePdb(System::String ^ peImagePath, Func<System::String ^, System::IO::Stream ^> ^ pdbFileStreamProvider, [Runtime::InteropServices::Out] System::Reflection::Metadata::MetadataReaderProvider ^ % pdbReaderProvider, [Runtime::InteropServices::Out] System::String ^ % pdbPath);
public bool TryOpenAssociatedPortablePdb (string peImagePath, Func<string,System.IO.Stream?> pdbFileStreamProvider, out System.Reflection.Metadata.MetadataReaderProvider? pdbReaderProvider, out string? pdbPath);
public bool TryOpenAssociatedPortablePdb (string peImagePath, Func<string,System.IO.Stream> pdbFileStreamProvider, out System.Reflection.Metadata.MetadataReaderProvider pdbReaderProvider, out string pdbPath);
member this.TryOpenAssociatedPortablePdb : string * Func<string, System.IO.Stream> * MetadataReaderProvider * string -> bool
Public Function TryOpenAssociatedPortablePdb (peImagePath As String, pdbFileStreamProvider As Func(Of String, Stream), ByRef pdbReaderProvider As MetadataReaderProvider, ByRef pdbPath As String) As Boolean
參數
- peImagePath
- String
PE 映像的路徑。 路徑是用來尋找 PDB 檔案,此檔案位於包含 PE 檔案的目錄中。
如已指定,呼叫即可開啟指定檔案路徑的 Stream。 提供者應會傳回可讀取和可搜尋的 Stream,如果目標檔案不存在,或因某些原因而忽略,則傳回 null
。 如果提供者因未預期的 IO 錯誤而無法開啟檔案,則應該擲回 IOException。
- pdbReaderProvider
- MetadataReaderProvider
如果成功,則會使用 的新實例 MetadataReaderProvider 來讀取可攜式 PDB。
- pdbPath
- String
如果成功,且在檔案中找到 PDB,則為檔案路徑;如果 PDB 內嵌於 PE 映像本身,則為 null
。
傳回
如果 PE 映像具有與其建立關聯的 PDB,且已成功開啟此 PDB,則為 true
;否則為 false
。
例外狀況
peImagePath
或 pdbFileStreamProvider
為 null
。
自 pdbFileStreamProvider
傳回的資料流不支援讀取及搜尋作業。
找不到相符的 PDB 檔案,因為發生錯誤:PE 映像或 PDB 無效。
因為發生錯誤,找不到相符的 PDB 檔案:讀取 PE 映射或 PDB 時發生 IO 錯誤。
備註
此方法會根據PE映像偵錯目錄的內容,實作簡單的 PDB 檔案查閱。 更複雜的工具可能需要追蹤搜尋路徑或符號伺服器的其他查閱。
方法會依下列順序查看 PDB:
- 檢查包含PE檔案之目錄中CodeView項目中名稱的相符 PDB 檔案, () 目錄
peImagePath
。 - 檢查內嵌在PE映像本身中的 PDB。
會傳回符合偵錯目錄所指定資訊的第一個 PDB。