Перевод главы «Отладочные функции µVision2»

Александр Бельченко
11 марта 2003
Перевод главы 6 «Отладочные функции µVision2» в формате pdf (202 КБ)


В конце прошлой недели я занимался отладкой достаточно простой программки, в которой тем не менее оказалось довольно трудно найти пару ошибок. Поскольку путем анализа текста программы отыскать причину мне не удалось, то единственным методом отладки оставалась работа в симуляторе. К счастью, интегрированная среда разработки от Keil Software µVision2 для микроконтроллеров (в частности, для семейства MCS-51) имеет очень и очень хороший набор средств отладки, и я с готовностью ринулся в атаку... Но уже спустя минут пятнадцать был вынужден признать, что отладка обмена по асинхронному порту в ручном режиме может быть ОЧЕНЬ утомительной, если учесть, что мне необходимо было имитировать прием процессором пакета из 302 байт.

Где-то после десятой введенной команды sin = 0x0E я понял, что к середине пакета обязательно ошибусь в каком-нибудь байте и буду слишком раздражен этим обстоятельством, чтобы нормально закончить работу.

uVision2 - debug session

Я понял, что для эффективной работы нужно использовать мощные возможности самой среды µVision2, а именно — определяемые пользователем отладочные функции. Я видел в некоторых примерах для µVision2, как могут быть удобны такие функции при отладке, но сам до этого не пробовал написать такую функцию самостоятельно. Что ж, время пришло!

Что такое отладочные функции и как с ними бороться изложено в документе «Getting Started with µVision2» (файл Keil\C51\Hlp\GS51.pdf) в главе 6. Изложено достаточно доходчиво, на простом английском языке. Я пару раз прочел этот текст, и мне кажется, что даже понял общий смысл, но почувствовал, что суть не ухватил. Дабы отвлечься от отладки приема трехсот с лишним байтов по последовательному порту, я решил перевести эту небольшую главку на русский язык. С одной стороны это оказалось несложным делом. С другой стороны — достаточно полезным для меня. В процессе перевода я смог глубже понять природу отладочных функций и правила их написания.

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

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

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