Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt Creator remote debugging 
:(
    Опции темы
McMan
Дата 18.10.2012, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.2.2007
Где: Ярославль

Репутация: нет
Всего: 1



Здравствуйте!
Есть ли у кого-нибудь опыт настройки удаленного дебага Qt на устройстве.

конфигурация на данный момент такая

Qt Creator 2.4.1 
host        ::         Linux ubuntu-11 3.0.0-26-generic #43-Ubuntu SMP Tue Sep 25 17:20:50 UTC 2012 i686 i686 i386 GNU/Linux
target     ::         Linux dm816x-evm 2.6.37 #23 Tue Sep 25 10:32:10 MSK 2012 armv7l unknown
toolchain  ARM GNU/Linux Sourcery G++ Lite 2009q1-203

qt-everywhere-opensource-src-4.8.3

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

PM MAIL   Вверх
tzirechnoy
Дата 19.10.2012, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Конкретно с Qt -- нет. Впрочем, со всем остальным (от Borland Delphi 1.0 до связки лисп+ассэмблер  внтури микроконтроллера с 96k RAM) отладка (удалённая, приближённая, не суть) выглядела одинаково -- нахожу какой-то способ отправлять текст из программы наружу (запись в файл на диске, отправка в последовательный порт, отправка подключившэйся через TCP/IP socket программе), ставлю в программе в интересующих меня местах отладочную печать по условиям включённых опцый отладки, и печатаю интересующие меня или вообще подозрительный значения вместе с их временем.

Да, бывают некоторые исключения, когда хватает какого-то рода стандартного профиля -- например, из ltrace или gprof. Это, впрочем, редкость и и так понятно, что делать.
PM MAIL   Вверх
bsa
Дата 19.10.2012, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



tzirechnoy, ты видимо не понял. Речь идет о том, как к gdbserver запущенном на ARM прицепиться с помощью критора.
PM   Вверх
McMan
Дата 19.10.2012, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.2.2007
Где: Ярославль

Репутация: нет
Всего: 1



да.
товарищ bsa чуть более, чем наполовину прав...

я
собрал openssh на target
собрал qt-everywhere-opensource-src-4.8.3 debug

на данный момент
соединение с устройством есть, могу запустить, остановить приложение из криэйтора.
интересует  debug.

в логе дебаггера в Creator имею
&"Error while mapping shared library sections:\n"
>&"opt/qt-embedded/lib/libQtNetwork.so.4: No such file or directory.\n"

расскажите, ЧЯДНТ. 
в gdbinit (стартовом скрипте gdb) надо что-либо прописать? 
расскажите , если не в тягость, как - где должны лежать библиотеки?

PM MAIL   Вверх
tzirechnoy
Дата 20.10.2012, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
tzirechnoy, ты видимо не понял. Речь идет о том, как к gdbserver запущенном на ARM прицепиться с помощью критора.


Во-первых, вопрос был сформулирован по-другому.

Во-вторых, правильный ответ на этот вопрос -- никак, не страдайте фигнёй. gdb имеет смысл для взлома чужых бинарников и разбора глюков компилятора, но QtCreator в обоих этих случаях безсмысленнен. Для отладки своих программ есть более вменяемые средства, чем пытаться по шагам угнаться за процэссором.
PM MAIL   Вверх
McMan
Дата 20.10.2012, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.2.2007
Где: Ярославль

Репутация: нет
Всего: 1



tzirechnoy
вообщем-то, вопрос и не был сформулирован внятно в топ посте, признаю и прошу прощения еще раз
область новая для меня и просил any help
нельзя ли поподробнее прокомментировать вот это
Цитата

не страдайте фигнёй. gdb имеет смысл для взлома чужых бинарников и разбора глюков компилятора, но QtCreator в обоих этих случаях безсмысленнен. Для отладки своих программ есть более вменяемые средства, чем пытаться по шагам угнаться за процэссором.

дабы я не страдал фигней
PM MAIL   Вверх
tzirechnoy
Дата 21.10.2012, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
дабы я не страдал фигней 


Да я там как раз в первом своём комменте написал, как оно обычно делается. Коротко: текстовые логи изнутри программы. Всё остальное -- от лукавого.

Да, в винде иногда кажэтся, что понажымать F8 и покликать Watches будет быстрее и проще. Это глюки -- оно на самом деле очень тяжэло и медленно, по сравнению с рассматриванием своего лога.
 
Конструкт вида  debug = fopen(...); ... if (DEBUG[feature]) { fprintf(debug, ...)  } элементарен и сильно облегчает жызнь.
PM MAIL   Вверх
bsa
Дата 22.10.2012, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



tzirechnoy, я тоже так думал, пока писал программы объемом в 1-2 тетрадного листра. Когда проекты стали объемнее, то отладчик стал сильно выручать. Например, как с помощью лога отладить падение программы в неизвестном месте? Причем, программа падает где-то через час работы.
С помощью отладчика это делается легко - он перехватывает событие сбоя и ты можешь изучить стек вызовов, все переменные и пр. В случае с логами тебе надо: 1) во все функции воткнуть логирование. 2) дождаться падения и определить в какой функции. 3) добавить в эту функцию дамп всех возможных переменных. 4) дождаться падения еще раз... Итого, это может занять минимум 2 часа (это если ты код пишешь, как метеор).
PM   Вверх
tzirechnoy
Дата 22.10.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
Например, как с помощью лога отладить падение программы в неизвестном месте? Причем, программа падает где-то через час работы.


