(Это первая в серии статей о сценариях в Eclipse и CodeWarrior. Оставьте комментарий — дайте мне знать, что вы думаете!)
Написание кода должно быть забавным, а отладка — просто необходимостью, потому что я редко делаю это правильно с первого раза. Eclipse с его графическим интерфейсом — отличная вещь, как и интерфейс командной строки. К счастью, инженеры CodeWarrior Eclipse добавили такой инструмент для отладчика CodeWarrior: оболочку отладчика в качестве отладчика командной строки с использованием языка сценариев TCL . Это дает мне мощный способ справиться со встроенной целевой платой: от базового доступа к памяти до пошагового и контролируемого выполнения до программирования флэш-памяти.
Оболочка отладчика доступна в меню « Окно»> «Показать представление» :
Хорошая команда для использования это помощь . Здесь перечислены встроенные команды:
Он также имеет функцию автозаполнения: начните вводить команду, а затем нажмите клавишу TAB : это покажет все соответствующие команды с синтаксисом:
Большинство команд имеют также короткую версию: поэтому я могу набрать help или просто h . Это экономит мне время на написание. Кроме того, я могу использовать клавиши курсора, чтобы перемещаться по истории команд.
Если я по умолчанию запускаю конфигурацию, я просто использую команду отладки :
%>debug Launching {1}: 0% complete : 0% complete : 7% complete Launching application: 7% complete Creating debug session: 7% complete Launching executable: 7% complete Preparing executable: 7% complete Loading symbolic information: 7% complete Finished loading symbolic information: 7% complete Preparing executable: 7% complete thread break: Stopped, 0x0, 0x0, cpu68K, test_UIWidgets.elf (state, tid, pid, cpu, target) thread set: Stopped, 0x0, 0x0, cpu68K, test_UIWidgets.elf (state, tid, pid, cpu, target) Downloading 14468 bytes...: 7% complete Download using 3rd party component...: 7% complete Download using 3rd party component...: 100% complete thread break: Stopped, 0x0, 0x0, cpu68K, test_UIWidgets.elf (state, tid, pid, cpu, target)
Но как узнать, какая конфигурация запуска по умолчанию? Есть команда запуска, которая сообщает это:
%>launch *>0 - test_UIWidgets_MCF51JM128_Internal_Flash_PnE U-MultiLink [CodeWarrior Download] 1 - TWR-LCD JM128 Bootloader PnE [CodeWarrior Download] 2 - Attach FSLBOT MCF52259_Internal_Flash [CodeWarrior Attach] 3 - Tower MCF52259 HotSync [CodeWarrior Attach]
Позиция со звездочкой (*) обозначает мою текущую конфигурацию запуска по умолчанию. Зная список запусков, я могу использовать любой индекс для отладки проекта:
%>debug 1
Или я могу использовать имя:
%>debug "TWR-LCD JM128 Bootloader PnE"
Завершить или убить сеанс отладки просто с помощью команды kill :
%>kill thread exit: Stopped, 0x0, 0x0, cpu68K, TWR-LCDBootloader.elf (state, tid, pid, cpu, target)
Шагать легко: пошаговая инструкция или пошаговая инструкция по сборке:
%>step asm %>stepi
Также есть пошаговая инструкция для перехода , перехода или выхода из функции:
%>step into %>step over %>step out
Чтобы установить точку останова, я использую команду bp . Использование bp без аргументов также перечислит мои контрольные точки.
%>bp main id instance address type enabled? process description #5 #1 m:0x00002f86 -auto ENABLED $0 ProcessorExpert.c, line 53, main [TWR-LCDBootloader.elf]
Чтобы возобновить приложение, я использую команду go :
%>go
Если он не достигает точки останова, я использую стоп, чтобы остановить цель:
%>stop
Чтобы проверить мои переменные, я использую команду var :
%>var fileStatus $00 %>var BL_flashErased $01
И чтобы проверить память, я использую команду mem :
%>mem 0x00800874 16 800874 $0000177A $00002F84 $00002F98 $00002C8A z... ./.. ./.. .,.. 800884 $00000000 $00002C9C $00000000 $65000C03 .... .,.. .... ...e 800894 $4A004D00 $31003200 $3800001E $45FF0000 .M.J .2.1 ...8 ...E 8008a4 $0200EB3C $904D5344 $4F53352E $30000220 <... DSM. .5SO ..0
ОК, этого пока достаточно. Это позволяет мне делать все основные отладки.
В следующий раз я собираюсь изучить, как я могу написать сценарий отладочной сессии. Я хочу автоматизировать вещи. Цель состоит в том, чтобы использовать скрипты для модульных тестов с использованием Debugger Shell.
Happy Shell Debugging