我正在尝试调试一个我在程序中很少遇到的错误。 该程序在valgrind下运行
valgring --num-caller=50 testprog.out
我想仅在此程序遇到错误时生成核心文件。
我知道当我们从valgring遇到错误时有一个调用gdb的选项,但有没有办法给valgrind / gdb输入生成核心文件而无需人工干预?
我可以在文件中为gdb提供输入吗?
答案 0 :(得分:0)
Valgrind应该能够生成vgcore。程序崩溃时除非未启用核心转储(如果您使用的是linux,请检查ulimit)
如果错误不会导致程序崩溃,那么您可以引发SIGABRT / SIGSEGV /等。错误块内的信号(参见How to programmatically cause a core dump in C/C++)。
示例:
if (foo() == ERR_CODE_FAILURE) // Your error is foo()
{
raise(SIGABRT);
}