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.