Cómo establecer un punto de interrupción en gdb?
(gdb) b nombre de archivo: linenumber // e.g. b main.cpp: 100
¿Hay alguna manera de forzar un aborto? Recuerdo que había una var ENV para controlar esto?
Tenía la impresión de que se interrumpió por defecto. Asegúrese de tener instalada la versión de depuración.
O utilizar libdmalloc5:. "Gota en el reemplazo para malloc',
realloc del sistema y otras rutinas 'calloc',
libres' de gestión de memoria al tiempo que proporciona potentes instalaciones de depuración configurables en tiempo de ejecución Estas instalaciones incluyen cosas tales como la memoria de seguimiento de fugas, fence- detección posterior a la escritura, informe de número de archivo/línea y registro general de estadísticas ".
Agregar a su comando de enlace
-L/usr/lib/debug/lib -ldmallocth
GDB de control debe devolver automáticamente cuando glibc provoca un aborto.
O puede configurar un manejador de señal para SIGABRT para volcar la pila hasta un fd (descriptor de archivo). A continuación, mp_logfile es un archivo *
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));
Creo que esta pregunta necesita respuestas diferentes dependiendo del sistema específico y no está restringida a Linux (por ejemplo, OpenBSD, OSX). – rwst