Существует функция GNU backtrace()
, которая относительно быстра - она просто возвращает массив адресов.
Чтобы преобразовать эти адреса в имена функций, вам нужно использовать backtrace_symbols()
, который намного тяжелее, но, надеюсь, вам не нужно запускать его слишком часто.
Чтобы получить backtrace_symbols()
на самом деле разрешить имена, вам нужно использовать -rdynamic
опции компоновщика.
Подробнее см. man backtrace
.