Windows 8 ユーザー マシンでのみ発生する Qt でのクラッシュを追跡するために、クラッシュ ダンプのデバッグに使用するローカル シンボル サーバーをセットアップしました。
最初に、次のフラグを設定して完全なビルドを行いました。
QMAKE_CFLAGS_RELEASE += -Zi
QMAKE_CXXFLAGS_RELEASE += -Zi
QMAKE_LFLAGS_RELEASE += /DEBUG /OPT:REF
そして、Windows インストーラーと VS 展開プロジェクトを使用してインストーラーを構築しました。次に、次の symstore.exe コマンドを実行しました。
C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64>symstore.exe add /r /f C:\builddir\*.* /s "C:\Users\Sam\symbols" /t "Application" /v "rev xxxx" /c "test add"
これにより、適切な dll、exe、および pdb フォルダーが 内に作成されましたC:\Users\Sam\symbols
。
次に、ユーザー マシンにインストールし、Process Explorer を使用してミニダンプ ファイルを生成しました。ダンプを Visual Studio に読み込みC:\Users\Sam\symbols
、シンボル ファイルの場所に追加しようとしましたが、バイナリに一致するシンボルが見つかりませんでした。
次に、WinDbg64 (これは 64 ビット アプリケーションです) にロードしようとしました。!sym noisy
でシンボルパスを設定し、.symfix C:\Users\Sam\symbols
でリロードしまし.reload /f
た。これも成功せず、ロードされたシンボルのみをエクスポートしました。例えば:
QtGui4 No data is available : SRV*C:\Users\Sam\symbols*http://msdl.microsoft.com/download/symbols
The SYMSRV client failed validating the GUID for the module, or the
module does not have the debug header information.
これはすべてのモジュールで発生しますが、Qt コンポーネントは通常のビルドの一部としてビルドされず、シンボル フォルダーを pdb ファイルを直接含む lib フォルダーに設定しても役に立たないため、Qt コンポーネントではまったく期待できません。
ChkMatch.exe
次に、シンボル ストア内の実行可能ファイルと pdb ファイルに対して実行を試みました。実行可能ファイルの署名は、pdb が含まれているフォルダーと一致し、それらが一致する必要があることを示していましたが、次のエラーが発生しました。
Debug information file:
Format: PDB 7.00
Error: PDB header - too many pages in root stream.
念ChkMatch.exe
のため、インストールされた実行可能ファイルに対して再度実行しましたが、同じ署名と同じエラーが発生しました。
編集:symopt+0x40
署名GUIDをあまり詳しくチェックせずに、とにかくWinDbgにpdbを使用させる
設定を試みました。ただし、まだ何もロードされていません。余分な出力:
SYMSRV: C:\Users\Sam\symbols\QtGui4.dll\5202030497e000\QtGui4.dll not found
...
SYMSRV: C:\Users\Sam\symbols\QtGui4.dbg\5202030497e000\QtGui4.dbg not found
SYMSRV: http://msdl.microsoft.com/download/symbols/QtGui4.dbg/5202030497e000/QtGui4.dbg not found
DBGHELP: .\QtGui4.dbg - file not found
DBGHELP: .\dll\QtGui4.dbg - path not found
DBGHELP: .\symbols\dll\QtGui4.dbg - path not found
DBGHELP: QtGui4.dll missing debug info. Searching for pdb anyway
DBGHELP: Can't use symbol server for QtGui4.pdb - no header information available
DBGHELP: QtGui4.pdb - file not found
*** ERROR: Symbol file could not be found. Defaulted to export symbols for QtGui4.dll -
DBGHELP: QtGui4 - export symbols
のフォルダーにC:\Users\Sam\symbols\QtGui4.dll
は名前4AA92D1B712000
があり、正しい dll であるべきものが含まれています。