Вот с помощью лога это сделать банально. Лог перед падением прервётся. Точнее, если место -- действительно трудноуловимо, то, конечно, не всё так просто -- иначе бы в core dump глянул -- сразу место и нашёл. Да, это, кстати, довольно логичное применение gdb, и иногда полезное (особенно для чужых проектов), но это отнюдь не  пошаговая отладка. И интэграцыя в среду для трёх редко используемых команд как-то не очень нужна.

Так вот если место трудноуловимо, то для стандартного случая разноса несвоей памяти есть ElectricFence и другие профилирующие утилиты. В нестандартных случаях как минимум тактика работы с логами очевидна: выявляешь структуру, в которой обнаружывается критическое несоответствие, ставишь регулярную запись в лог её или хотя бы её соответствия ожыданиям, так и выясняешь, при какой операцыи её разносит. 

А вот что и как Вы собираетесь в течение часа смотреть отладчиком, яростно имитируя процэссор при помощи кнопок F7 и F8 и разглядывая окошко Watches -- это, как раз, очень интересный вопрос. А уж если падает при работе заказчика с программой -- то ещё и технически очень весёлый.
PM MAIL   Вверх
McMan
Дата 22.10.2012, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.2.2007
Где: Ярославль

Репутация: нет
Всего: 1



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

«Наш личный выбор — стараться не использовать отладчики, кроме как для просмотра стека вызовов или же значений пары переменных. Одна из причин этого заключается в том, что очень легко потеряться в деталях сложных структур данных и путей исполнения программы. Мы считаем пошаговый проход по программе менее продуктивным, чем усиленные размышления и код, проверяющий сам себя в критических точках.

Щёлканье по операторам занимает больше времени, чем просмотр сообщений операторов выдачи отладочной информации, расставленных в критических точках. Быстрее решить, куда поместить оператор отладочной выдачи, чем проходить шаг за шагом критические участки кода, даже предполагая, что мы знаем, где находятся такие участки. Более важно то, что отладочные операторы сохраняются в программе, а сессии отладчика переходящи.

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

«Отладка сложна и может занимать непредсказуемо долгое время, поэтому цель в том, чтобы миновать большую её часть. Технические приёмы, которые помогут уменьшить время отладки, включают хороший дизайн, хороший стиль, проверку граничных условий, проверку правильности исходных утверждений и разумности кода, защитное программирование, хорошо разработанные интерфейсы, ограниченное использование глобальных переменных, автоматические средства контроля и проверки. Грамм профилактики стоит тонны лечения.»

— Брайан Керниган и Роб Пайк


вообщем во многом согласен, то есть согласен и с tzirechnoy 
но вот, внезапно, хочется иметь коллегам удаленный дебаг на арм....
PM MAIL   Вверх
tzirechnoy
Дата 23.10.2012, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



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


И почему-то именно в QtCreator. Передайте, что это несложно -- но глупо и вообще за такие вещи ужэ бьют по рукам.
PM MAIL   Вверх
bsa
Дата 23.10.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



McMan, какого года цитата?
PM   Вверх
McMan
Дата 23.10.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 21.2.2007
Где: Ярославль

Репутация: нет
Всего: 1



подозреваю, 1999го

не хочу обсуждать парадигмы отладки. 
у кого нибудь есть ссылка на простейший мануал?
PM MAIL   Вверх
tzirechnoy
Дата 25.10.2012, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



Цитата
у кого нибудь есть ссылка на простейший мануал? 


Да пожалуйста.  http://doc.qt.digia.com/qtcreator/creator-debugging.html  http://sourceware.org/gdb/onlinedocs/gdb/R...-Debugging.html
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1071 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.