0

C コードのプロファイリングには慣れてgprofいますが、Luke Stackwalker などの GUI ベースの Windows アプリケーションの使用を開始したいと考えています。gprof私のバイナリでは問題なく動作しますが、Luke Stackwalker にはいくつかの問題があります。

Launching executable C:\lshare\POT03\Eclipse\Debug\POTaak3.exe.
SymInit: Symbol-SearchPath: ';.;C:\Program Files\Luke Stackwalker;C:\Program Files\Luke Stackwalker;C:\WINDOWS;C:\WINDOWS\system32;SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'Pieter'

OS-Version: 5.1.2600 (Service Pack 3) 0x100-0x1

C:\lshare\POT03\Eclipse\Debug\POTaak3.exe:POTaak3.exe (00400000), size: 61440, SymType: '-unknown-', PDB: '$Tƒ|'
C:\WINDOWS\system32\ntdll.dll:ntdll.dll (7C900000), size: 753664, SymType: '-unknown-', PDB: '©Uƒ|'
C:\WINDOWS\system32\kernel32.dll:kernel32.dll (7C7D0000), size: 1048576, SymType: '-unknown-', PDB: '©Uƒ|'
C:\WINDOWS\system32\msvcrt.dll:msvcrt.dll (77BE0000), size: 360448, SymType: '-unknown-', PDB: '©Uƒ|'
ERROR: SymGetModuleInfo64, GetLastError: 1114 (Address: 7C90E514)
Sorting profile data.
Done; 2 samples collected at 1.$ samples/second.

誰が誰を撃ったの? ここで何が間違っていますか?-pg旗を使うのを覚えていました。

4

2 に答える 2

0

SymType -unknown- は、デバッグ情報を生成する gcc -g オプションを使用してプログラムがコンパイルされていないか、Luke Stackwalker が使用する Microsoft debughelp ライブラリがデバッグ情報の形式を認識できないことを意味します。

プログラムをコンパイルするときに -g オプションを使用していることを確認してください (実行可能ファイルを削除していません)。それ以外の場合は、使用している gcc のバージョンを知っておくとよいでしょう。

于 2010-02-24T17:57:11.650 に答える
0

gprof以外が必要な理由を理解しています。Luke Stackwalker はスタック サンプルを取得しますが、(前回チェックしたときは) コード行のレベルで使用された壁時計時間の包括的 % を要約していません。Linux ではlsstackまたはpstackを使用できますが、Windows にも同様のツールが必要です。あなたの状況では、スタックショットを撮るためにIDEの一時停止ボタンに頼っています。

于 2010-02-21T18:18:38.483 に答える