Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладное программирование 2014 / Прикладное программирование -Конспект лекций - заготовка для издания.doc
Скачиваний:
162
Добавлен:
21.03.2016
Размер:
3.24 Mб
Скачать

8.2 Основные инструменты отладки

8.2.1 Управление запуском программы может производиться следующими командами (через меню Debug):

Main– исполнение до функцииMainзапускается выборомDebug→GoMain;

Run– после остановки можно продолжить исполнение нажатием кнопкиRun;

Run to Cursor– курсор устанавливается на желаемое место в программе, затем программа запускает нажатием этой кнопки;

Set PC to Cursor– тоже с установкой курсора в программном счетчике

Animate– программа исполняется с задержках в точках останова на заданное время, устанавливаемое черезOptions→Customize);

Halt– остановка программы в любой момент нажатием на кнопку.

Пошаговый режим исполнения возможен только после останова. Пошаговое исполнение управляется кнопками. Возможны три вида шагов:

- Single StepилиStep Into- выполняет одно одиночное утверждение и останавливает исполнение;

- Step over– выполняет функцию и останавливает;

- Step out– выполняет текущую подпрограмму и возвращает вызванную функцию.

8.2.2 Точки останова (Breakpoints)

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

BreakpointManager- конфигурирует точки останова и устанавливает связанные с ними действия и свойства. Открывается через менюDebug→BreakpointManagerи содержит следующие функции:

New Item– установить новую, потребует ввести адрес точки останова, соответствующее положению в окне Ассемблера;

Remove Selected Items– удаление одной или нескольких выделенных точек;

Remove All- удаление всех точек;

Enable All- удаление всех или, с использованием выпадающего окна, группы точек;

Disable All- выключение всех или, с использованием выпадающего окна, группы точек;

Goto Location– открывает адрес точки останова;

Open Property Window- открывает окно свойств точки останова;

Hide/Show Columns– выбирает колонки, отображаемые в окнеBreakpointManager;

Create/Filter Groups– открывает перечень группы точек останова, позволяет редактировать список групп;

Load Configuration– загружает набор точек останова, который был ранее создан и сохранен;

Save Configuration- сохраняет набор точек останова, в противном случае при закрытииCCSон теряется.

Программные точки останова могут устанавливаться в окнах С-кода и дизассемблера, число точек не ограничено. Поставьте курсор в желаемое место установки точки (перед строкой в окне С-кода, на строку – дизассемблера), двойным щелчком мыши зафиксируйте положение точки – должна появиться жирная красная точка. Установка точек останова может также производиться через ToggleBreakpointменю и кнопку, а также через менюDebug→BreakpointManager.

Аппаратные точки останова отличаются от программных тем, что не модифицируют программу, они используют аппаратные ресурсы контроллера и особенно полезны при работе из ПЗУ и для прерывания доступа к памяти (последние не отображаются в окнах С-кода и памяти). Число точек ограничено ресурсами контроллера. Для установки выберите Debug→BreakpointManager; в менюNewвыберитеHardwareBreakpoint; введите адрес программы или памяти, где нужно установить точку, в форме С-выражения или имени или имени символа.

8.2.3 Подключение точек останова к файлам – настройка действия точек останова, позволяющих:

- передавать входные данные из файла на компьютере программиста в буфер на целевой плате;

- передавать выходные данные из буфера на целевой плате в файл на компьютере программиста;

- обновлять данные в окне, например в виде графика.

Использование точек останова для передачи входных данных из файла на компьютере программиста в буфер на целевой плате может быть организовано следующим образом:

1. выбрать File→LoadProgram, файл с именем .out, нажатьOpen;

2. дважды щелкнуть на файле с именем .с в окне ProjectView;

3. выбрать Debug → Breakpoint Manager;

4. установить курсор на строку с функцией main, для которой устанавливается точка останова. Обозначить имя функции.

