dxp 64 20 апреля, 2016 Опубликовано 20 апреля, 2016 · Жалоба Всем привет! Собственно сабж. Подробности по ссылке Из заметного: добавлен Blackfin/GCC порт и примеры; отладочные фичи - можно задавать в режиме отладки строковые имена процессам и появилась возможность совместно с openOCD вести отладку с поддержкой RTOS, т.е. в отладчике видны процессы, их статусы, контексты, стеки вызовов. Работает это пока только для Cortex-M0/M3, GCC порт. openOCD из главного репозитория пока (надеюсь, что только пока) это не поддерживает, т.к. мы ещё не отправляли туда соответствующие добавление (ждём разрешения ситуации с M4). Для работы нужно скачать openOCD из этого репозитория и собрать. Проверялось на GDB, Insight и Eclipse. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 22 апреля, 2016 Опубликовано 22 апреля, 2016 · Жалоба :1111493779: У меня такое впечатление, что никто не понял, в чём состоит новая отладочная функциональность. Я, в общем-то, тоже этого не понял, пока не посмотрел на картинку. Поэтому прилагаю картинку отладчика, чтоб все могли оценить. Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 64 22 апреля, 2016 Опубликовано 22 апреля, 2016 · Жалоба Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно. А вот так выглядит это в gdb-insight. Видно четыре процесса - их приоритеты, имена и состояния, видно, что активный IdleProc, остальные в саспенде. Можно посмотреть, чего ждут неактивные процессы: MainProc (слева) и Terminal (справа): Как видно, MainProc находится в слипе, а процесс Terminal ждёт флага событий. Теперь ставим брейкпоинт на функции, вызываемой из процесса Terminal, посылаем через терминал команду, попадаем в останов: Теперь видно, что IdleProc находится в состоянии Preempted, активный - Terminal. Ну, и на всех картинках видно, что помимо состояния процесса и его стека вызовов отображается также и его контекст - содержимое регистров. В общем, вся эта информация может оказаться весьма полезной. Лично для самым ценным является стек вызовов процесса - бывает, что какой-то процесс не проявляет признаков жизни, где-то залип, что-то ждёт, а что - не ясно. И вот эта фича как раз позволяет быстро увидеть, где он там пророс, т.е. локализовать направление поиска. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 5 февраля, 2018 Опубликовано 5 февраля, 2018 · Жалоба Исправил ошибки в нашем клоне openOCD: - в прерываниях, возникших во время передачи управления неверно определялся активный процесс, что вводило gdb в шок и он рвал соединение. - поменял местами маркирование вытесненного (preempted) и приостановленного (suspended) состояний процесса. Теперь процесс, отдавший управление сам, помечается как приостановленный, а тот, управление у которого отобрал более приоритетный процесс - как вытесненный. Поправка к первому сообщению темы: работает не только с Cortex-M0/M3, но и с ARM7TDMI (хотя это сейчас уже мало кому может быть интересно). По опыту работы в течении двух лет: поддержка ОС в отладчике существенно облегчает отладку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться