Выполнение скрипта в режиме отладки

Печать Предыдущая страница Стартовая страница Следующая страница

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

В результате будет запущена программа IDLE (интегрированная среда разработки) в режиме редактирования файла скрипта.

dialog_debug

 

Для запуска скрипта на выполнение необходимо нажать F5 или выбрать пункт меню Run/Run Module.

Для пошагового выполнения скрипта необходимо:

-  запустить оболочку Shell (меню Run/Python Shell);

-  в меню оболочки Debug включить опцию Debugger.

 

Появится окно управления отладкой, в котором необходимо включить опцию Source. Для просмотра значений локальных переменных нужно включить опцию - Locals, глобальных - Globals.

 

dialog_debug2

 

Для отладки доступны команды (кнопки):

-  Go – продолжить без пошаговой отладки до точки останова.

-  Step – выполнить текущую строку и перейти к следующей

-  Over – если текущая строка содержит вызов функции, нажмите эту кнопку, чтобы войти в эту функцию

-  Out – выполнить и выти из функции

-  Quit – закончить выполнение.

 

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

 

dialog_debug3

 

После установки точки останова строка подсветится желтым цветом. Для выполнения до точки останова требуется нажать Go.

 

Чтобы обеспечить автономное выполнение скрипта в режиме отладки автоматически формируется копия скрипта с именем debug_имя_скрипта.py рядом с исходным скриптом.

В копию скрипта включаются 2 блока. Один записывается в начале скрипта, другой - в конце. Блоки имеют примерно следующее содержание:

 

#debug.begin1

import sys

sys.path.append('C:/Users/Public/Documents/Panorama/py_mapapi14')

import mapsyst

debug_syspath = 'C:/Program Files/Panorama/Panorama14/'

mapsyst.setuppanlib(debug_syspath)

import mapdebug

debug_docname = 'C:/111/test3d/debug_moveobjects.mpt'

debug_hmap, debug_hobj = mapdebug.open(debug_syspath, debug_docname)

if debug_hmap == 0:

   sys.exit()

#debug.end1

#debug.begin2

MoveObjects(debug_hmap, debug_hobj)

mapdebug.close(debug_hmap, debug_hobj)

#debug.end2

 

Если в процессе отладки были внесены правки в исходный код скрипта, то можно удалить вставленные блоки и переименовать скрипт.

Первый блок обеспечивает настройку доступа к прототипам функций и структур MAPAPI, библиотекам ГИС, составу данных и выделенным на картах объектам, которые были в момент формирования копии скрипта.

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

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

Если в процессе выполнения скрипта выполняется редактирование карты и карта имеет формат SITX, то при запуске скрипта в отладчике доступ на редактирование будет закрыт. Формат SITX предоставляет доступ на редактирование первой программе, которая его открыла. Поэтому необходимо либо отсортировать карту со сменой формата на SIT либо после формирования копии скрипта закрыть отладчик, закрыть ГИС и запустить из Проводника программу отладки.