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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Просмотр в режиме отладки QString [решено]  (Прочитано 15512 раз)
BELNETMON
Гость
« : Декабрь 24, 2009, 09:28 »

Очень страшно, но эксперимент повторял 5 раз. Суть: при срабатывании точки останова инициализированная и не пустая переменная QString в 99% случаев показывается пустой. И в наблюдении за переменными, и в подсказках отладчика.
Исходные данные: OS WinXP, Win7
Qt Creator 1.3.0, Qt 4.6.0 (было и на более ранних версиях)
Отладчики и Gdb и Cdb
Не знаю как дальше жить. Спасает только вывод в консоль по месту брекпоинта, но это ж портит всю радость.

Далее на примере типовой случай. Переменная создана и ей присвоено значение. Содержимое в отладчике- пусто. Аналогично в хинте дебагера.


« Последнее редактирование: Декабрь 26, 2009, 02:06 от BELNETMON » Записан
ilot
Гость
« Ответ #1 : Декабрь 24, 2009, 12:13 »

Для правильной работы отладчика программа должны собираться со специальными отладочными флагами - иначе нужная
информация не будет включаться в исполняемый файл. 99%, что дело именно в этом  Подмигивающий
Цитировать
Очень страшно, но эксперимент повторял 5 раз
А как на счет локальных переменных других типов?
Попробуй создать рядом локальные переменные типов int, double (и т.п.), и проверь, будет ли отладчик отображать их
иниц. значения. Если нет - значить не были включены нужные флаги.

P.S. У меня в VS2008 приведенный код нормально отлаживается..
Записан
BELNETMON
Гость
« Ответ #2 : Декабрь 24, 2009, 12:36 »

Переменные других типов замечательно видны
После написания этого сообщения порылся в интернете - проблема таки есть.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #3 : Декабрь 24, 2009, 20:44 »

А debuger helper собран?
Записан
BELNETMON
Гость
« Ответ #4 : Декабрь 24, 2009, 21:13 »

Буду благодарен, если поясните, что в контексте моего инструментария нужно сделать?
Чего-то кроме установки QtCreator не делалось
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #5 : Декабрь 25, 2009, 21:34 »

В настройках QtCreator есть пункт Отладка и там что-то в духе "помощник отладчика (debugger helper)" - дома у меня Creator не установлен, поэтому точно не скажу. Там же есть кнопочка "Собрать".
Записан
BELNETMON
Гость
« Ответ #6 : Декабрь 25, 2009, 23:32 »

Нет, нет там уже такого давно
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Декабрь 26, 2009, 00:37 »

Далее на примере типовой случай. Переменная создана и ей присвоено значение. Содержимое в отладчике- пусто. Аналогично в хинте дебагера.
В данном случае "переменная" - экземпляр довольно сложного класса. "Присвоено значение" звучит неуместно - был вызван оператор присваивания который может делать все что угодно, в данном случае он конвертирует "AAA" в Unicode. С какой стати Вы рассчитываете увидеть в отладчике "AAA" если его в данной QString нет физически?

Ваша критика справедлива в том смысле что нормальный отладчик для структуры/объекта должен показать все ее члены (и private тоже), как, напр, делает Gdb. Но даже там просмотреть содержимое непросто  Улыбающийся
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #8 : Декабрь 26, 2009, 01:08 »

Нет, нет там уже такого давно

Все там есть! Tools-->Options-->Debugging Helper-->Use debugging helper --- поставить галочку - которая снимается кстати как раз для того чтобы например иметь возможность смотреть QString -- его приватные члены C++ класса а не только содержимое кутешной строки, но чтобы это работало надо в

Tools->Options-->Qt4-->QtVersion напротив соответственно активной версии Qt нажать Rebuild (для создания плагина Debugging Helper если он не создан)
Записан
BELNETMON
Гость
« Ответ #9 : Декабрь 26, 2009, 02:05 »

Спасибо, добрый человек!
Помогло.
Записан
jekazz
Гость
« Ответ #10 : Декабрь 28, 2009, 21:40 »

А мне не помогло! Всё собралось. В настройках стоит галочка "Использовать помощник отладчика". В Настройках версий появилась галочка в колонке "Помощник отладчика". В папке %QTDIR% появилась папка qtc-debugging-helper а в ней в подпапках debug и release появился gdbmacros.dll. Но всё равно не отображает значения QString и т.д. И в режиме отладки QTCreator с кнопками управление отладкой пишет "Помощники отладчика не найдены". При запущенной отладке ни один процесс не использует файл gdbmacros.dll.
Windows XP, Qt 4.6.0, MinGW, Gdb 7.0. Ставилось отдельно, не из QT SDK. Всё работает, кроме помощника Грустный.
Что делать?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #11 : Декабрь 28, 2009, 22:45 »

попробуй указать откуда юзать debugger helper - там есть сосответствующий пункт --> "Use debugger helper from custom location"
А креатор то последний? и Qt? - в одной из версий была проблема с этим.
Записан
jekazz
Гость
« Ответ #12 : Декабрь 29, 2009, 10:16 »

Qt Creator 1.3.0, Qt 4.6.0 - то есть всё последнее, самое новое. Да я вот и думаю указать путь к помощнику. Но вот какой файл указывать? Пробовал выбрать gdbmacros.dll - не помогло Грустный
Записан
reg_edit
Гость
« Ответ #13 : Декабрь 30, 2009, 19:13 »

Кстате у меня тоже были проблемы с Debugger Helper ом..
Если Qt Creator запускать с правами админа то всё окей показывается, а если под простым пользователем (я под ним сижу) то не показывается...

у кого проблемы попробуйте запустить под админом .
Записан
jekazz
Гость
« Ответ #14 : Декабрь 30, 2009, 20:42 »

Запускаю от пользователя с правами админа Грустный
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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