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/