perf script
で大まかに文書化されているのを偶然見つけました ですが、他のコマンドにも適用されます:-F
オプションは srcline
を受け入れます . -F+srcline
を実行できます 行番号を既存の列に追加します。
例:perf report -g fractal -F+period,srcline
Samples: 22K of event 'cycles:u', Event count (approx.): 13031011295
Children Self Period Source:Line Command Shared Object Symbol
+ 99.98% 38.76% 5051224000 test.cpp:7 a a [.] fib
+ 96.42% 0.00% 0 _start+94372992700461 a a [.] _start
+ 96.42% 0.00% 0 __libc_start_main+140304673091826 a libc-2.29.so [.] __libc_start_main
+ 96.42% 0.00% 0 test.cpp:13 a a [.] main
+ 21.47% 21.47% 2797741850 test.cpp:8 a a [.] fib
+ 16.69% 16.69% 2174469736 test.cpp:4 a a [.] fib
+ 16.37% 16.36% 2132462705 test.cpp:6 a a [.] fib
+ 6.69% 6.69% 871128215 test.cpp:5 a a [.] fib
ソース コードのフラグメント (全行) は、注釈モードで perf によって出力されます (man ページ、Perf チュートリアルの関連部分)。 perf annotate -s=MyFunction
を使用 または perf report
MyFunction がツリーのルートであるサブツリーまで下にスクロールします (自己時間が報告される行。 / を使用できます) コマンドで検索)、a を選択します。 ボタン (または Enter 次に、「MyFunction」に注釈を付けます)。
ソース コードとその行は、注釈モードでアセンブリ ラインの近くに表示される必要があります。 http://man7.org/linux/man-pages/man1/perf-annotate.1.html
<ブロック引用>このコマンドは、入力ファイルを読み取り、注釈付きバージョンのコードを表示します。オブジェクト ファイルにデバッグ シンボルがある場合、ソースコードはアセンブリ コードと一緒に表示されます。
-l, --print-line
Print matching source lines (may be slow).
--source
Interleave source code with assembly code. Enabled by default,
disable with `--no-source`.
-s, --symbol=<symbol>
Symbol to annotate.
パフォーマンス レポートは、並べ替えに srclines を使用する場合があります (--sort=
オプション)しかし、指示は不明です。そのマニュアル ページ ドキュメント --source
オプションもありますが、明らかに some_function モードでのみ使用されます:http://man7.org/linux/man-pages/man1/perf-report.1.html
--source Interleave source code with assembly code. Enabled by default, disable with --no-source.