如何在gdb中设置断点?
(gdb) b 文件名:行号 // 例如 b main.cpp:100
有没有办法强制中止?我记得有一个 ENV var 来控制这个?
我的印象是它默认中止。确保您已安装调试版本。
或者使用 libdmalloc5:“替换系统的malloc',
realloc'、calloc',
free' 和其他内存管理例程,同时提供在运行时可配置的强大调试工具。这些工具包括内存泄漏跟踪、fence-post 写入检测、文件/行数字报告和统计数据的一般记录。”
将此添加到您的链接命令
-L/usr/lib/debug/lib -ldmallocth
当 glibc 触发中止时,gdb 应该自动返回控制。
或者,您可以为 SIGABRT 设置信号处理程序以将堆栈跟踪转储到 fd(文件描述符)。下面,mp_logfile 是一个 FILE*
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));