2015-12-09 5 views
2

У меня есть приложение x64, использующее последний EmguCV 3, и после вызова DetectAndCompute на FastDetector я получаю исключение, но, к сожалению, я не знаю, что это за исключение, потому что, когда солнце возникает в качестве исключения, Visual Studio (VS 2015) Сообщество) выходит из отладки (хотя я могу увидеть окно «Сведения об исключении», появляющееся в течение короткой доли секунды до его выхода.) Все, что находится в окне вывода после выхода: The program has exited with code 0 (0x0). В настройках исключения я проверил все Common Language Runtime Exceptions. Как получить информацию об этом исключении?Visual Studio выходит из отладки при исключении

+0

Это исключение, дающее какое-либо внутреннее исключение? –

+0

Вы используете более одного потока? Может быть, поток с исключением принудительно убит другим, пока его удерживает отладчик. Если нет, и если вы знаете, где это исключение, вы всегда можете с уверенностью поставить try/catch вокруг него, чтобы распечатать исключение на консоль/debug. –

+0

. То, что я не могу. Его уже окружен предложением try/catch, но как только исключение вызывается/cautch, Visual Studio завершает отладку, поэтому я не могу понять, что было выбрано Exception, и что было внутренним исключением, если оно есть. Я думаю, это может быть связано с тем, что мой процесс приложения убивается ОС из-за некоторой фатальной ошибки, такой как ошибка сегментации. В этом сценарии каковы параметры для получения информации об этом исключении/ошибке. – NiceSprite

ответ

0

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

Неверный процесс: StandardCollector.Service.exe. Это инструмент сбора данных о производительности, который запускается автоматически на каждом сеансе отладки в Visual Studio 2015.

Код исключения - 0xc000000d, что означает STATUS_INVALID_PARAMETER. Именно это открывает OpenCV.

Для того, чтобы увидеть оригинальное исключение, вы должны приступить к работе с приложением без отладчика. Ваш код (который вызывает исключение) должен быть помещен в блок try-catch, а в обработчике исключений вы должны просто зарегистрировать ошибку в файле или в любом месте, которое вы используете для ведения журнала.

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