2014-12-24 2 views
1

У меня есть совершенно непонятная проблема с программой на C++, которую я компилирую с помощью MinGW. В определенной, детерминированной точке в программе некоторые обработчики исключений отключены, и любые последующие исключения, которые были выбраны, больше не обрабатываются. Я могу отслеживать точную строку источника, которая делает это, это безобидное назначение массиву в куче. Указатель не поврежден, и я не пишу за его пределы. Более того, один и тот же код вызывается в кучу разных обстоятельств, даже с большинством тех же аргументов, не вызывая ошибки. Если я играю с кодом, чтобы значение, которое он пишет, всегда равно нулю, ошибка никогда не срабатывает. Я не понимаю, что происходит. Он также отключает только обработчики исключений. обработчики исключений, расположенные дальше по стоп-столу, отключены, а те, которые выше, остаются активными. Это озадачивает.Как отлаживать обработку исключений MinGW?

Итак, как мне следует отлаживать это? Я действительно не понимаю, как исключения действительно работают в версии GCC от MinGW. Что может произойти, чтобы вызвать этот странный набор симптомов?

ответ

0

Не обращайте внимания, оказывается, что принятие определенного времени и размышления о симптомах предложили ответ.

Оказывается, ужасная библиотека, которую я использую, может вызывать исключение во время очистки, поэтому я получал исключение в исключении во время разматывания стека.

Я должен был понять, что, когда обработчики в дальнейшем вверх по стеку вызовов ведут себя правильно. Duh.

Смежные вопросы