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 : de root
