Рассмотрим профилировщик из google-perftools . Предположим, у нас есть исполняемый файл main
, построенный из двух объектных файлов: один скомпилирован из C, а другой из сборки. Нет необходимости добавлять какие-либо дополнительные флаги для компиляции, сборки или компоновки.
$ LD_PRELOAD=path/to/libprofiler.so CPUPROFILE=main.prof ./main
$ pprof main main.prof --text
Using local file main.
Using local file main.prof.
Removing killpg from all stack traces.
Total: 435 samples
348 80.0% 80.0% 348 80.0% label_from_assembly_file
37 8.5% 88.5% 37 8.5% exit
29 6.7% 95.2% 29 6.7% another_label_from_assembly_file
15 3.4% 98.6% 435 100.0% main
4 0.9% 99.5% 4 0.9% another_label_defined_in_asm
2 0.5% 100.0% 2 0.5% and_a_fourth_asm_label
0 0.0% 100.0% 435 100.0% __libc_start_main
0 0.0% 100.0% 435 100.0% _start
Вот все, что нужно знать о профилировщике .