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/