sonyps4.ru

Точки останова и вычисление выражений. Что такое точки останова данных

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

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

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


Рис. 2.9.

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

Рассмотрим некоторые методы отладки .

Ошибки в программе

Если в программе происходит ошибка, которая делает дальнейшее исполнение программы невозможным, система выдает сообщение об ошибке. Смоделируем эту ситуацию. Откроем модуль объекта для недавно разработанного документа НачислениеЗарплаты и добавим в его начало такой код, рис. 2.10 :

//Начало ошибочного кода НоваяПеременная=1/0; //Окончание ошибочного кода

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

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


Рис. 2.11.

Нажав на кнопку Подробно в этом окне, мы видим следующее окно, рис. 2.12 .

Нажатие на кнопку Закрыть позволяет проигнорировать ошибку, кнопка Конфигуратор открывает Конфигуратор , а кнопка Завершить работу завершает работу программы.

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

Если ошибочным окажется код, который исполняется в обычном режиме работы 1С:Предприятие, произойдет то же самое.

Удалим "ошибочный" код из текста модуля.

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

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

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

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

На месте щелчка появится большая красная точка - это и есть точка останова . Аналогичного эффекта можно добиться, если установить курсор в нужную строку кода и нажать на клавишу F9 , воспользоваться соответствующей командой контекстного меню строки или командой главного меню Отладка > Точка останова .

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

На обычной точке останова программа останавливается в любом случае, управление переходит к отладчику. Помимо обычных, существуют точки останова с условием , команду для установки таких точек останова , можно найти около соответствующих команд для обычных. При установке точки останова с условием появляется окно, рис. 2.14 , в котором нужно ввести условие, при выполнении которого программа будет остановлена.


Рис. 2.14.

Точку останова можно временно отключить. Для этого можно воспользоваться командой Отключить точку останова . Такой же командой точку можно включить. На рис. 2.15 вы можете видеть отключенную точку останова .


Рис. 2.15.

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

Удобным средством для управления точками останова является окно Точки останова , рис. 2.16 . Его можно вызвать командой Отладка > Список точек останова .

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

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

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

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

Исполнение программы после остановки

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

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

После того, как программа остановлена, программист может проанализировать ее и продолжить дальнейшее исполнение. А вот здесь существует несколько альтернатив. Они доступны из меню Отладка , рис. 2.18 .


Рис. 2.18.
Продолжить отладку - выбор этой команды (или нажатие на F5 ) позволяет продолжить отладку после остановки либо, если отладка еще не начата (в таком случае команда называется Начать отладку , но для ее запуска можно использовать ту же горячую клавишу - F5 ), запустить ее.
Перезапустить - эта команда нужна для перезапуска отладки . В частности, она полезна в том случае, если в код во время отладки были внесены изменения, и вы хотите продолжать отладку с учетом этих изменений.
Завершить - завершает отладку , закрывает 1С:Предприятие (но не Конфигуратор )
Остановить - "ручной" аналог срабатывания точки останова
Остановка по ошибке - открывает окно, рис. 2.19 , которое позволяет задавать параметры остановки при возникновении ошибок, а так же - указывать тексты отдельных ошибок, при возникновении которых следует остановить отладку . Если в этом окне установлен флаг Останавливаться по ошибке , при возникновении ошибки управление будет передано в отладчик. Этой возможностью полезно пользоваться на начальном этапе отладки решения, когда еще точно неизвестно, где именно могут возникать ошибки.


Рис. 2.19. breakpoint ) - это преднамеренное прерывание выполнения программы , при котором выполняется вызов отладчика (одновременно с этим, программа сама может использовать точки останова для своих нужд). После перехода к отладчику, программист может исследовать состояние программы (логи , состояние памяти , регистров процессора , стека и т. п.), с тем чтобы определить, правильно ли ведёт себя программа. После остановки в отладчике, программа может быть завершена либо продолжена с того же места где произошёл останов.

На практике, точка останова определяется как одно или несколько условий, при которых происходит прерывание программы. Наиболее часто используется условие останова при переходе управления к указанной инструкции программы (instruction breakpoint ). Другое условие останова - операция чтения, записи или изменения указанной ячейки или диапазона ячеек памяти (data breakpoint или watchpoint ).

Многие процессоры имеют аппаратную поддержку точек останова (обычно, только для instruction breakpoint и watchpoint). При отсутствии такой аппаратной поддержки отладчики используют программные точки останова.

Напишите отзыв о статье "Точка останова"

Отрывок, характеризующий Точка останова