5. щелкнуть кнопкойToggleBreakpointили нажатьF9 – должна появиться жирная красная точка;

6. в окне Breakpoint Manager, гдедолжна появиться точка останова, выбрать столбецActionи щелкнуть по выпадающему окошку в ряду, где установлена точка. Выбрать действиеReadDatafromFile– появится диалоговое окноParameter.

7. в свободном окошке рядом с надписью Fileдойдите до файла с данными и щелкните. Измените начальный адрес (где должны размещаться данные) и длину (сколько данных считывается каждый раз при достижении точки останова);

8. Нажмите OK. Появится окно управления, которое позволит перемещаться по файлу данных.

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

8.2.4 Окно наблюдения

Использование окна для наблюдения за изменением величины переменной

При отладке полезно наблюдать за изменением величины переменной в процессе исполнения программы. Окно наблюдения позволяет отслеживать величины локальных, глобальных переменных и С/С++ выражений. Можно также добавить статическую переменную из списка как наблюдаемую.

Для открытия окна наблюдения WatchWindow:

1 выбрать View→WatchWindowили щелкнуть по иконкеWatchWindow; ОкноWatchWindow содержит две таблицыWatchLocalsиWatch1.

В таблице WatchLocalsотладчик автоматически отображает Имя, величину, тип и опциюRadixпеременных, которые являются локальными для исполняемой функции;

В таблице Watch1 отладчик отображает Имя, величину, тип и опциюRadixдля локальных и глобальных переменных и выражений, которые заданы.

2. выбрать File→LoadProgram, загрузить файл с именем .outдля данного проекта;

3. дважды щелкните на файле с именем .с в окне ProjectView;

4. поставить курсор на строку с точкой останова;

5. щелкнуть кнопкой ToggleBreakpointили нажатьF9 – должна появиться жирная красная точка;

6. выбрать View→WatchWindow, выделится область в нижнем правом углу окна. При исполнении программы в этом окне отображаются величины наблюдаемых переменных. По умолчанию в таблицеWatchLocalsотображаются переменные, которые являются локальными для исполняемой функции;

7. если это не main, то выбратьDebug→GoMain;

8. выбрать Debug→Runили нажать кнопку А5 или кнопкуRun; ОкноWatchWindowобновит величину локальных переменных;

9. выбрать таблицу Watch 1;

10. щелкнуть по значку Expression в колонке Name и напечатать имя переменной для наблюдения;

11. щелкнуть по свободному пространству в окне наблюдения для сохранения изменений; величина переменной должна появиться немедленно.

Подобным образом таблице Watch 1 организуется наблюдение за элементами структуры.

8.2.5 Подобным образом организуются окна для просмотра памяти и для просмотра и редактирования содержимого регистров.

8.2.6 Режимы дизассеблера

Режим дизассемблирования. Отладчик автоматически открывает окно дизассемблера при загрузке программы в реальный или симулированный процессор. В окне отображаются дизассемблированные команды и символьная информация, необходимая для отладки. Дизассемблирование - процесс обратный ассемблеру, позволяющий отобразить содержимое памяти в виде ассемблерного кода. Символьная информация состоит из символов и цифробуквенных строк, которые представляют адреса или величины в целевой плате. При пошаговом исполнении программы происходит соответствующее перемещение инструкций в окне дизассеблера.

Смешанный режим позволяет просмотр в одном окне дизассеблированного текста с исходным текстом на С, строки текстов перемежаются. Включение смешанного режима через View→MixedSource/ASM(либо правой кнопкой в окне исходного файла), выбратьMixedModeилиSourceMode.

8.2.7 Вызов стека

Для проверки вызова функций используется окно CallStack. Вызов окна черезView→CallStackили кнопкойViewStack.

Дважды щелкнуть по функции в окне, исходный текст функции отобразится в основном окне. CallStackработает только с текстом на С, причем программа должна иметь главную функцию и стековую секцию, в противном случае появится сообщение:C source is not available.