Russian Qt Forum
Ноябрь 23, 2024, 11:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt creator. Установка брэйкпоинтов  (Прочитано 3413 раз)
silart
Гость
« : Февраль 18, 2013, 05:16 »

Добрый день!

Использую Qt Creator + MinGW + GDB.

Заметил странную особенность.

Когда устанавливаешь брэйкпоинт внутри блока catch() {} он почему-то не срабатывает во время отладки. Но если из этого блока вызвать функцию и внутри нее установить брэйкпоинт, то все работает нормально. Внутри catch () {} устанавливать брэйкпоинты бывает очень удобно потому что в момент отлавливания исключения сразу видишь строку сообщения об ошибке:

Код:
        try
        {
        ...
        ...
        }
        catch (std::exception& e)
        {
            std::string what = e.what();
            cerr << what << endl;
        }

Записан
carrygun
Гость
« Ответ #1 : Февраль 18, 2013, 05:34 »

Дело не в try/catch. "Точка останова" срабатывает ДО выполнения оператора в строке, а не ПОСЛЕ его выполненя. Я обычно какойнить qDebug() вставляю на следующей строке, и на него вешаю эту точку.
Записан
Bepec
Гость
« Ответ #2 : Февраль 18, 2013, 07:01 »

А я просто ставлю на последнюю и делаю "Шаг" отладчиком.
Записан
silart
Гость
« Ответ #3 : Февраль 18, 2013, 07:03 »

Да, но в блоке catch() брэйкпоинты ни на какой строке не работают. Можно его поставить на строчку выше и будет тот же результат.
Не знаете в чем причина?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Февраль 23, 2013, 12:16 »

Для gdb можно в параметры запуска прописать "catch throw" и тогда отладчик будет брякаться на месте выброса исключения - гораздо удобнее, чем бряка в catch()
Записан
silart
Гость
« Ответ #5 : Февраль 25, 2013, 05:07 »

Для gdb можно в параметры запуска прописать "catch throw" и тогда отладчик будет брякаться на месте выброса исключения - гораздо удобнее, чем бряка в catch()

Да, я так пробовал, но мне показалось не очень удобным потому что не получается посмотреть что возвращает e.what(). Может как-то можно посмотреть?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.