– А это я у вас спрашиваю. Этого никто, и сам Бонапарте, не знает.
Болконский пожал плечами.
– Но ежели мост перейден, значит, и армия погибла: она будет отрезана, – сказал он.
– В этом то и штука, – отвечал Билибин. – Слушайте. Вступают французы в Вену, как я вам говорил. Всё очень хорошо. На другой день, то есть вчера, господа маршалы: Мюрат Ланн и Бельяр, садятся верхом и отправляются на мост. (Заметьте, все трое гасконцы.) Господа, – говорит один, – вы знаете, что Таборский мост минирован и контраминирован, и что перед ним грозный tete de pont и пятнадцать тысяч войска, которому велено взорвать мост и нас не пускать. Но нашему государю императору Наполеону будет приятно, ежели мы возьмем этот мост. Проедемте втроем и возьмем этот мост. – Поедемте, говорят другие; и они отправляются и берут мост, переходят его и теперь со всею армией по сю сторону Дуная направляются на нас, на вас и на ваши сообщения.
– Полноте шутить, – грустно и серьезно сказал князь Андрей.
Известие это было горестно и вместе с тем приятно князю Андрею.
Как только он узнал, что русская армия находится в таком безнадежном положении, ему пришло в голову, что ему то именно предназначено вывести русскую армию из этого положения, что вот он, тот Тулон, который выведет его из рядов неизвестных офицеров и откроет ему первый путь к славе! Слушая Билибина, он соображал уже, как, приехав к армии, он на военном совете подаст мнение, которое одно спасет армию, и как ему одному будет поручено исполнение этого плана.

Отладка 1С – главный программный механизм для поиска и устранения ошибок в коде. Основной инструмент, который используется в его работе – точка останова (break point) . Это маркер, который указывает на определённую строку в программном коде. Когда модуль достигает точки, исполнение программы останавливается.

Как устанавливать точки останова

Поставить точку остановы можно в любом месте. В окне модуля она обозначается специальным знаком. Чтобы начать работу с точками, необходимо нажать клавишу «F5». Если требуется присоединение запущенной рабочей базы, порядок действий следующий:

  • Зайти по пути: «Сервис» – «Параметры» – «Системные»;
  • Установить птичку напротив строчки «Отладка разрешена»;
  • Выйти из настроек и подключить новую базу: «Отладка» – «Подключение».

Точка останова ставится при помощи функциональной клавиши «F9». Нужно нажать её и выбрать необходимую точку. Для просмотра установленных точек используется сочетание «горячих» клавиш «Alt» + «F9» или путь «Отладка – Список точек останова».

Разновидности точек

Кроме стандартной точки в 1С доступны и точки с условием:

  1. Синяя точка. Используется для отлова конкретной итерации (действия, которое повторяется в цикле). При достижении точки активируется процесс отладки.
  2. Серая точка. Неактивная точка. Чтобы деактивировать её, необходимо нажать сочетание «горячих» клавиш «Shift»+»Ctrl»+»F9».
  3. Точка останова по ошибке. Основная точка для отладки. Выполнение кода останавливается в момент достижения ошибки.

Как вылавливать ошибки исполнения из кода

Основной смысл в том, чтобы исполнение программного кода остановилось на точке останова. Когда она установлена, требуется активировать процесс выполнения нужного фрагмента программного кода. Начнётся пошаговое выполнение кода.

Как пользоваться отладкой

В ходе работы Конфигуратора для ускорения процесса отладки может потребоваться перемещение по коду. Для этих целей используются функциональные клавиши «F10» и «F11». Если нужно перешагнуть на следующую строку, нужно нажать «F11». Но иногда этого не достаточно. Так, если на очередной строке будет находиться функция или процедура – возникнет «провал» в это действие. Чтобы исключить «провал», необходимо вместо «F11» использовать «F10», это позволит перешагнуть через функцию (или процедуру).

Как вычислять заданные выражения в коде

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

Чтобы открыть форму, нужно использовать «горячие» клавиши «Shift» + «F9» или зайти в меню («Отладка – Вычислить выражение»).

Также в 1С имеется функции «Табло» («Ctrl» + «Alt» +»W» или «Отладка – Табло»). Главное его отличие от «Вычислить выражение» — возможность работы с группой показателей, а не с одной переменной.

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

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

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

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

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

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

Таблица 1.2 – Директивы управления точками останова

Название

Пункт меню “Debug”

Кнопка

Горячая клавиша

Описание

Поставить точку останова

Toggle Breakpoint

Поставить (снять) точку останова в строке, где находится курсор

Убрать все точки останова

Remove all Breakpoints

Убрать все поставленные ранее точки останова

Создать программную точку останова

New Breakpoints/ Program Breakpoint

Создать точку останова путем задания программного условия

Создать точку останова по данным

New Breakpoints/ Data Breakpoint

Создать точку останова путем задания условия по данным

Для того, чтобы поставить точку останова в какой-либо строке программы, нужно сначала поместить в эту строку текстовый курсор. Затем выбрать директиву «Поставить точку останова» (см. табл. 1.2 ). Точка останова выглядит как коричневый кружочек напротив выбранной строки программы на левой границе текстового окна.

Если поместить курсор в строку, где уже есть точка останова, и выполнить еще раз директиву «Поставить точку останова», то точка убирается. Убрать сразу все поставленные точки останова можно при помощи директивы «Убрать все точки останова».

