Что такое Python Debugger (pdb) и для чего он используется

Ответ

pdb (Python Debugger) — это встроенный в Python интерактивный отладчик исходного кода. Он позволяет приостанавливать выполнение программы в определённой точке, чтобы проанализировать её состояние, проверить значения переменных и пошагово отследить логику работы.

Основные цели использования:

  • Поиск и исправление ошибок (багов): Анализ состояния программы в момент сбоя.
  • Понимание работы чужого кода: Пошаговое выполнение для изучения логики.
  • Проверка гипотез: Интерактивное выполнение команд в контексте работающей программы.

Как использовать:

Самый простой способ — вставить import pdb; pdb.set_trace() в то место кода, где нужно остановиться.

import pdb

def calculate_total(price, quantity):
    discount = 0.1
    total_before_discount = price * quantity

    # Устанавливаем точку останова здесь, чтобы проверить переменные
    pdb.set_trace()

    final_price = total_before_discount * (1 - discount)
    return final_price

calculate_total(150, 3)

При запуске этого кода выполнение остановится, и в терминале появится интерактивная консоль (Pdb). В ней можно использовать команды:

  • n (next) — выполнить следующую строку кода.
  • s (step) — зайти внутрь вызываемой функции.
  • c (continue) — продолжить выполнение до следующей точки останова или до конца программы.
  • p <переменная> (print) — напечатать значение переменной (например, p total_before_discount).
  • l (list) — показать участок кода вокруг текущей строки.
  • q (quit) — завершить сессию отладки.

Ответ 18+ 🔞

А, ну ты глянь, какой подарок судьбы — pdb. Это ж, блядь, не просто отладчик, это как хирургический скальпель для твоего кода, когда он уже на операционном столе лежит и коньки откидывает. Встроенный в Питон, понимаешь? Ничего ставить не надо, он уже тут, в кармане, ждёт своего звёздного часа.

Зачем он вообще нужен, этот зверь? Ну, во-первых, чтобы не гадать на кофейной гуще, где программа накрылась медным тазом. Встал на нужной строчке и смотри: а что у тебя в переменных-то творится? Может, там не число, а строка, и всё ебет? Во-вторых, чтобы разобраться в чужом коде, который написан так, будто автор был в состоянии, прости господи, доверия ебать ноль. И в-третьих, просто потестить свою догадку, не перезапуская всю программу сто раз.

Как его, сука, призвать? Проще пареной репы. Втыкаешь волшебную строчку import pdb; pdb.set_trace() прямо туда, где хочешь всё заморозить и посмотреть.

import pdb

def calculate_total(price, quantity):
    discount = 0.1
    total_before_discount = price * quantity

    # Вот тут-то мы его и активируем, этого цифрового шамана
    pdb.set_trace()

    final_price = total_before_discount * (1 - discount)
    return final_price

calculate_total(150, 3)

Запускаешь скрипт, и — охуенно! — выполнение встаёт колом, а в терминале загорается приглашение (Pdb). Это твой новый командный центр. Теперь ты бог и царь в этой замершей вселенной.

Что там можно делать? Да всё, блядь!

  • n (next) — шагни на следующую строчку, но не лезь внутрь функций, если они там будут. Прошёл мимо, как кот мимо миски.
  • s (step) — а вот это уже интереснее. Это как «шагнуть с разбега». Если на пути функция — ты в неё влезаешь и смотришь, что там внутри творится.
  • c (continue) — «да похуй, вали дальше». Программа побежит до следующего set_trace() или пока совсем не кончится.
  • p <переменная> (print) — это святое. Хочешь узнать, что в total_before_discount? Пишешь p total_before_discount и получаешь ответ, а не догадки.
  • l (list) — «чё я тут вообще делаю?». Покажет тебе кусок кода вокруг той строки, где ты сейчас завис.
  • q (quit) — «всё, заебался». Резко и бесповоротно вырубает всю сессию отладки. Программа дохнет.

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