prog:uftrace
Ceci est une ancienne révision du document !
Prérequis
Le programme doit être compilé avec -pg
.
La base
- main.c
void bar () { } int foo(int i) { bar(); return i; } int main() { foo(4); }
Sans -pg
uftrace a.out
ERROR: Can't find 'mcount' symbol in the 'a.out'. It seems not to be compiled with -pg or -finstrument-functions flag which generates traceable code. Please check your binary file.
Mais il est possible de forcer pour analyser les librairies systèmes (dans ce cas précis, il n'y en a pas).
uftrace --force a.out
WARN: no trace data found
Avec -pg
Exécution :
uftrace a.out
# DURATION TID FUNCTION [24318] | main() { [24318] | foo() { 0.165 us [24318] | bar(); 1.635 us [24318] | } /* foo */ 2.268 us [24318] | } /* main */
Exécution avec enregistrement :
uftrace record a.out uftrace replay …
Paramètres
- Afficher les arguments et la valeur de retour. uftrace-live :
Valeur de retour de foo
: -R foo@retval
. Il n'est pas possible de désigner tout le monde.
Arguments de foo
: -A foo@arg1/u64
. arg
pour nombre entier, 1
pour l'argument 1, u
pour unsigned int
, 64
pour la taille. Il est aussi possible d'utiliser fparg
pour les flottants.
- Limiter l'affichage au fonction les plus longues :
-t 5us
: limiter à minimum 5 microsecondes
- Affichage graphique de l'état de la pile en fonction du temps :
uftrace record a.out uftrace dump --chrome >> log.js
et ouvrir le fichier log.js
avec Google Chrome depuis l'adresse interne chrome://tracing
.
prog/uftrace.1509231314.txt.gz · Dernière modification : 2017/10/29 00:55 de root