Второй способ простановки точек останова – задание их через меню. Предназначенный для этого пункт «New Breakpoints» меню «Debug» имеет два подпункта. При помощи подпункта «Program Breakpoint» можно устанавливать программные точки останова. То есть точно такие, какие мы ставили предыдущим способом.

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

Для этого вам необходимо заполнить поле «Break execution after: - hits» («Остановить выполнение после: - проходов»). Если число в этом поле не равно нулю, то программа остановится в данной точке останова не с первого раза, а лишь тогда, когда пройдет через нее указанное количество раз.

Если вы установили вашу точку останова не через меню, а напрямую в тексте программы, вы все равно можете вызвать описанный выше диалог и изменить в нем количество проходов, щелкнув; мышью по строке с описанием нужной точки останова во вкладке «Breakpoints and Tracepoints».

При помощи подпункта «Data Breakpoint» пункта «New Breakpoints» меню «Debug» можно задавать точки останова по данным. При выборе этого пункта меню открывается диалог, в котором вы можете выбрать любую из переменных вашей программы или любой ресурс микроконтроллера (из открывающегося списка) и поставить точку останова по обращению к этой переменной (ресурсу).

Программа позволяет выбрать целый ряд условий, при которых наступит останов программы. По умолчанию останов происходит при любом обращении к этой переменной как в режиме чтения, так и в режиме записи. Вы можете выбрать другое условие. Например, при равенстве переменной определенному значению. Выбор условия производится при помощи поля «Break when:» («Остановиться если:») и поля «Access type:» («Тип доступа»). Имя переменной выбирается при помощи поля «Location».

Диалог простановки точек останова обоих видов можно вызывать не только через меню. В верхней левой части вкладки «Breakpoints and Tracepoints» для этого имеется специальная кнопка.

После того, как вы проставили все точки останова, вы можете запускать программу в режиме автоматического выполнения. Для управления отладчиком в этом режиме программа AVR Studio также имеет несколько специальных директив (см. табл. 1.3 ). Запуск автоматического выполнения программы производится при помощи директивы «Пуск».

Пока программа находится в режиме автоматического выполнения, новое состояние регистров не отображается. Указатель текущей команды также отсутствует. В нижней строке главной панели программы в правой ее стороне находится индикатор состояния. В режиме останова это желтый кружочек с минусом посередине. Слева от него находится слово «Stopped» (Остановлено). В режиме автоматического выполнения программы желтый кружочек превращается в зеленый с плюсом внутри. Вместо слова «Stopped» появляется слово «Running» (Запущено).

Таблица 1.3Директивы управления процессом отладки

Название

Пункт меню “Debug”

Описание

Запустить

Запуск автоматического выполнения программы

с текущей команды

Остановить

Остановка автоматического выполнения программы

Исходное состояние (сброс микроконтроллера)

Закончить отладку

Закончить отладку

Если вы неправильно поставили точку останова или забыли ее поставить, программа будет находиться в режиме автоматического выполнения бесконечно долго. Для досрочной остановки программы используется директива «Остановить». Если в процессе отладки программы понадобится начать все сначала (симитировать сброс микроконтроллера), это можно сделать при помощи директивы «Сброс». По окончании отладки программы необходимо перейти в режим редактирования. Для этого служит директива «Закончить отладку».

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

На практике, точка останова определяется как одно или несколько условий, при которых происходит прерывание программы. Наиболее часто используется условие останова при переходе управления к указанной инструкции программы (instruction breakpoint ). Другое условие останова - операция чтения, записи или изменения указанной ячейки или диапазона ячеек памяти (data breakpoint или watchpoint ).

Многие процессоры имеют аппаратную поддержку точек останова (обычно, только для instruction breakpoint и watchpoint). При отсутствии такой аппаратной поддержки отладчики используют программные точки останова.


Wikimedia Foundation . 2010 .

Смотреть что такое "Точка останова" в других словарях:

    точка останова - stabdos taškas statusas T sritis automatika atitikmenys: angl. break point; breakpoint vok. Anhaltepunkt, m; Fixpunkt, m rus. точка останова, f pranc. point d arrêt, m; point d interruption, m … Automatikos terminų žodynas

    точка останова (программы) - — Тематики нефтегазовая промышленность EN breakpoint …

    точка ломаной линии - останов прерывание точка прерывания точка разрыва точка останова — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы остановпрерываниеточка… … Справочник технического переводчика

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

    - << Intel 80386 >> Центральный процессор Микропроцессор Intel 80386 Производство … Википедия

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

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

    Описание: Отладочная ловушка По умолчанию: завершение процесса коды SA SIGINFO TRAP BRKPT Достигнута точка останова TRAP TRACE Шаг трассировки выполнен В POSIX системах, SIGTRAP сигнал, посылаемый для информирования отладчика о… … Википедия

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



Загрузка...