Usando gcov
:
$ gcc -O0 --coverage square.c
$ ./a.out
$ gcov -i square.c
$ awk -F '[,:]' '$1 == "function" && $3 > 0 {print $3, $4}' square.c.gcov
1 square
1 main
(onde o número é o número de vezes que a função foi chamada (pulamos os que nunca são chamados com $3 > 0
na parte awk
)).
Isso é normalmente usado para cobertura de código (quanto do código está sendo testado). Você também pode usar a ferramenta de criação de perfil de código gprof
(normalmente usada para descobrir quanto tempo é gasto em várias áreas do código):
$ gcc -O0 -pg square.c
$ ./a.out
$ gprof -b -P
Call graph
granularity: each sample hit covers 2 byte(s) no time propagated
index % time self children called name
0.00 0.00 1/1 main [7]
[1] 0.0 0.00 0.00 1 square [1]
-----------------------------------------------
Index by function name
[1] square