Можно ли сделать все или большинство ошибок C ++ управляемыми в VS?

0

При тестировании и отладке кода C++ часто обнаруживаются ошибки, которые может обнаружить визуальная студия. Обычно он реагирует на создание всплывающего окна всплывающих окон, которые позволяют остановить выполнение и проверить стек вызовов и значения переменных и т.д.

Мне интересно, есть ли какой-либо возможный способ, чтобы отладчик выбрал исключение вместо обычного перерыва.

Я хочу иметь возможность сделать что-то вроде:

try {
    functionThatMightBreak(); // break as in, derefence null, uninitialized variable, iterator not derefenceable etc
} catch (SomeType e) {
    // a bit more stuff
}
  • 1
    Отладчик не выдает исключений ... вы, вероятно, имеете в виду что-то еще. Проверьте «отладка-> исключения» и «инструменты-> параметры-> отладка» - вы можете найти способ настроить поведение отладчика по своему вкусу.
  • 0
    Можете ли вы объяснить, какое поведение вы ищете от отладчика? я не думаю, что вы хотите, чтобы отладчик «выбрасывал исключение», потому что это привело бы к остановке VS.
Показать ещё 1 комментарий
Теги:
visual-studio-2013
runtime-error

3 ответа

0
Лучший ответ

Посмотрите на Structured Exceptional Handling aka SEH, который предлагается как V C++ -специальное расширение языка C++.

ср

0

Если вы скомпилируете свой код с /EHa компилятора /EHa, тогда компилятор будет генерировать код таким образом, чтобы исключения Win32 (например, нарушения доступа) были выбраны как обычные C++ исключения и могут быть пойманы блоками catch(...).

Если вы это сделаете, будьте осторожны, чтобы весь ваш код был скомпилирован с теми же параметрами (и будьте особенно осторожны с любыми сторонними библиотеками, которые вы используете).

0

Исключения, которые вы пытаетесь поймать (например, нарушения доступа), являются специфичными для ОС. Visual Studio позволяет уловить их с помощью catch(...) в качестве расширения. Вы также можете взглянуть на Управление структурированными исключениями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню