Как установить точку останова в GDB?
(gdb) b имя файла: белье
// например b main.cpp: 100
Есть ли способ вызвать прерывание? Я помню, что был ENV var для управления этим?
У меня сложилось впечатление, что оно прервано по умолчанию. Убедитесь, что у вас установлена отладочная версия.
Или используйте libdmalloc5: «Снижение замены системных malloc',
realloc ', calloc',
free» и других процедур управления памятью, предоставляя мощные средства отладки
настраивается во время выполнения. Эти средства включают в себя такие вещи, как отслеживание утечки памяти, обнаружение записи после забора, отчет о номере файла / строки и общая регистрация статистики. "
Добавьте это к вашей команде ссылки
-L/usr/lib/debug/lib -ldmallocth
GDB должен автоматически вернуть управление, когда glibc запускает прерывание.
Или вы можете настроить обработчик сигнала для SIGABRT, чтобы выгружать трассировку стека в fd (дескриптор файла). Ниже mp_logfile является ФАЙЛОМ *
void *array[512 / sizeof(void *)]; // 100 is just an arbitrary number of backtraces, increase if you want.
size_t size;
size = backtrace (array, 512 / sizeof(void *));
backtrace_symbols_fd (array, size, fileno(mp_logfile));