Questa mattina volevo fare alcune verifiche con gprof su un programma, ma
non riuscivo ad ottenere alcun risultato.

Finché mi sono accorto che il problema sembrava essere gcc-6.

Mi succede quanto segue:


$ cat fibolento.c
int main (int argc, char *argv[]) {
  if (argc < 2) return 1;
  return main (argc - 1, argv) + main (argc - 2, argv);
}
$ gcc-6 -pg fibolento.c -o fl
$ ./fl 1 1 1 1 1 1 1 1
$ echo $?
55
$ gprof -b ./fl
Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated

  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ts/call  Ts/call  name

                        Call graph

granularity: each sample hit covers 2 byte(s) no time propagated

index % time    self  children    called     name

Index by function name

$ gcc-5 -pg fibolento.c -o fl
$ ./fl 1 1 1 1 1 1 1 1
$ echo $?
55
$ gprof -b ./fl
Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated

  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ts/call  Ts/call  name

                        Call graph

granularity: each sample hit covers 2 byte(s) no time propagated

index % time    self  children    called     name
                                 108             main [6]
[6]      0.0    0.00    0.00       0+108     main [6]
                                 108             main [6]
-----------------------------------------------

Index by function name

lasciando perdere eventuali osservazioni sul fatto che il programmino di
tre righe usa un metodo assai sciocco per calcolare i numeri di
fibonacci...
Qualcuno mi sa dire perché se compilo con gcc-5 poi gprof mi fornisce
delle informazioni, mentre se compilo con gcc-6 non mi dice nulla? Mi sono
perso qualche cambiamento di sintassi nella "nuova" versione di gcc?

Grazie,
m

-- 
http://bodrato.it/papers/

Rispondere a