Назначение отладчика, отладка программного кода


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

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

Напишем простенькую обработку. Затем зайдем в ее модуль и сделаем двойной щелчок на поле слева от программного кода. На поле появится маркер (рис. 6.1).
 
Теперь зайдем в меню Отладка и выберем пункт Начать отладку или же нажмем кнопку Начать отладку на панели инструментов. Запустится режим Предприятия, в котором нужно открыть обработку и запустить ее на выполнение. Обработка выполнится до точки останова, после чего ее выполнение будет прекращено. На изображении точки останова появится стрелка. Здесь произошла остановка выполнения модуля (рис. 6.2).
 
Выделим мышью переменную ТретьеЧисло в модуле и нажмем кнопку Вычислить выражение на панели инструментов. При выполнении программы первое число я задал равным 5, второе — равным 4. В итоге ТретьеЧисло равно 1,25, что мы и видим в окне расчета выражения (рис. 6.3).
 
Таким образом, при отладке программного кода мы можем смотреть, какое значение принимают те или иные переменные или реквизиты метаданных в процессе работы модуля. Большое количество таких значений удобно просматривать в табло, которое располагается в нижней части экрана. Чтобы перенести данные из окна вычисления выражения, достаточно нажать кнопку Включить в табло. Результат мы можем видеть на рис. 6.4.
 
Кроме значений переменных при отладке также можно видеть возвращаемые значения функций. Возьмем простой пример — процедуру, в которой нам будет предложено ввести код товара, а затем передающую этот код функции, в которой по переданному коду производится поиск. Если товар найден, тогда возвращается ссылка на него, если нет, то функция вернет строку "Нет такого товара". Точку останова установите на следующей строке после обращения к функции (рис. 6.5).
 
Запустим отладку, точка останова срабатывает. Выделим переменную ИскомыйТовар и нажмем кнопку ВычислитьВыражение. Код товара я ввел произвольный, так что неудивительно, что функция вернула значение "Нет такого товара". Вычисленное значение мы видим на рис. 6.6.
 
В меню Отладка выберем пункт Продолжить отладку или нажмем ту же кнопку на панели инструментов. На этот раз введем существующий код товара, вычислим, чему теперь равно значение, возвращаемое функцией. Другое дело! Вот так выглядит развернутая информация по элементу справочника "Номенклатура" (рис. 6.7).
 
Перенесем результат в табло, где уже собраны различные результаты отработки программных модулей. Кстати, ненужные уже можно удалить, выделив их мышью и нажав клавишу <Delete>. Переменные и элементы, имеющие свойства, доступны к открытию с помощью значка "+" возле переменной (рис. 6.8).
 
В самом деле, на рис. 6.8 "ИскомыйТовар" — это элемент справочника товаров, он обладает какими-либо реквизитами и свойствами, которые имеются у этого справочника, а кнопка, как элемент формы, опять-таки имеет набор свойств. Теперь напишем простую обработку, перебирающую в цикле справочник номенклатуры и присваивающую переменной Товар ссылку на каждый перебранный элемент справочника. Точку останова ставим уже после расчета переменной Товар (рис. 6.9).
 
Зачем нам понадобился еще один пример на рассмотренную тему? А затем, чтобы продемонстрировать, как при работе цикла меняется значение переменной Товар, когда ей по очереди присваиваются все новые элементы. Именно так бы мы искали ошибку в работе цикла. На рис. 6.10 и 6.11 переменная Товар изменяется при переборе справочника в цикле.
 
А теперь установим точку останова в обработке "РеестрРазвозок", созданной нами заранее (рис. 6.12).
 
При срабатывании точки останова пытаемся определить значение переменной Ном, соответствующей номеру строки в печатной форме. Выделяем в коде переменную Ном, вычисляем ее... и получаем вообще отсутствие значения (рис. 6.13).
 
Однако результат совершенно правильный. Ном приобретает значение только после операции присваивания, а при первом проходе цикла эта переменная просто не могла получить определенное значение. Однако при продолжении отладки мы получаем уже совершенно иные значения. По очереди выделите левую часть каждого выражения в цикле (ОбластьСтрока.Параметры.Ном, ОбластьСтрока.Параметры.ПечАвтомобиль, ОбластьСтрока.Параметры.ПечНомер, ОбластьСтрока.Параметры.ПечКилометраж, ОбластьСтрока.Параметры.ПечЗатратыТоплива, ИтогоТоплива) и для каждого сначала вычислим выражение кнопкой ВычислитьВыражение, а потом включим в табло полученный результат кнопкой ВключитьВТабло. Должно получиться так, как показано на рис. 6.14.
 А теперь несколько раз подряд нажмите клавишу <F10>, что эквивалентно нажатию кнопки Шагнуть черезна панели инструментов. Курсор-стрелка при каждом нажатии будет перемещаться на одну строку модуля вниз, при этом соответствующее выражение, которое было вычислено и включено в табло, будет изменяться в зависимости от того, какое значение оно при этом принимает. Это так называемая пошаговая отладка, когда мы не запускаем отладку в автоматическом режиме от одной точки останова к другой, а выполняем модуль как бы сами — построчно. Результат первого пошагового прохода цикла можно видеть в табло, изображенном на рис. 6.15. Переменные те же, что и на рис. 6.14, а вот данные уже другие.
 
Обратите внимание, что переменная ПечАвтомобиль имеет уровни группировки и может быть "открыта" значком "+". Это правильно, поскольку объект имеет тип "Справочник.Автомобили". В развернутом виде коллекция свойств этой переменной выглядит так, как показано на рис. 6.16.
  
Таким образом, используя пошаговую отладку, мы прокручиваем выполнение программного модуля в "режиме замедленной съемки", построчно просматривая, как изменяются значения переменных, и можем увидеть, когда значение неверное.

Похожие новости

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.