获取valgrind生成核心文件

Get valgrind to generate a core file

我正在尝试调试一个我在程序中很少遇到的错误。 该程序在 valgrind

下 运行
valgring --num-caller=50 testprog.out

我只想在这个程序遇到错误时生成一个核心文件。

我知道有一个选项可以在我们从 valgring 遇到错误时调用 gdb,但是有没有办法在没有人工干预的情况下向 valgrind/gdb 提供输入以生成核心文件?

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

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

如果错误没有导致程序崩溃,那么你可以提出一个SIGABRT/SIGSEGV/etc。错误块内的信号(参见 How to programmatically cause a core dump in C/C++)。

示例:

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