Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическое занятие №11.doc
Скачиваний:
5
Добавлен:
26.11.2018
Размер:
5.55 Mб
Скачать

Практическое занятие № 11

Тема: «Отладка ППО МК серии МС68 ».

Цель: Практически исследовать порядок и особенности отладки ППО МК серии МС68

Время: 2 часа

Оборудование: ПК, ПО.

Методические материалы и литература:

  • Методические указания по выполнению практического занятия;

    • Иллюстративный материал: «программирования МК серии МС68 на языке ASM.

Методические указания по выполнению практического занятия:

Последовательность выполнения работы:

  1. Изучить и законспектировать основные теоретические положения по теме, используя описание работы;

  2. Выполнить практическую часть практического занятия. При этом использовать описание работы, практический блок ПК, иллюстративный материал; В практической части отработать следующие подразделы:

  • Рассмотреть методы отладки ППО МК серии МС68.

  • Выполнить примеры отладки ППО МК серии МС68. и отразить в отчёте

  • Проанализировать результат отладки ППО МК серии МС68.; сделать выводы.

  1. Ответить на контрольные вопросы.

  2. Сделать выводы.

  3. Подготовить отчёт по установленной форме.

  4. Представить отчёт для защиты преподавателю.

1. Основные теоретические положения

Отсутствие синтаксических ошибок еще не означает отсутствие ошибок как таковых:

  • Можно напи­сать команду правильно, да не ту.

  • Но самая главная неприятность — ошибки алгоритма или его реализации.

Программист может упустить какой-либо шаг или неправильно поставить условие. Всех возможных ошибок алгоритма не перечесть. Но в результате про-грамма может работать неправильно либо совсем не работать.

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

Этапы процесса отладки

Процесс отладки начинается с перевода программы в соответствую­щий режим. Если проект открыт, а все его программы записаны и оттран­слированы, то для перехода в режим отладки выберите пункт «Start Debugging» в меню «Debug» или нажмите кнопку | на панели задач.

По окончании процесса подготовки программа переходит в новый режим. В окне 1 на передний план выходит вкладка «I/O View» (см. рис.2), которая теперь будет использоваться для просмотра содержимого всех регистров. Причем внешний вид этой вкладки немного изменяется. Для каждого элемента в дереве ресурсов появляется поле, отображающее его содержимое.

Б окне 2 на передний план выходит вкладка «Breakpoints and Tracepoints», где теперь будут отображаться все точки останова.

В панели инструментов активизируются все инструменты, относящиеся к режиму отладки (до этого они были неактивны).

В окне 3 на первый план выхо­дит текст главного программного файла. На левой границе окна этого файла появляется желтая стрелка— указатель текущей выполняемой команды.

Указатель установится в начало программы (напротив первой исполняемой команды). Теперь все готово для отладки.

Отладка может выполняться разными методами:

Самый простой метод— пошаговое выполнение.

Для того, чтобы сделать один шаг,

выберите в меню «Debug » пункт «Step into» («Шаг в») либо нажмите кнопку на панели инструментов.

Можно также просто нажать кнопку «F11». В результате программа выполнит одну текущую команду. Указатель текущей команды (желтая стрелка) переместится в следующую позицию. Содержимое регистров изменится в соответствии с выполненной операцией.

Можно это проверить, найдя нужный регистр в окне 1. Убедившись, что команда выполнена правильно, делайте следующий шаг. И так далее.

При этом можно проследить:

  • последовательность выполнения операций,

  • правильность выполнения условных переходов

  • и многое другое.

В любой момент вы можете вручную изменить содержимое любого из элементов в дереве ресурсов.

Причем можно изменять как содержимое любого отдельного разряда, так и всего регистра в целом.

Для изменения содержимого разряда достаточно щелкнуть при помощи мыши по одному из квадратиков, символизирующему нужный разряд ( рис. 2).

При этом состояние квадратика изменится на противоположное (еди­ница изме-нится на ноль либо наоборот)

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

