Share via


PEReader.TryOpenAssociatedPortablePdb 方法

定義

開啟與此 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 檔案的目錄中。

pdbFileStreamProvider
Func<String,Stream>

如已指定,呼叫即可開啟指定檔案路徑的 Stream。 提供者應會傳回可讀取和可搜尋的 Stream,如果目標檔案不存在,或因某些原因而忽略,則傳回 null。 如果提供者因未預期的 IO 錯誤而無法開啟檔案,則應該擲回 IOException

pdbReaderProvider
MetadataReaderProvider

如果成功,則會使用 的新實例 MetadataReaderProvider 來讀取可攜式 PDB。

pdbPath
String

如果成功,且在檔案中找到 PDB,則為檔案路徑;如果 PDB 內嵌於 PE 映像本身,則為 null

傳回

如果 PE 映像具有與其建立關聯的 PDB,且已成功開啟此 PDB,則為 true;否則為 false

例外狀況

peImagePathpdbFileStreamProvidernull

pdbFileStreamProvider 傳回的資料流不支援讀取及搜尋作業。

找不到相符的 PDB 檔案,因為發生錯誤:PE 映像或 PDB 無效。

因為發生錯誤,找不到相符的 PDB 檔案:讀取 PE 映射或 PDB 時發生 IO 錯誤。

備註

此方法會根據PE映像偵錯目錄的內容,實作簡單的 PDB 檔案查閱。 更複雜的工具可能需要追蹤搜尋路徑或符號伺服器的其他查閱。

方法會依下列順序查看 PDB:

  1. 檢查包含PE檔案之目錄中CodeView項目中名稱的相符 PDB 檔案, () 目錄 peImagePath
  2. 檢查內嵌在PE映像本身中的 PDB。

會傳回符合偵錯目錄所指定資訊的第一個 PDB。

適用於