Visual Studio C ++ исключение ... странность - PullRequest
3 голосов
/ 22 февраля 2010

У меня есть приложение Qt, которое я компилирую в конфигурации release , запускаю и затем выполняю операцию X в программе. Все отлично работает.

Затем я компилирую его в debug конфигурации, запускаю без отладки (т. Е. CTRL + F5), выполняю операцию X в программе. Все все еще отлично работает.

Но когда я пытаюсь запустить конфигурацию отладки с отладкой (так что просто F5) и затем выполнить операцию X, Visual Studio врывается с сообщением, что исключение было ... в полностью несвязанная часть программы (выполняемый код находится далеко от места, где ломается VS, в шаблоне QHash) ... а затем зависает VS, и мне приходится убивать его с помощью диспетчера задач. Я могу повторить это до бесконечности, и оно всегда приходит в ужас.

Boost :: exception используется для исключений. VS 2008, SP1. Qt - 4.6.2, с использованием предварительно скомпилированных двоичных файлов VS с сайта Qt.

Кто-нибудь знает, что происходит?

1 Ответ

4 голосов
/ 22 февраля 2010

Visual Studio имеет функцию, называемую «обработка исключений первого случая», при которой при запуске, подключенном к отладчику, вы можете отключить отладчик при возникновении исключений определенных типов.

Вы можете изменить эти настройки, перейдя к Debug -> Exceptions (Ctrl + Alt + E) и (не) установив соответствующие флажки.

Когда он прерывается, вы должны получить сообщение в окне вывода, указывающее, какое исключение было сгенерировано.

Если у вас включен _HAS_ITERATOR_DEBUGGING (он включен по умолчанию в отладочных сборках), это может привести к множеству ошибок итератора, которые выдают исключения вместо выполнения операций, которые могут привести к нарушениям доступа. Это единственное, что я могу придумать, что может вызвать исключение "случайно".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...