Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2743
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Введение в отладку

142

Рисунок 10: Диалоговое окно Debug Configuration – раздел Common

Наконец, перейдите в раздел Common и отметьте опцию Shared file10 в поле Save as и установите флажок Debug в поле Display in favorites menu, как показано на рисунке

10.

Нажмите кнопку Apply, а затем кнопку Close. Теперь мы готовы начать отладку.

5.1.4. Отладка в Eclipse

Eclipse предоставляет полноценную отдельную перспективу, посвященную отладке. Она предназначена для предоставления большинства необходимых инструментов в процессе отладки, и ее можно настраивать по мере необходимости, добавляя другие представления, предлагаемые дополнительными плагинами (подробнее об этом позже).

Рисунок 11: Значок Debug для запуска сеанса отладки в Eclipse

Чтобы начать новый сеанс отладки с использованием ранее созданной конфигурации отладки, вы можете нажать на стрелку рядом со значком Debug на панели инструментов Eclipse и выбрать конфигурацию отладки, как показано на рисунке 11. Eclipse спросит вас, хотите ли вы переключиться на перспективу отладки Debug. Нажмите кнопку Yes

10 Данный параметр сохраняет конфигурацию отладки на уровне проекта, а не как глобальный параметр Eclipse. Это позволит нам поделиться конфигурацией с другими людьми, если мы будем работать в команде.

Введение в отладку

143

(настоятельно рекомендуется установить флажок Remember my decision). Eclipse переключается на перспективу отладки Debug, как показано на рисунке 12.

Рисунок 12: Перспектива отладки Debug

Давайте посмотрим, для чего используется каждое представление. Верхнее левое представление называется Debug и показывает все запущенные действия по отладке. Это древовидное представление, и первая запись представляет собой процесс OpenOCD, запущенный с использованием конфигурации внешней отладки. В конечном итоге мы можем остановить выполнение OpenOCD, выделив исполняемую программу и щелкнув по значку Terminate на панели инструментов Eclipse, как показано на рисунке 13.

Рисунок 13: Как прекратить выполнение отладки

Введение в отладку

144

Второе действие по отладке (activity), показанное в представлении Debug, представляет собой процесс GDB (GDB process). Данное действие по отладке действительно полезно, потому что, когда программа остановлена, здесь отображается полноценный стек вызовов (call stack), и оно предлагает быстрый способ навигации внутри стека вызовов.

Рисунок 14: Панель контроля переменных в перспективе отладки Debug

Верхнее правое представление содержит несколько вложенных панелей. Панель переменных Variables предлагает возможность проверять содержимое переменных, определенных в текущем стековом кадре (то есть выбранной процедуры в стеке вызовов). Нажав по контролируемой переменной правой кнопкой мыши, мы можем дополнительно настроить способ ее отображения. Например, мы можем изменить ее числовое представление с десятичного (по умолчанию) на шестнадцатеричное или двоичное. Мы также можем привести ее к другому типу данных (это действительно полезно, когда мы имеем дело с необработанным объемом данных, который, как нам известно, представляет собой определенный тип – например, с байтами, поступающими из файла выходного потока). Мы также можем перейти по адресу памяти, где хранится переменная, щелкнув по пункту View Memory… в контекстном меню.

Панель Breakpoint перечисляет все используемые точки останова в приложении. Точка останова – это аппаратный примитив, который позволяет остановить выполнение микропрограммы при достижении счетчиком команд (Program Counter, PC) заданной инструкции. Когда это происходит, отладчик получает предупреждение, и Eclipse показывает контекст остановленной инструкции. Каждый микроконтроллер на базе Cortex-M имеет ограниченное количество аппаратных точек останова. Таблица 2 резюмирует максимальное количество точек останова и точек наблюдения (watchpoints)11 для имеющихся семейств Cortex-M.

Таблица 2: Доступные точки останова/точки наблюдения в ядрах Cortex-M

Cortex-M

Точки останова

Точки наблюдения

M0/0+

4

2

M3/4/7

6

4

11 Точка наблюдения, по факту, – это более продвинутый примитив отладки, который позволяет определять точки останова при заданном условии для данных и периферийных регистров, т. е. микроконтроллер останавливает свое выполнение, только если переменная удовлетворяет выражению (например, var == 10). Мы будем анализировать точки наблюдения в Главе 24.

Введение в отладку

145

Рисунок 15: Как добавить точку останова для выбранного номера строки

Eclipse позволяет легко устанавливать точки останова внутри кода из представления редактора в центре перспективы отладки Debug. Чтобы установить точку останова, просто дважды щелкните по синей полосе слева от редактора рядом с инструкцией, в которой мы хотим остановить выполнение микроконтроллера. Появится синяя точка, как показано на рисунке 15.

Когда счетчик команд достигает первой ассемблерной инструкции, составляющей выбранную строку кода, выполнение останавливается, и Eclipse показывает соответствующую строку кода, как показано на рисунке 12. После того, как мы проверили код, у нас есть несколько вариантов для возобновления выполнения.

Рисунок 16: Панель инструментов отладки Eclipse

На рисунке 16 показана панель инструментов отладки Eclipse. Подсвеченные значки позволяют контролировать процесс отладки. Давайте рассмотрим каждый из них подробнее.