У меня есть несколько проектов. каждый проект создает свой собственный файл.
По какой-то причине обратная трассировка не печатает функцию и поэтому файл при сбое.
Я скомпилировал с -rdynamic. например:
-std = c ++ 14 -pthread -pedantic -rdynamic -fPIC -g -c -fmessage-length = 0 -llibtcmalloc
Это обратный след, который я получаю при сбое программы:
Error: signal 11:
./libs/BaseCppProjectRun[0x402a50]
/lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x7fb9aa1db4b0]
./libs/BaseCppProjectRun[0x403013]
./libs/BaseCppProjectRun[0x402b95]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fb9aa1c6830]
./libs/BaseCppProjectRun[0x402669]
функция возврата:
void PrintCallStackOnError(int sig)
{
void *array[10];
size_t size;
size = backtrace(array, 10);
fprintf(stderr, "Error: signal %d:\n", sig);
backtrace_symbols_fd(array, size, STDERR_FILENO);
exit(1);
}
(эта функция будет вызываться с помощью: сигнала (SIGSEGV, PrintCallStackOnError), определенного в основной функции).
Может кто-нибудь помочь напечатать файл so и имя функции на backtrace, пожалуйста?
спасибо.