Или другими словами: Как вы бросаете ошибку ядра на исключение C++?Любая идея, как заставить C++ вызывать исключение при ошибке ядра
Потому что C++ способен выбросить большую часть ошибок программирования в качестве исключения. Но почему бы и не деление на нуль? Ошибка сегментации? И другие ошибки ядра?
Я понимаю, как эти ошибки возникают в ядре и обрабатываются ядром. Я также понимаю, как создается исключение и обрабатывается на C++ с помощью компилятора. Как вы видите, что точки между ними могут быть связаны? Есть ли солидная работа в этом отношении?
Заранее благодарим за любые идеи или подсказки.
Редактировать в ответ на возможный дубликат флага: Как аналогичный вопрос How to catch segmentation уже задал вопрос о части capture
части segv, recovery
по-прежнему отсутствует. Более того, я ищу систематический подход к восстановлению от всех видов исключений ядра, а не только от segv.
Редактировать снова: я объяснил, почему этот вопрос отличается от другого вопроса. Тем не менее 5 человек проголосовали за закрытие.
Это зависит от вашей платформы. В некоторых Unix, возврат из некоторых сигналов (включая SIGSEGV, SIGFPE и SIGILL) вызывает неопределенное поведение. – Brian
Правильно, я думал о сигналах, но забыл упомянуть об этом при написании вопроса. В частности, я не понял, как преобразовать сигнал в исключение C++. Если вы можете преобразовать sigsegv, это решит половину проблемы.Тем не менее, я хотел бы иметь возможность сбросить все ошибки ядра, если ошибка вызвана вашей программой. – minghua
@Brian: выброс исключения или использование longjmp не считается запрещенным возвратом из обработчика сигнала. –