GNU/Linux >> Linux Esercitazione >  >> Linux

Numeri di riga di origine nel grafico delle chiamate perf?

L'ho trovato accidentalmente vagamente documentato in perf script , ma si applica anche ad altri comandi:-F l'opzione accetta srcline . Quindi puoi fare -F+srcline per aggiungere il numero di riga alle colonne esistenti.

Esempio: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

Frammenti (righe complete) del codice sorgente vengono stampati da perf in modalità annotazione (man page; parte rilevante di The Perf Tutorial). Usa perf annotate -s=MyFunction o in perf report scorri verso il basso fino al sottoalbero in cui MyFunction è la radice dell'albero (riga in cui è riportato il tempo personale; puoi usare / comando per cercarlo) e quindi selezionare a pulsante (o Invio quindi Annota "MyFunction").

Il codice sorgente e le sue linee dovrebbero essere visibili vicino alle linee di assemblaggio in modalità Annota. http://man7.org/linux/man-pages/man1/perf-annotate.1.html

Questo comando legge il file di input e visualizza una versione annotata del codice. Se il file oggetto ha simboli di debug, il codice sorgente verrà visualizzato insieme al codice assembly.

   -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.

Perf report può utilizzare srclines nell'ordinamento (--sort= opzione) ma le istruzioni non sono chiare. La sua pagina man documenta --source anche l'opzione, ma a quanto pare è usata solo in modalità Annotate 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. Codici di uscita della riga di comando di Bash demistificati

  2. Grep per una riga contenente solo 5 o 6 numeri?

  3. Codice sorgente di Netstat?

  4. Come chiamare la funzione C in C++, la funzione C++ in C (mix di C e C++)

  5. Chiama una funzione C dal codice C++

Come mostrare i numeri di riga in Vim / Vi

Nozioni di base sulla compilazione di software dal codice sorgente in Linux

Ohcount - Il contatore e l'analizzatore di linee di codice sorgente

Rimuovere il codice sorgente Ppa?

Come mostrare o nascondere i numeri di riga in Vim

Come mostrare i numeri di riga in Gedit