Это из руководства gcc:
-finstrument-функции
Генерация инструментария для вызовов
вход и выход в функции. Просто
после ввода функции и непосредственно перед
функция выхода, следующее профилирование
функции будут вызываться с
адрес текущей функции и
его сайт вызова. (На некоторых платформах
__builtin_return_address не работает за пределами текущей функции, поэтому
Информация о сайте звонка не может быть
доступны для функций профилирования
в противном случае.)
void __cyg_profile_func_enter (void * this_fn, void * call_site);
void __cyg_profile_func_exit (void * this_fn, void * call_site);
Если что-то не реализует эти функции, вы получите ошибки компоновщика (что и происходит с MinGW). Вероятно, ваша версия GCC предоставляет пустые реализации.
Я получил его для работы с MinGW GCC, предоставив эту реализацию:
#include <stdio.h>
void __cyg_profile_func_enter (void *this_fn, void *call_site) {
printf( "entering %p\n", this_fn );
}
void __cyg_profile_func_exit (void *this_fn, void *call_site) {
printf( "leaving %p\n", this_fn );
}
но это дает только адреса функций. Я бы подумал, что это должна быть реализация GCC по умолчанию, но, похоже, ее нет.
Людей также может заинтересовать эта визуализация дерева вызовов , в которой используется флаг -fintrument-functions - caveat, я сам не пробовал.