pdb

Отладчик командной строки

pdb.run(statement[, globals[, locals]])

Выполняет строку statement под управлением отладчика. Приглашение к вводу отладчика появляется непосредственно перед выполнением какого-либо программного кода. Ввод команды ‘continue’ инициирует выполнение этого кода. Аргументы globals и locals определяют глобальное и локаль ное пространство имен соответственно, в котором будет выполняться про граммный код.

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

Вычисляет выражение в строке expression под управлением отладчика. Приглашение к вводу отладчика появляется непосредственно перед выполнением какого-либо программного кода, поэтому чтобы вычислить значение выражения, необходимо ввести команду ‘continue’, которая запустит функцию run(). В случае успеха возвращается значение выражения.

pdb.runcall(function[, argument, ...])

Вызовет функцию function под управлением отладчика. Аргумент function должен быть вызываемым объектом. Дополнительные аргументы передаются функции function. Приглашение к вводу отладчика появляется непосредственно перед выполнением какого-либо программного кода. По завершении возвращается значение функции function.

pdb.set_trace()

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

pdb.post_mortem(traceback)

Запускает поставарийную отладку с использованием объекта traceback, содержащего трассировочную информацию. Объект traceback обычно можно получить с помощью такой функции, как sys.exc_info().

pdb.pm()

Переходит в режим поставарийной отладки с использованием объекта traceback, сгенерированного последним исключением.

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

pdb.a(rgs)

Выводит список аргументов текущей функции.

alias [name [command]]

Создает псевдоним name для команды command. Подстроки, такие как ‘%1’,’%2’ и так далее, в строке command замещаются значениями параметров, которые указываются при вводе псевдонима. Подстрока ‘%*’ соответствует всему списку параметров. Если значение command не задано, выводится текущее определение псевдонима. Псевдонимы допускается вкладывать друг в друга и они могут содержать все, что допускается вводить в приглашении Pdb.

# Выводит переменные экземпляров (порядок использования: “pi classInst”)
alias pi for k in %1._ _dict_ _.keys(): print “%1.”,k,”=”,%1._ _dict_ _[k]
# Выводит переменные для экземпляра self
alias ps pi self
b(reak) [loc [, condition]]

Устанавливает точку останова в местоположении loc. Значением loc может быть либо имя файла и номер строки, либо имя функции в модуле.

Синтаксис параметра имеет следующий вид:

Значение Описание
n Номер строки в текущем файле
filename:n Номер строки в другом файле
function Имя функции в текущем модуле
module.function Имя функции в другом модуле
cl(ear) [bpnumber [bpnumber ...]]

Сбрасывает точки останова с указанными номерами bpnumber. Если номера не указываются, команда сбросит все точки останова.

commands [bpnumber]

Определяет последовательность команд отладчика для автоматического выполнения по достижении точки останова bpnumber. Если необходимо указать несколько команд, их можно ввести в нескольких строках и использовать слово end, как признак конца последовательности. Если включить в последовательность команду continue, после встречи точки останова выполнение программы будет продолжено автоматически. Если параметр bpnumber не задан, команда commands применяется к последней установленной точке останова.

condition bpnumber [condition]

Добавляет условие condition к точке останова bpnumber. Параметр condition – это выражение, значение которого должно оцениваться как истинное, что-бы произошел останов в данной точке. Отсутствие параметра condition приводит к сбросу всех условий, установленных ранее.

pdb.c(ont(inue))

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

disable [bpnumber [bpnumber ...]]

Деактивирует указанные точки останова. В отличие от команды clear, после команды disable имеется возможность вновь активировать эти точки останова.

pdb.d(own)

Перемещает текущий кадр стека на один уровень вниз в стеке трассировки.

enable [bpnumber [bpnumber ...]]

Активирует указанные точки останова.

h(elp) [command]

Выводит список доступных команд. Если указана команда command, возвращает справочную информацию по этой команде.

ignore bpnumber [count]

Деактивирует точку останова на count проходов.

j(ump) lineno

Выполняет переход к следующей строке. Может использоваться только для перехода между инструкциями в одном кадре стека. Кроме того, не позволяет выполнить переход внутрь некоторых инструкций, например в середину цикла.

l(ist) [first [, last]]

Выводит листинг исходного программного кода. При использовании без аргументов эта команда выведет 11 строк, окружающих текущую строку (5 строк до и 5 строк после). При использовании с единственным аргументом она выведет 11 строк, начиная с указанной строки. При использовании с двумя аргументами – выведет строки из указанного диапазона. Если зна чение параметра last меньше значения параметра first, оно будет интерпретироваться, как счетчик строк.

pdb.n(ext)

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

p expression

Вычисляет значение выражения expression в текущем контексте и выводит его.

pp expression

То же, что и команда p, но результат форматируется с использованием модуля pprint.

pdb.q(uit)

Выход из отладчика.

pdb.r(eturn)

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

run [args]

Перезапускает программу с аргументами командной строки args, которые записываются в переменную sys.argv. Все точки останова и другие настройки отладчика сохраняются.

pdb.s(tep)

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

tbreak [loc [, condition]]

Устанавливает временную точку останова, которая удаляется после первого срабатывания.

pdb.u(p)

Перемещает текущий кадр стека на один уровень вверх в стеке трассировки.

unalias name

Удаляет указанный псевдоним.

pdb.until()

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

pdb.w(here)

Выведет трассировку стека.