1

私はパフォーマンスに不慣れです、

結果を理解しようとしますが、このようなものを読む方法は?

 39.57%  TestSoft.exe  libc-2.15.so         [.] 0x3fd59
  7.04%  TestSoft.exe  libc-2.15.so         [.] malloc
  6.15%  TestSoft.exe  LoanSoft.exe         [.] LoanDef::update_vec()

最初の行はlibcの関数かもしれませんが、それはどの関数でしたか?その0x3fd59はどういう意味ですか?また、2行目では、コード内のどの関数がmallocを呼び出しますか?3行目では、update_vec()のどの部分が遅いかを確認するためだけに、その関数でさらにパフォーマンスを実行できますか?

どうもありがとう!

4

2 に答える 2

2

デバッグシンボルを使用してビルドする必要があります(-gコンパイル時にオプションがg ++に渡されます)。次に、どの関数がそのCPU時間を使用しているかを確認できます。また、デバッグシンボル付きのライブラリを使用する必要があります。

于 2012-08-18T19:56:59.677 に答える
2

ダンプはユーザーモードのすべての関数のものであるため、デバッグシンボルを使用してコンパイルすることをお勧めします。0x3fd59は、シンボルがないために実際の名前を使用できないルーチンです。
ソースレベルで分析を行うには、ここを参照してください。

 39.57%  TestSoft.exe  libc-2.15.so         [.] 0x3fd59
  7.04%  TestSoft.exe  libc-2.15.so         [.] malloc
  6.15%  TestSoft.exe  LoanSoft.exe         [.] LoanDef::update_vec()

最初に、対応する関数で収集されたサンプル全体のパーセンテージを示します。

2番目の列は、サンプルが収集されたプロセスを報告します。

3番目の列は、サンプルが由来するELF画像の名前を示しています。プログラムが動的にリンクされている場合、共有ライブラリの名前が表示されることがあります。サンプルがカーネルからのものである場合、疑似ELFイメージ名[kernel.kallsyms]が使用されます。

4番目の列は、サンプルが取得された特権レベル、つまり、プログラムが中断されたときに実行されていたときを示します。

   [.] : user level
   [k]: kernel level
   [g]: guest kernel level (virtualization)
   [u]: guest os user space
   [H]: hypervisor

最後の列には、シンボル名が表示されます。

于 2012-08-18T20:21:42.117 に答える