Рубрики
Без рубрики

Python Debugger – Python PDB

Debugger Python, Python PDB, Учебник Python отладчик Python, Trace Python PDB, Python PDB-точка PDB, команды Python PDB, модуль PDB PDB Python PDB, PDB в PDB в Python

Автор оригинала: 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 док