Outils pour utilisateurs

Outils du site


prog:uftrace

Ceci est une ancienne révision du document !


Source, Doc

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