Получить valgrind для создания файла ядра
Я пытаюсь отладить ошибку, которую очень редко попадаю в программу. Программа работает под Valgrind
valgring --num-caller=50 testprog.out
Я хочу создать файл ядра только тогда, когда эта программа попадет в ошибку.
Я знаю, что есть возможность вызывать gdb, когда мы сталкиваемся с ошибкой от valgring, но есть ли способ передать входные данные в valgrind / gdb для генерации файла ядра без ручного вмешательства?
Могу ли я дать входные данные для GDB в файле?
1 ответ
Решение
Valgrind должен быть способен генерировать vgcore. когда программа вылетает. Если дамп ядра не включен (проверьте ulimit, если вы используете Linux)
Если ошибка не приводит к сбою программы, вы можете вызвать SIGABRT/SIGSEGV/ и т. Д. сигнал внутри блока ошибки (см. Как программно вызвать дамп ядра в C / C++).
Пример:
if (foo() == ERR_CODE_FAILURE) // Your error is foo()
{
raise(SIGABRT);
}