GNU/Linux >> Linux の 問題 >  >> Linux

パフォーマンス コール グラフのソース行番号は?

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.

Linux
  1. Bashコマンドラインの終了コードがわかりやすく説明されています

  2. 5つまたは6つの数字のみを含む行のGrep?

  3. Linux コマンドのソース コードを入手する

  1. 行番号のない Bash 履歴

  2. システムコールのソースコードはどこにありますか?

  3. Linux CFS スケジューラ コードはどこにありますか?

  1. Netstatのソースコード?

  2. vi / vimで行番号を表示するにはどうすればよいですか?

  3. ソースコードなしでプログラムする引数を隠す