вопрос у меня есть:Override сбоя в C++
Есть ли способ вызова функции или делать другую работу всякий раз, когда происходит сбой в программе.
Конкретно, код, который я в настоящее время работает, дает «segmentation fault» на очень большом входе. Это означает, что в какой-то момент я получаю доступ к некоторой недоступной \ нераспределенной части памяти. Отображение каждого шага было бы слишком неприятным, поэтому я хочу определить, когда я пересекаю границы.
Как это можно сделать?
Почему не просто запустить свой код под Valgrind для того, чтобы найти и исправить ошибку (s)? –
«Я хочу определить, когда я пересекаю границы» не связан с «вызовом функции или выполнением какой-либо другой работы всякий раз, когда происходит сбой». Использование отладчика хорошо для первого. Последнее, с точки зрения C++, является функциональностью для режима общего неопределенного поведения, и в этом режиме ничто не может быть гарантировано стандартом C++. Однако для нормального завершения, в том числе для неперехваченного исключения, у вас есть 'std :: terminate'. –
да (я вижу, что это своего рода unix) - скомпилировать с включенной отладкой (cc -g ...), затем запустить с помощью gdb: gdb --args ./program, затем запустить –