いくつかのWindowsヘッダーファイルをDelphiに翻訳しています。関連するC構造体の配置を確認するには、特定のPDBファイルをダンプして、関連するタイプ情報を確認する必要があります。これを行うために、PdbXtractを使用しようとしましたが、このツールでは、検査するPDBファイルを選択するように求められます。どのPDBファイルに目的の構造体定義が含まれているのかを知るにはどうすればよいですか?
2 に答える
SysInternals(現在はMS)のstrings.exeコマンドラインユーティリティを使用します。シンボルフォルダで次strings -s . | findstr /i critical_section
のコマンドを実行すると、興味深い出力がたくさん得られました。
C:\debuggers-v6.12.2.633-x86\sym\verifier.pdb\8878279C450C4F4DA6B252A4B824B4981\verifier.pdb: _RTL_CRITICAL_SECTION
C:\debuggers-v6.12.2.633-x86\sym\verifier.pdb\8878279C450C4F4DA6B252A4B824B4981\verifier.pdb: U_RTL_CRITICAL_SECTION@@
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: _RTL_CRITICAL_SECTION
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: U_RTL_CRITICAL_SECTION@@
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: _RTL_CRITICAL_SECTION_DEBUG
16進エディターを使用してPDBファイルを調査した後、grepのようなツールを使用して次の正規表現パターンを含むPDBファイル名を検索することにより、目的の構造体定義が含まれているPDBファイルを特定します。
\x15\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_Struct_Name\x00