Glib c предоставляет backtrace()
и backtrace_symbols()
для доступа к трассировке стека изнутри процесса, независимо от отладочных символов. Однако для этого вопроса статически связанный двоичный файл будет пропускать необходимый раздел .dynsym
, даже если флаг -rdynamic
был передан.
Мне известны методы, основанные на отладке символы, используя libdwarf
или libdw
из утилит ELF. По причинам двоичного размера (и соответствующего времени компиляции) и лицензирования (для конкретных упомянутых библиотек) я бы предпочел не полагаться на них.