Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: BELNETMON от Декабрь 24, 2009, 09:28



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

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

(http://belnetmon.bn.by/sm/lj/photos4/qt_debug_qstring.gif)
(http://belnetmon.bn.by/sm/lj/photos4/qt_debug_qstring_hint.gif)


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

P.S. У меня в VS2008 приведенный код нормально отлаживается..


Название: Re: Просмотр в режиме отладки QString
Отправлено: BELNETMON от Декабрь 24, 2009, 12:36
Переменные других типов замечательно видны
После написания этого сообщения порылся в интернете - проблема таки есть.


Название: Re: Просмотр в режиме отладки QString
Отправлено: xokc от Декабрь 24, 2009, 20:44
А debuger helper собран?


Название: Re: Просмотр в режиме отладки QString
Отправлено: BELNETMON от Декабрь 24, 2009, 21:13
Буду благодарен, если поясните, что в контексте моего инструментария нужно сделать?
Чего-то кроме установки QtCreator не делалось


Название: Re: Просмотр в режиме отладки QString
Отправлено: xokc от Декабрь 25, 2009, 21:34
В настройках QtCreator есть пункт Отладка и там что-то в духе "помощник отладчика (debugger helper)" - дома у меня Creator не установлен, поэтому точно не скажу. Там же есть кнопочка "Собрать".


Название: Re: Просмотр в режиме отладки QString
Отправлено: BELNETMON от Декабрь 25, 2009, 23:32
Нет, нет там уже такого давно


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

Ваша критика справедлива в том смысле что нормальный отладчик для структуры/объекта должен показать все ее члены (и private тоже), как, напр, делает Gdb. Но даже там просмотреть содержимое непросто  :)


Название: Re: Просмотр в режиме отладки QString
Отправлено: break от Декабрь 26, 2009, 01:08
Нет, нет там уже такого давно

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

Tools->Options-->Qt4-->QtVersion напротив соответственно активной версии Qt нажать Rebuild (для создания плагина Debugging Helper если он не создан)


Название: Re: Просмотр в режиме отладки QString
Отправлено: BELNETMON от Декабрь 26, 2009, 02:05
Спасибо, добрый человек!
Помогло.


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: jekazz от Декабрь 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. Всё работает, кроме помощника :(.
Что делать?


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: break от Декабрь 28, 2009, 22:45
попробуй указать откуда юзать debugger helper - там есть сосответствующий пункт --> "Use debugger helper from custom location"
А креатор то последний? и Qt? - в одной из версий была проблема с этим.


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: jekazz от Декабрь 29, 2009, 10:16
Qt Creator 1.3.0, Qt 4.6.0 - то есть всё последнее, самое новое. Да я вот и думаю указать путь к помощнику. Но вот какой файл указывать? Пробовал выбрать gdbmacros.dll - не помогло :(


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: reg_edit от Декабрь 30, 2009, 19:13
Кстате у меня тоже были проблемы с Debugger Helper ом..
Если Qt Creator запускать с правами админа то всё окей показывается, а если под простым пользователем (я под ним сижу) то не показывается...

у кого проблемы попробуйте запустить под админом .


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: jekazz от Декабрь 30, 2009, 20:42
Запускаю от пользователя с правами админа :(


Название: Re: Просмотр в режиме отладки QString [решено]
Отправлено: Sergey B. от Декабрь 31, 2009, 16:06
Надо открыть закладку Qt  - и там нажать кнопку сборки Debug helper. Чтобы оно собралось..