Сообщить об ошибке.

Функция set_trace() модуля pdb в Python

Жесткая установка точки останова в коде

Синтаксис:

import pdb

pdb.set_trace(*, header=None, commands=None)

Параметры:

  • header=None - заголовок, выводиться перед отладкой.
  • commands=None - список команд, которые будут выполнены сразу после запуска отладчика (Добавлен в Python 3.14).

Возвращаемое значение:

  • нет.

Описание:

Функция set_trace() модуля pdb вводит отладчик в кадр стека вызова.

Это полезно для жесткой установки точки останова в заданной точке программы, даже если код не отлаживается иначе, Например, когда утверждение не выполнено.

Если указан аргумент header, то непосредственно перед началом отладки на консоль выводится заголовок header.

Аргумент commands, если передан, представляет собой список команд, которые будут выполнены сразу после запуска отладчика.

Смотрите встроенную функцию breakpoint().

Изменено в Python 3.13: pdb.set_trace() войдет в отладчик сразу, а не на следующей строке кода, которая будет выполнена.

Изменено в Python 3.14 Точки останова (breakpoint(), pdb.set_trace()) теперь повторно используют последний экземпляр Pdb. Это позволяет сохранять настройки между остановками: display, commands и т.д.

Добавлено в Python 3.14: Поддержка аргумента commands.

Примеры использования:

# test.py
import pdb

class MyClass():
    def __init__(self, loops):
        self.count = loops
 
    def start(self):
        for i in range(self.count):      
            pdb.set_trace(header="def start -> print")
            print(i)
        return
 
if __name__ == '__main__':
    MyClass(5).start()

Результат запуска:

$ python3 test.py 
def start -> print
> /home/docs-python/test.py(10)start()
-> print(i)
(Pdb) c
0
def start -> print
> /home/docs-python/test.py(9)start()
-> pdb.set_trace(header="def start -> print")
(Pdb)