? Анимация и создание сайтов
Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 [ 108 ] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

25.1. Отладчик кода на языке Python 341

Или Вы можете осуществить "вскрытие" уже после возникновения ошибки:

>>> import mymodule >>> mymodule.testO Traceback (most recent call last):

File "<stdin>", line 1, in ?

File "mymodule.py", line 2, in test print spam

NameError: There is no variable named spam

>>> import pdb

>>> pdb.pmO

> mymodule.py(2)test()

-> print spam

(Pdb)

Файл pdb.py может быть также использован в качестве программы для отладки других программ:

/usr/local/lib/python1.5/pdb.py myscript.py

25.1.1 Функции запуска отладчика

Модуль pdb определяет следующие функции, запускающие отладчик различными способами:

run( statements [, globals [, locals]])

Выполняет инструкции в строке statements (аналогично инструкции exec ) под контролем отладчика. Приглашение отладчика появляется перед выполнением первой инструкции: Вы можете установить точки останова или использовать пошаговый режим выполнения. Аргументы globals и locals определяют окружение, в котором выполняются инструкции; по умолчанию используются пространства имен модуля main (см. также раздел 10.3.11).

runeval( expression [, globals [, locals]])

Вычисляет выражение в строке expression (аналогично встроенной функции eval() ) под контролем отладчика и (если вычисление прошло успешно) возвращает его значение. В остальном поведение этой функции аналогично поведению функции run() .

runcall (function [, argl ...])

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



25.1.2 Команды отладчика

Ниже описаны команды, распознаваемые отладчиком. Большинство команд можно ввести в сокращенном виде; например, запись h(elp) означает, что для выполнения данной команды следует ввести h или help (но не he , hel , H , Help или HELP ). Аргументы команды должны быть отделены символами пропуска. Необязательные аргументы команды указаны в квадратных скобках ([аргумент]), альтернативные варианты разделены вертикальной чертой ().

При вводе пустой строки отладчик повторяет последнюю выполненную команду. Исключение: если последней была команда list , при вводе пустой строки выводятся следующие 11 строк исходного кода.

Все не распознанные отладчиком команды воспринимаются как инструкции языка Python, которые выполняются в контексте отлаживаемой программы. Команды, начинающиеся с восклицательного знака (!), всегда воспринимаются как инструкции языка Python. Выполнение произвольных инструкций является мощным средством отладки: Вы можете изменить значение переменной или вызвать функцию. Если при выполнении такой инструкции генерируется исключение, выводится информация об исключении, но состояние отладчика не изменяется.

Вы можете ввести несколько команд отладчика в одной строке, используя в качестве разделителя (; используется в качестве разделителя инструкций языка Python). Заметим, что отладчик не располагает "интеллектом", достаточным для того, чтобы распознать ;; в середине строк, заключенных в кавычки.

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

h(elp) [command] ?[command]

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

set trace()

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

post mortem( tb)

Производит "вскрытие" объекта tb (типа traceback).

pm()

Производит "вскрытие" объекта sys.last traceback.



25.1. Отладчик кода на языке Python 343

программу постраничного просмотра, заданную в переменной окружения PAGER. Так как аргумент command должен быть идентификатором, для получения подсказки об использовании команды ! необходимо ввести help exec .

w(here)

Выводит информацию о месте, на котором выполнение было приостановлено. d(own)

Перемещается на один кадр вниз по стеку (к более новому кадру стека).

u(p)

Перемещается на один кадр вверх по стеку (к более старому кадру стека).

b(reak) [([filename:]lineno function) [, condition]]

Устанавливает точку останова в строке с номером lineno в файле filename (по умолчанию в текущем файле) или на первой инструкции функции function. Если указан аргумент condition, точка останова будет принята во внимание только в тех случаях, когда выражение condition является истиной. Каждой точке останова присваивается порядковый номер, который может быть использован для ее снятия.

Без аргументов выводит информацию обо всех установленных точках останова.

tbreak [([filename:]lineno function) [, condition]]

Эта команда работает аналогично команде break , но устанавливает временную точку останова, которая будет снята после первого использования.

cl(ear) [bpnumber [bpnumber ...]]

Если задан список номеров точек останова (bpnumber), снимает их. При использовании без аргументов снимает все точки останова, предварительно запросив подтверждение.

disable [bpnumber [bpnumber ...]]

Временно отключает точки останова с номерами, указанными в списке аргументов. Вы можете снова включить их с помощью команды enable .

enable [bpnumber [bpnumber ...]]

Включает точки останова, номера которых указаны в списке аргументов.

ignore bpnumber [count ]

Указывает, что точка останова с номером bpnumber должна быть проигнорирована count (по умолчанию 0) раз.

condition bpnumber [condition]

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

s(tep)

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



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 [ 108 ] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145