Ответ
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) — «всё, заебался». Резко и бесповоротно вырубает всю сессию отладки. Программа дохнет.
Вот и весь базовый набор, чтобы не чувствовать себя полным пидарасом шерстяным, когда код не работает. Пользуйся, это овердохуища полезная штука.