次の方法で「perf」を実行しています。
perf record -a --call-graph -p some_pid
perf report --call-graph --stdio
次に、これがわかります:
1.60% my_binary my_binary [.] my_func
|
--- my_func
|
|--71.10%-- (nil)
| (nil)
|
--28.90%-- 0x17f310000000a
My_func()を呼び出す関数を確認できません。代わりに「nil」と「0x17f310000000a」が表示されます。私は何か間違ったことをしていますか?一部の記号が表示されているのに他の記号が表示されていないため、これはおそらくデバッグ情報の問題ではありません。
より詳しい情報:
-fno-omit-frame-pointer
gccオプションを使用してコードをコンパイルしたことを確認してください。
あと少しですが、-G
オプションがありません(システムにインストールされているパフォーマンスよりも新しいパフォーマンスが必要になる場合があります)。
$ perf report --call-graph --stdio -G
perf help report
から:
-G, --inverted
alias for inverted caller based call graph.
Zoom でプロファイリングを試しましたか? perf、カスタムドライバー、またはoprofileを使用してサンプルを収集できます。 1つのプロセスだけを見たい場合は、「スレッド時間」構成を試してください。
Zoomのオプションのいずれかが、スタンドアロンのパフォーマンスよりも機能情報を取得するのに優れているかどうかに興味があります。