强制coredump上的glib free错误

use*_*689 2 c++ linux glibc

我运行程序时出现以下错误,在gdb下不会发生.如何强制glibc或ubuntu在中止时转储核心?我试过"ulimit -c unlimited".但是,这不是一个错误,也没有运气.另外,我在valgrind修复中有太多的内存错误,所有这些都需要花费很多时间.

此外,将MALLOC_CHECK_设置为0不会强制程序退出.但是,这对我来说不是一个选择.

*检测到glibc ./main:free():下一个大小无效(快):0x0000000000ae0560**

编辑 无论如何我发现究竟是什么导致了valgrind中的这种glibc腐败.只是保持开放,看看是否可能.

Emp*_*ian 5

从glibc 文档:

如果MALLOC_CHECK_设置为0,则会自动忽略任何检测到的堆损坏; 如果设置为1,则在stderr上打印诊断; 如果设置为2,则立即调用abort.

调用abort()通常会产生核心转储(取决于ulimit -c设置).