Автор оригинала: Pankaj Kumar.
Модуль Python PDB предоставляет интерактивную среду отладки для разработчиков для отладки программ Python. Сегодня мы рассмотрим примеры отладчика Python с использованием модуля PDB и посмотрите на различные способы отладки программы Python.
Python Debugger – Python PDB
Модуль PDB в Python предоставляет нам огромные функции для эффективной отладки кода Python. Это включает в себя:
- Пауза программы
- Посмотрите на значения переменных
- Посмотрите на выполнение программы на каждой строке
Это всего лишь некоторые точки, которые делают PDB модуль благополумом для программистов Python. Давайте посмотрим, как мы можем начать использовать этот модуль.
Начало Python отладчик
Ну, это не о программе. Мы можем начать PDB с любой программой. Вот образец программы:
class User: def __init__(self, runner): self.counter = runner def showSomething(self): for i in range(self.counter): print(i) return user = User(5) user.showSomething()
Давайте посмотрим на вывод этой программы:
Мы можем перейти к следующей строке в исполнении PDB, нажав «n», а затем клавишу Enter.
Начало PDB внутри программы
Приведенный выше пример начался PDB
Итак, из командной строки, так, трассировка PDB началась с самой первой строки выполнения. Обычно мы хотим отладить только определенную область программы, которая начнется после начала программы.
Для достижения этого мы используем PDB в самих программах. Давайте посмотрим на фрагмент кода:
import pdb class User: def __init__(self, runner): self.counter = runner def showSomething(self): for i in range(self.counter): pdb.set_trace() print(i) return user = User(5) user.showSomething()
Давайте посмотрим на вывод этой программы: нажмите N и введите, чтобы перейти к следующей строке и просмотреть выполнение.
Отладка после вскрытия
Как только программа завершится с помощью процесса выполнения, отладка сбоя в нем называется в виде отладки после истечения. Модуль также поддерживает это с некоторыми дополнительными функциями:
import pdb class User: def __init__(self, runner): self.counter = runner def showSomething(self): for i in range(self.runner): pdb.set_trace() print(i) return user = User(5) user.showSomething()
Здесь мы упомянули Self.runner
который не существует. Мы можем попробовать эти Функции Внутри самого переводчика Python:
Проверка переменных на стеке
Одна из точек использования отладчика вообще заключается в том, что мы должны иметь возможность проверить стек программы и какие переменные хранятся на этом стеке во время выполнения программы. Мы можем сделать это с PDB. Давайте посмотрим на фрагмент кода:
import pdb def recursive_calls(i = 5, output = 'somethign here'): if i > 0: recursive_calls(i - 1) else: pdb.set_trace() print(output) return if __name__ == '__main__': recursive_calls()
Это простой пример для рекурсии. Давайте посмотрим на вывод этой программы:
Обратите внимание, что мы использовали где
Команда для печати переменных на стеке. Мы также можем распечатать определенную переменную как:
Для переменных, которые могут содержать большие значения, такие как файловые данные и т. Д., Мы также Красивая печать ценности. Итак, если переменные это данные
, мы можем запустить команду:
pp data
Python PDB точка останова
Использование n, чтобы перейти к следующей строке полезно, но что, если вы на самом деле знаете, где остановиться? Кроме того, отладка всей программы и перемещение через каждую строку утомительно, когда вы знаете, где вы хотите на самом деле остановиться!
С PDB мы также можем использовать точки останова. Для этого нам нужно сообщить PDB
на какую линию установить точку останова. Вот образец программы и демонстрация:
import pdb def recursive_calls(i = 5, output = 'somethign here'): if i > 0: recursive_calls(i - 1) else: print(output) return if __name__ == '__main__': recursive_calls()
Ничего необычного здесь на самом деле. Давайте посмотрим на демонстрацию этой программы: Мы использовали Перерыв
Ключевое слово наряду с номером линии, где мы хотим установить точку останова.
Управление точками останова
Как мы видели в последней демонстрации, когда мы применили точку останова к линии, было присвоено идентификатор AS Точка останова 1
Отказ Числовая часть может использоваться в качестве идентификатора для включения и отключения этих точек останова. Отключение точки останова с отключить
Ключевое слово информирует отладчик, чтобы не остановить выполнение, когда эта строка достигнута. Точка останова все еще хранится, но игнорируется.
Давайте посмотрим, как это сделано:
Заключение
В этом посте о отладке Python мы увидели, как мы можем эффективно отладки программы Python и определить любые проблемы, с которыми мы сталкиваемся с помощью модуля PDB.
Ссылка: API док