gpt4 book ai didi

c# - 来自 Microsoft 的 Dia2Lib 的 0x806D0005 的 HRESULT

转载 作者:行者123 更新时间:2023-11-30 16:33:50 26 4
gpt4 key购买 nike

我正在尝试将 PDB 文件读入 C# 应用程序。当我使用已知存在的文件调用 loadDataFromPdbloadAndValidateDataFromPdb 时,我得到的 HRESULT 为 0x806D0005。不幸的是,我不知道那是什么意思。我在 [此处](http://msdn.microsoft.com/en-us/library/2008hf0e(v=VS.80).aspx) 列出了可能的结果,但恐怕我无法最终确定问题所在。

有人知道我做错了什么吗?或者至少是一种检查对应内容的方法?

异常:System.Runtime.InteropServices.COMException (0x806D0005):HRESULT 异常:0x806D0005 在 Dia2Lib.DiaSourceClass.loadDataFromPdb(字符串 pdbPath)

代码示例:

public static void LoadSymbolsForModule(uint baseAddress, uint size, uint timeStamp, DM_PDB_SIGNATURE signature)
{
IDiaDataSource m_source = new DiaSourceClass();
//m_source.loadAndValidateDataFromPdb(signature.path, ref signature.guid, 0, signature.age);
m_source.loadDataFromPdb(signature.path);
IDiaSession m_session;
m_source.openSession(out m_session);
m_session.loadAddress = baseAddress;
modules.Add(new Module(baseAddress, size, m_session));
}

在此先感谢各位。这个问题困扰了我一整天。

最佳答案

搜索 E_PDB_NOT_FOUND const 在 google 代码上找到源代码 dia2.h ,确认 0x806D0005 是 E_PDB_NOT_FOUND。

E_PDB_OK            = ( HRESULT  )(( ( ( ( unsigned long  )1 << 31 )  | ( ( unsigned long  )( LONG  )0x6d << 16 )  )  | ( unsigned long  )1 ) ),
E_PDB_USAGE = ( E_PDB_OK + 1 ) ,
E_PDB_OUT_OF_MEMORY = ( E_PDB_USAGE + 1 ) ,
E_PDB_FILE_SYSTEM = ( E_PDB_OUT_OF_MEMORY + 1 ) ,
E_PDB_NOT_FOUND = ( E_PDB_FILE_SYSTEM + 1 ) ,

请注意,您正在使用的函数的签名采用 LPCOLESTR,这是一个 unicode 字符串。确保在接口(interface)声明中正确编码字符串,即:

Int32 loadDataFromPdb ( [MarshalAs(UnmanagedType.LPWStr)] string pdbPath );

msdn documentation也意味着如果文件存在,如果它“确定文件具有无效格式”,则将返回该错误。我怀疑这是实际问题,但如果您以某种非标准方式生成该 pdb 文件,则问题可能出在 pdb 文件本身。

搜索 hresult 和 E_PDB_NOT_FOUND 发现有人遇到了 same problem .看起来他们的问题是由于资源消耗,即太多的 pdb 被加载或没有被正确释放。该 hresult 和该错误名称的其他搜索结果似乎支持此错误是由于其他加载 pdb 失败而引发的可能性,例如 pdb 太大。

希望这对您有所帮助。 :)

关于c# - 来自 Microsoft 的 Dia2Lib 的 0x806D0005 的 HRESULT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com