对PDB信息的查询不一致(SymEnumSymbols)

时间:2018-06-17 14:02:08

标签: windows debug-symbols dbghelp

我面临DbGHelp API的奇怪行为,我甚至找不到解释理论。我有一些PDB文件(用于DLL;从Internet下载),我正在寻找PDB文件中的特定符号。我尝试了四种选择:

  1. TYPEINFODUMP;
  2. 的新预制下载副本
  3. 我自己一年半前下载并构建的TYPEINGODUMP的副本(在Windows 8.1上使用Visual Studio 10和Windows SDK 7.0构建);
  4. 与#2相同的来源,但现在重建(Windows 10使用Visual Studion 10和Windows SDK 7.0);
  5. 我自己的代码:一个非常简单的SymInitialize(),SymLoadModule64()和SymEnumSymbols()(在Windows 10上构建,带有Visual Studion 10和Windows SDK 7.0)。
  6. 所有这些选项都在Windows 10上使用,并且所有这些选项都加载了相同的dbghelp.dll(已检查; 10.0.14321.1024),但选项#1除外(它带有自己的dbghelp.dll版本6.3.0017.0)

    现在,在所有情况下都可以找到所需的符号。然而,选项#1,#3和#4报告此符号的TypeIndex = 0,Size = 0和Tag = SymTagPublicSymbol,这是不正确的。只有选项#2报告带有TypeIndex = 2,Size = 295和Tag = SymTagFunction的符号,这确实是正确的。我所有尝试使用一些代码(我的或不编译)获取正确的符号信息现在都没有结束。我前一段时间才建立的TYPEINFODUMP只会带来正确的结果。我绝对绝望。这种情况有合理的解释吗?我可能会错过什么?

0 个答案:

没有答案