私は DbGHelp API の奇妙な動作に直面しており、説明の理論さえ見つけることができません。PDB ファイル (DLL 用、インターネットからダウンロード) があり、PDB ファイル内の特定のシンボルを探しています。これを行うための 4 つのオプションを試します。
- TYPEINFODUMPのビルド済みの新しいダウンロード済みコピー。
- 1年半前に自分でダウンロードしてビルドしたTYPEINGODUMPのコピー(Visual Studio 10 および Windows SDK 7.0 を使用して Windows 8.1 でビルド)。
- #2と同じソースですが、現在再構築されています(Visual Studio 10およびWindows SDK 7.0を搭載したWindows 10)。
- 私自身のコード: SymInitialize()、SymLoadModule64()、および SymEnumSymbols() のかなり単純なシーケンス (Visual Studion 10 および Windows SDK 7.0 を使用して Windows 10 でビルド)。
これらのオプションはすべて Windows 10 で使用され、オプション #1 (dbghelp.dll バージョン 6.3.0017.0 の独自のコピーをもたらす) を除いて、同じ dbghelp.dll がすべてのオプション (チェック済み; 10.0.14321.1024) によって読み込まれます。
これで、必要なシンボルがすべての場合に見つかりました。それにもかかわらず、オプション #1、#3、および #4 は、このシンボルを TypeIndex=0、Size=0、Tag=SymTagPublicSymbol で報告しますが、これは正しくありません。オプション #2 のみが TypeIndex=2、Size=295、Tag=SymTagFunction のシンボルを報告しますが、これは実際には正しいです。いくつかのコード (私のものであろうとなかろうと) をコンパイルして正しいシンボル情報を取得しようとしたすべての試みは、今では何も終了しませんでした。少し前にビルドしたTYPEINFODUMPだけが正しい結果をもたらします。私は絶対に絶望しています。この状況の論理的な説明はありますか? 私は何を逃すかもしれませんか?