让 valgrind 生成一个核心文件



我正在尝试调试一个错误,我在程序中很少遇到。该程序在瓦尔格林德下运行

valgring --num-caller=50 testprog.out

我想仅在该程序遇到错误时才生成核心文件。

我知道当我们从 valgring 中遇到错误时,有一个选项可以调用 gdb,但是有没有办法向 valgrind/gdb 提供输入以生成核心文件而无需手动干预?

我可以在文件中为 gdb 提供输入吗?

Valgrind应该能够生成vgcore。 当程序崩溃时。除非未启用核心转储(如果您使用的是 linux,请检查 ulimit)

如果错误不会导致程序崩溃,则可以在错误块内引发 SIGABRT/SIGSEGV/等信号(请参阅如何在 C/C++ 中以编程方式导致核心转储)。

例:

if (foo() == ERR_CODE_FAILURE) // Your error is foo()
{
    raise(SIGABRT);
}