1

私はドキュメントを読み、概説されたコマンドを使用しましたが、何らかの理由でシンボルを取得していないようです.私が試していたアプリの一番上のセットを除くすべてのサマリーテーブルの機能列に一連の「不明」があります.デバッグする....環境変数をMicrosoftサーバーに設定し、アプリのpdbを含むディレクトリを設定しました。また、サマリー テーブルを表示する前に、[シンボルの読み込み] 項目を選択するようにしました。

私が読んでいた情報によると、シンボルをロードしている間、テーブルが表示されるまでに時間がかかるはずですが、私にとっては、テーブルはほぼ瞬時に表示され、sprite.exe->sprite.exe の最上位の項目のみに関数名がありました。関数のその他の行は、空白または「不明」のいずれかでした

Vista SP1を使用しています。

これは私が使用したバッチファイルです。シンボルのロードを妨げるようなことをしましたか?

REM start profiler
xperf -on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE^
 -stackwalk profile -minbuffers 16 -maxbuffers 1024 -flushtimer 0^
 -f tmp.etl
REM run the app we want to profile
sprite.exe
REM stop
xperf -d profile.etl
REM set symbol path
set _NT_SYMBOL_PATH = ^
 C:\Projects\C++\fl lib\bin;^ REM dlls
 C:\Projects\C++\fl lib\samples\bin;^ REM main exe
 SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
REM display profile
xperf profile.etl
4

2 に答える 2

2

それはどのバージョンをdbghelp.dll使用していますか?にインストールされているkernrateのバージョンを使用しているときに、PDB シンボルを他のユーティリティと連携させるのに苦労しました。dbghelp.dll%SystemRoot%\system32

dbghelp.dllDebugging Tools for Windows の最新バージョンをsymsrv.dllXPerf が見つけられるディレクトリにコピーする必要がある場合があります。

また、「=」の前のスペースを削除するか、「_NT_SYMBOL_PATH 」変数を定義する必要があります (名前の末尾のスペースを含みます)。

行末にコメントを含めることもできません。「^」などの行継続文字は、通常、行の最後の文字である必要があります。そのステートメントを (XP で) 実行したところ、" " が " _NT_SYMBOL_PATH " に等しくなり  C:\Projects\C++\fl lib\bin; REM dlls、次の行に関するエラーが発生しました。

于 2009-02-28T00:44:21.960 に答える
1

を設定してみてください

TRACE_FORMAT_SEARCH_PATH

環境変数。それでもうまくいかない場合は、TracePdb.exe を使用して PDB から TMF ファイルを手動で抽出する必要がある場合があります (または、少なくとも SYM* パスの代わりに通常のパスを使用します)。これは、ETL トレース / XPerf を使用する上で最も厄介な部分です。

于 2009-02-28T02:19:57.627 に答える