Получить 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);
}
Другие вопросы по тегам