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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: анализ выражений в отладке  (Прочитано 8241 раз)
andrew.k
Гость
« : Февраль 15, 2012, 14:48 »

почему отладчик не может отображать выражения?
например,
Код
C++ (Qt)
array[i].toMyClass().extract()
и часто в отладке сталкиваюсь с тем, что даже некоторые переменные не может показать, говорит <unavaillable syncronous data>

Это у всех так или только у меня?
« Последнее редактирование: Февраль 15, 2012, 14:54 от andrew.k » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Февраль 15, 2012, 16:21 »

 у меня тоже так, причем очень часто, юзаю qDebug() ,а че делать Улыбающийся
Записан
andrew.k
Гость
« Ответ #2 : Февраль 15, 2012, 16:28 »

у меня тоже так, причем очень часто, юзаю qDebug() ,а че делать Улыбающийся
Это бесит)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Февраль 15, 2012, 16:33 »

А мне нормально. Отладку делаю через qDebug.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #4 : Февраль 15, 2012, 16:44 »

А мне нормально. Отладку делаю через qDebug.
Ну ты ж не все данные в qDebug пишешь?
Бывает хочешь посмотреть что-то, когда по шагам идешь, а хрен.
1. Прервать отладку
2. qDebug() << FuckIt;
3. Собрать
4. Запустить.
5. Вернуться к тому с чего начали.

Не бесит? А ведь могло же нормально работать)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Февраль 15, 2012, 16:51 »

почему отладчик не может отображать выражения?
например,
Код
C++ (Qt)
array[i].toMyClass().extract()
и часто в отладке сталкиваюсь с тем, что даже некоторые переменные не может показать, говорит <unavaillable syncronous data>

Это у всех так или только у меня?
а где эти команды вводить в креаторе? это ж вводится в виде "p myexpression"?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #6 : Февраль 15, 2012, 16:54 »

почему отладчик не может отображать выражения?
например,
Код
C++ (Qt)
array[i].toMyClass().extract()
и часто в отладке сталкиваюсь с тем, что даже некоторые переменные не может показать, говорит <unavaillable syncronous data>

Это у всех так или только у меня?
а где эти команды вводить в креаторе?
Какие команды?
Что значит где? в окне watch рядом с другими переменными.

Цитировать
это ж вводится в виде "p myexpression"?
Поясни, о чем ты.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Февраль 15, 2012, 16:57 »

я о командах для отладчика в точке остановки. например в Xcode это можно делать. ну или если из-под терминала запускать приложение в виде "gdb start myapp" или как-то так.

скажем, я остановился в точке и хочу вывести значение переменной i - ввожу "p i" (print i), результат заносится в $1 и выводится.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #8 : Февраль 15, 2012, 17:06 »

я о командах для отладчика в точке остановки. например в Xcode это можно делать. ну или если из-под терминала запускать приложение в виде "gdb start myapp" или как-то так.

скажем, я остановился в точке и хочу вывести значение переменной i - ввожу "p i" (print i), результат заносится в $1 и выводится.
Какая разница в терминале или в гуе.
Все равно дефолтно gdb идет.

И он не всегда толком может распознать выражения и переменные.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Февраль 15, 2012, 17:13 »

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

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #10 : Февраль 15, 2012, 18:44 »

а кто-нибудь другим отладчиком пользуется?
Записан
b-s-a
Гость
« Ответ #11 : Февраль 16, 2012, 10:07 »

Народ, выражение array.toMyClass().extract() - это не просто арифметическое действие. Это вызов минимум 2-х методов. А как вам отладчик это сделает? Сначала скомпилирует, потом вызовет (а если приложение упадет из-за этого)?
Тут надо анализировать внутренние свойства класса. Если он находится во внешней библиотеке без отладочной информации - сочувствую.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #12 : Февраль 16, 2012, 10:13 »

Делаем вот так:
Код
C++ (Qt)
const MySlass myClass = array.toMyClass();
const XXX xxx = myClass.extract();
 
И отладчик все покажет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #13 : Февраль 16, 2012, 11:57 »

Народ, выражение array.toMyClass().extract() - это не просто арифметическое действие. Это вызов минимум 2-х методов. А как вам отладчик это сделает? Сначала скомпилирует, потом вызовет (а если приложение упадет из-за этого)?
Тут надо анализировать внутренние свойства класса. Если он находится во внешней библиотеке без отладочной информации - сочувствую.
Визуальная студия прекрасно справляется с любыми конструкциями.
И даже в старом добром билдере можно было это включать в окне watch ("allow side effetcs")

Схалтурили.

Пантер, это тоже самое, что юзать qDebug(). Нужна перекомпиляция. А хочется just-in-time.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #14 : Февраль 16, 2012, 15:44 »

Народ, выражение array.toMyClass().extract() - это не просто арифметическое действие. Это вызов минимум 2-х методов. А как вам отладчик это сделает? Сначала скомпилирует, потом вызовет (а если приложение упадет из-за этого)?
например при отладке Objective-C кода такой проблемы нету - ждб просто возвращается в предыдущее состояние если отсылка сообщения объекту крашит приложение
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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