Откроется окно содержимого. В этом окне вы можете выбрать одну из четырех форм представления числа (шестнадцатеричное, десятичное, восьми­ричное или двоичное) и изменить это значение в выбранном вами фор­мате. Затем нажмите кнопку «Оk» и изменение «запишется» в соответ­ствующий регистр.

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

Кроме директивы «Шаг в», имеется еще несколько ее модификаций. Их назначение и способы вызова приведены в табл.1.

Таблица 1.

Рис. 2. Изменение содержимого регистров

Директива «Шаг через» используется в том случае, если при пошаго­вом выполнении программы встретится команда вызова подпрограммы.

Если вы не хотите пошагово выполнять всю подпрограмму, вы можете выполнить ее за один шаг. При этом желательно, чтобы подпрограмма не содержала ошибок.

Директива «Шаг из» применяется в том случае, если вы все же вошли в подпрограмму, но затем поняли, что ее пошаговое выполнение излишне. Выбрав данную директиву, можно за один шаг выполнить все оставшиеся команды подпрограммы.

Директива «Выполнить до» применяется в том случае, когда какая-либо часть программы не оформлена в виде подпрограммы, но ее жела­тельно выполнить за один шаг. В этом случае в конце выбранного фраг­мента вы можете установить текстовый курсор (мигающую вертикаль­ную полоску) и выбрать директиву «Выполнить до». Отладчик за один шаг выполнит все команды, начиная с текущей (отмеченной желтой стрелкой) и вплоть до текстового курсора. Команда в строке с курсором выполняться не будет. Она станет текущей (на нее теперь будет указы­вать желтая стрелка).

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

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

  • например, используется сокрытие информации,

  • абстрагирование и интерфейсы,

  • а также все возможности языков, способствующие этим технологиям.

Существуют также технологии для проверки целостности архитектуры программы:

  • доказательства корректности программ,

  • моделирование,

  • анализ требований,

  • формальные проверки.

Ни одна из перечисленных технологий не изменила радикально способа создания программ: они работают лишь на небольших задачах.

В реальности всегда будут ошибки, которые мы находим с помощью тестирования и устраняем с помощью отладки (debugging).

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

Технические приемы, которые помогут уменьшить время отладки, включают:

  • хороший дизайн,

  • хороший стиль,

  • проверку граничных условий,

  • проверку правильности (исходных) утверждений и разумности кода,

  • защитное программирование,

  • хорошо разработанные интерфейсы-,

  • ограниченное использование глобальных данных,

  • средства контроля и проверки.

Каждая возможность в языке предотвращает одну проблему, но при этом имеет свою цену.

Если в языке высокого уровня простые ошибки исчезают автоматически, то ценой этого станет большая вероятность совершать ошибки высокого уровня. Никакой язык не защищает от ошибок полностью.

Основное время при программировании тратится на тестирование и отладку.

 

Отладчики

Компиляторы основных языков программирования обычно поставляются со сложными отладчиками, часто входящими в состав среды программирования, которая объединяет в себе:

  • создание и редактирование исходного кода,

  • компиляцию,

  • выполнение

  • и отладку.

Отладчики включают в себя:

графический интерфейс для пошагового выполнения программы,

  • оператор за оператором или функция за функцией,

  • с остановками на конкретных строках программы или при достижении какого-то условия.

  • Они также предоставляют возможность форматирования и отображения значений переменных.

Как используются отладчики?

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

Некоторые отладчики включаются автоматически, если во время выполнения программы что-то происходит не так, как следует.

Обычно довольно легко обнаружить, в каком месте выполнялась программ-ма, если она неожиданно аварийно завершилась, при этом можно рассмотреть последовательность функций, выполнявшихся в тот момент (это называется "просмотр стека вызовов"), а также отобразить значения локальных и глобаль-ных переменных. Этой информации бывает достаточно,/чтобы выявить ошибку. В противном случае можно повторно запустить программу в пошаговом режиме, чтобы обнаружить, где именно начинается неверное поведение.

В правильной среде программирования, в руках опытного пользователя, хороший отладчик делает отладку эффективной и быстрой, чуть ли не безболезненной.