Je l'ai accidentellement trouvé vaguement documenté dans perf script
, mais cela s'applique également aux autres commandes :-F
l'option accepte srcline
. Vous pouvez donc faire -F+srcline
pour ajouter le numéro de ligne aux colonnes existantes.
Exemple :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
Les fragments (lignes complètes) du code source sont imprimés par perf en mode annoté (page de manuel ; partie pertinente du didacticiel Perf). Utilisez perf annotate -s=MyFunction
ou en perf report
faites défiler vers le bas jusqu'à la sous-arborescence où votre MyFunction est la racine de l'arborescence (ligne où le temps personnel est signalé ; vous pouvez utiliser / commande pour le rechercher) puis sélectionnez a bouton (ou Entrée puis annotez "MaFonction").
Le code source et ses lignes doivent être visibles à proximité des lignes d'assemblage en mode Annoter. http://man7.org/linux/man-pages/man1/perf-annotate.1.html
Cette commande lit le fichier d'entrée et affiche une version annotée du code. Si le fichier objet a des symboles de débogage, le code source sera affiché à côté du code d'assemblage.
-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.
Le rapport de performance peut utiliser des srclines dans le tri (--sort=
option) mais les instructions ne sont pas claires. Sa page de manuel documente --source
option aussi, mais apparemment elle n'est utilisée qu'en mode 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.