dxp 115 April 20, 2016 Posted April 20, 2016 · Report post Всем привет! Собственно сабж. Подробности по ссылке Из заметного: добавлен Blackfin/GCC порт и примеры; отладочные фичи - можно задавать в режиме отладки строковые имена процессам и появилась возможность совместно с openOCD вести отладку с поддержкой RTOS, т.е. в отладчике видны процессы, их статусы, контексты, стеки вызовов. Работает это пока только для Cortex-M0/M3, GCC порт. openOCD из главного репозитория пока (надеюсь, что только пока) это не поддерживает, т.к. мы ещё не отправляли туда соответствующие добавление (ждём разрешения ситуации с M4). Для работы нужно скачать openOCD из этого репозитория и собрать. Проверялось на GDB, Insight и Eclipse. Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 22 April 22, 2016 Posted April 22, 2016 · Report post :1111493779: У меня такое впечатление, что никто не понял, в чём состоит новая отладочная функциональность. Я, в общем-то, тоже этого не понял, пока не посмотрел на картинку. Поэтому прилагаю картинку отладчика, чтоб все могли оценить. Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно. Quote Share this post Link to post Share on other sites More sharing options...
dxp 115 April 22, 2016 Posted April 22, 2016 · Report post Обратите внимание, для каждого процесса можно видеть его состояние (активный/спит), стек вызовов и все внутренние переменные. Я не ожидал, что такое возможно, если честно. А вот так выглядит это в gdb-insight. Видно четыре процесса - их приоритеты, имена и состояния, видно, что активный IdleProc, остальные в саспенде. Можно посмотреть, чего ждут неактивные процессы: MainProc (слева) и Terminal (справа): Как видно, MainProc находится в слипе, а процесс Terminal ждёт флага событий. Теперь ставим брейкпоинт на функции, вызываемой из процесса Terminal, посылаем через терминал команду, попадаем в останов: Теперь видно, что IdleProc находится в состоянии Preempted, активный - Terminal. Ну, и на всех картинках видно, что помимо состояния процесса и его стека вызовов отображается также и его контекст - содержимое регистров. В общем, вся эта информация может оказаться весьма полезной. Лично для самым ценным является стек вызовов процесса - бывает, что какой-то процесс не проявляет признаков жизни, где-то залип, что-то ждёт, а что - не ясно. И вот эта фича как раз позволяет быстро увидеть, где он там пророс, т.е. локализовать направление поиска. Quote Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 170 February 5, 2018 Posted February 5, 2018 · Report post Исправил ошибки в нашем клоне openOCD: - в прерываниях, возникших во время передачи управления неверно определялся активный процесс, что вводило gdb в шок и он рвал соединение. - поменял местами маркирование вытесненного (preempted) и приостановленного (suspended) состояний процесса. Теперь процесс, отдавший управление сам, помечается как приостановленный, а тот, управление у которого отобрал более приоритетный процесс - как вытесненный. Поправка к первому сообщению темы: работает не только с Cortex-M0/M3, но и с ARM7TDMI (хотя это сейчас уже мало кому может быть интересно). По опыту работы в течении двух лет: поддержка ОС в отладчике существенно облегчает отладку. Quote Share this post Link to post Share on other sites More sharing options...