Я работаю над переносом приложения Visual C++ в GCC (должен строиться на MingW и Linux).Перенос исключительных ошибок в C++
Существующий код использует __try { ... } __except(1) { ... }
блоки в нескольких местах, так что почти ничего (возможно, из-за ошибок типа памяти?) Приведет к выходу программы без минимального ведения журнала.
Каковы варианты выполнения чего-то подобного с GCC?
Редактировать: Спасибо за указатель на опции/EH в Visual Studio, теперь мне нужны некоторые примеры того, как обрабатывать сигналы в Linux. Я нашел this message с 2002 года.
Какие еще сигналы, кроме SIGFPE
и SIGSEVG
Следует ли мне следить? (В основном заботиться о тех, которые могут быть подняты из меня делать что-то неправильно)
Bounty Информация: Я хочу, чтобы мое приложение, чтобы иметь возможность самостоятельно войти как много условий ошибок, как это возможно, прежде чем он выйдет.
Какие сигналы я могу получить, и как правило, невозможно зарегистрировать сообщение об ошибке после? (Недостаточно памяти, что еще?)
Как я могу обрабатывать исключения и (что наиболее важно) сигналы портативным способом, что код, по крайней мере, работает одинаково в Linux и MingW. #ifdef в порядке.
Причина, по которой я не просто оберточный процесс, который регистрирует сбой, заключается в том, что по соображениям производительности я сохраняю запись данных на диск до последней минуты, поэтому, если что-то пойдет не так, я хочу сделать все возможные попытки написать данные перед выходом.
OP ищет что-то для решения исключительных условий более низкого уровня, чем исключения на языке языка C++. В мире POSIX это означает установку обработчиков сигналов (для большинства) всего. В MSVC механизм __try/__ catch выполняет аналогичные ошибки (включая эквивалент Win32 SEGFAULT) – 2008-11-07 02:07:17