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 映像的路径。 该路径用于查找位于包含 PE 文件的目录中的 PDB 文件。
如果已指定,则调用以打开给定文件路径的 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。