Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
1

Отладка в XE2 (при срабатывании try/catch)

05.11.2014, 08:16. Просмотров 576. Ответов 10
Метки нет (Все метки)

Всем привет, подскажите как настроить дэбагер что бы он корректно отрабатывал при срабатывании catch в конструкции try/catch?

Сейчас получается так: ставлю курсор F4, начинается выполнение программы, если до курсора встретилась try/catch а именно сработал catch, то вылетает сообщение о срабатывании с предложением закончить или продолжить отладку, если нажать Продолжить, то выполнение программы происходит до конца без останова в требуемом месте на курсоре.
Без try/catch все ок работает.

Подскажите пожалуйста, уже не один год парюсь, но все руки не доходили к профессионалам обратиться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2014, 08:16
Ответы с готовыми решениями:

Сброс МК при срабатывании реле.
Делал я одно устройство с несколькими релюшками. Так вот при срабатывании реле всегда неизбежно...

Вылет при срабатывании деструктора
Собственно говоря вот: class MatrixGraph { int **arcs; int n; public: ...

Выполнение действия при срабатывании датчика
Хочу реализовать схему: к ардуино подключен датчик (не важно какой), при его срабатывании в другом...

Выход из цикла при срабатывании исключения
int main() { cout << "калькулятор" << endl; cout << "введите число" << endl; cin...

10
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
05.11.2014, 11:47 2
А если точку останова поставить, а не F4?
При событийном программироваании, что есть сейчас - точки останова как то предпочтительнее.. ИМХО
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
05.11.2014, 13:19  [ТС] 3
Тоже самое. Точка будет игнорироваться, кк будто её и нет. Просто с ф4 мне удобнее, знаю где искать ошибку, встаю туда и смотрю значения переменных.
Нужно научить отладчик не вылетать при срабатывании catch.
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
05.11.2014, 13:24 4
немного недопонял.
если у тебя есть код
C++
1
2
3
4
5
6
7
8
    try {
      dPrice = Length*StrToFloat(sPrice)/1000.;
      lPrice->Caption = FloatToStrF(t->dPrice,ffNumber,5,2)+" "+fOption->sNamePrice;
    } catch (...) {
      Log("Ошибка расчёта цены.",0);
      dPrice = 0;
      lPrice->Caption = "NaN";
    }
То при возникновении ошибки в строке 2 естесственно код строки 3 не выполнится, хоть туда по F4 идти, хоть по точке останова...
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
05.11.2014, 16:29  [ТС] 5
Да я это понимаю. Ф4 стоит далеко после данной конструкции, но если случится catch то дэбагер выполнит программу до конца игнорировав ф4.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
07.11.2014, 04:36  [ТС] 6
Никто try/catch и отладку совместно не использует?
0
432 / 399 / 57
Регистрация: 06.02.2012
Сообщений: 1,375
07.11.2014, 05:25 7
Проверил на XE и XE6 все работат без каких либо доп. настроек.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    int k=0;
    try
    {
        int a=1/k;
    }
    catch (...)
    {
        int b=0;/// тут брекпоинт
    }
    int c=0;/// тут брекпоинт
}
Создайте новый проект с аналогичным кодом и проверьте. Может просто билдер у вас не так работает.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
07.11.2014, 07:39  [ТС] 8
Действительно брекпоинт работает, а ф4 нет. Спасибо попробую использовать брекпоинт. Хотя временное решение для ф4 нашел, в настройках дебагера отключил реакцию на выскакивающие предупреждение. Работает, но надо не забывать его включать, т.к. в других случаях оно может быть полезным.
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
07.11.2014, 10:39 9
Цитата Сообщение от "krv" 05.11.2014, 10:47
А если точку останова поставить, а не F4?
Цитата Сообщение от "Rate93" Сегодня, 06:39
Действительно брекпоинт работает
нда
0
4027 / 2317 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.11.2014, 21:31 10
А то!
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 20
08.11.2014, 05:08  [ТС] 11
Да просто казалось что брекпоинт пробовал, почему то был уверен что с ней также не работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2014, 05:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Обход ошибки при срабатывании кода
Доброго всем дня. Подскажите, люди добрые. Запускаю код, выскакивает ошибка, ошибка понятная и...

Ошибка сегментации при срабатывании деструктора
Всем привет. Помогите, пожалуйста, разобраться с деструкторами. Суть проблемы заключается вот в...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.