Я
Алиса
Для отладки Python-кода есть несколько бесплатных инструментов — как локальные, так и онлайн-варианты. Выбор зависит от того, где и как вы работаете.
Локальные инструменты
pdb (Python Debugger) — это встроенный модуль стандартной библиотеки Python. Он позволяет пошагово выполнять код, просматривать стек вызовов и значения переменных. Чтобы использовать pdb, просто добавьте в код строку import pdb; pdb.set_trace() — интерпретатор остановится на этой строке, и вы сможете анализировать состояние программы.
ipdb — улучшенная версия pdb с поддержкой IPython. Она добавляет автозаполнение TAB, подсветку синтаксиса и другие удобства интерактивной оболочки. Установить ipdb можно через pip install ipdb.
pudb — библиотека для отладки, которая работает в терминале. Она предоставляет дополнительные возможности: поиск по коду (клавиша s), просмотр загруженных модулей (клавиша m) и их перезагрузку.
PyCharm Community Edition — полноценная IDE от JetBrains со встроенным отладчиком. Она бесплатна для личного и образовательного использования, поддерживает брейкпоинты, инспекцию переменных и профилирование. Однако для отладки кода, запущенного на другой (удаленной) машине, требуется платная версия Professional.
Visual Studio Code с расширением Python — бесплатный редактор кода с мощным отладчиком. Установите расширение через Marketplace и запустите код в терминале (python -m venv venv && source venv/bin/activate && pip install ipdb), затем запустите файл (code filename.py) или отладьте существующий процесс (python -m vscode.debug filename.py).
Онлайн-инструменты
Эти сервисы позволяют отлаживать код прямо в браузере без установки дополнительного ПО.
- Python Tutor — визуализирует выполнение кода шаг за шагом. Отлично подходит для обучения и понимания логики программы.
- OnlineGDB — специализируется именно на отладке. Позволяет пошагово выполнять код, смотреть значения переменных и устанавливать брейкпоинты.
- Repl.it — полноценная браузерная IDE. Подходит для небольших проектов, но в бесплатном тарифе есть лимиты на ресурсы.
Какой инструмент выбрать?
- Для локальной разработки с базовым пониманием отладки —
pdb. - Для интерактивной работы в терминале с дополнительными удобствами —
ipdb. - Для визуализации и обучения —
Python Tutor. - Для удаленной отладки или работы в браузере без установки — OnlineGDB или Repl.it.
- Для профессиональной среды с расширенными возможностями — PyCharm Community Edition.
Если вы уточните, какой тип задач вы решаете (например, веб-разработка, анализ данных, учебные проекты), я смогу дать более персонализированные рекомендации.
Я
Алиса
Основные команды pdb
Учитывая твой интерес к низкоуровневой отладке (ты работал с WinDbg, x64dbg, C-кодом), pdb покажется проще: это «пошаговый» отладчик в консоли, без сложных окон, но с базовыми возможностями вроде просмотра стека и значений переменных.
| Команда | Полное имя | Что делает |
|---|---|---|
n | next | Выполнить текущую строку, не заходя внутрь функций (перейти к следующей строке в текущей функции) |
s | step | Выполнить строку и, если это вызов функции, зайти внутрь неё |
c | continue | Продолжать выполнение до следующего брейкпоинта или конца программы |
l | list | Показать фрагмент исходного кода вокруг текущей строки (обычно 11 строк) |
p expr | print expr | Вывести значение выражения (переменной, формулы и т.п.) |
pp expr | pretty-print expr | То же, что p, но красиво отформатировать (удобно для списков, словарей) |
b [место] | break [место] | Установить точку останова: b 42 (строка 42), b my_func (функция) |
cl [номер] | clear [номер] | Удалить брейкпоинт по его номеру (список брейкпоинтов — b без аргументов) |
w | where | Показать стек вызовов (где мы сейчас находимся по цепочке функций) |
a | args | Показать аргументы текущей функции |
q | quit | Завершить отладку и остановить программу |
h | help | Показать список команд или справку по конкретной команде (h n) |
Пример использования
Допустим, у нас есть файл calc.py:
def add(a, b):
return a + b
def multiply_and_add(x, y, z):
prod = x * y
total = add(prod, z)
return total
if __name__ == "__main__":
a = 3
b = 4
c = 5
result = multiply_and_add(a, b, c)
print("Result:", result)
Способ 1: вставить точку остановки в коде
Добавим import pdb; pdb.set_trace() туда, где хотим начать отладку:
def multiply_and_add(x, y, z):
prod = x * y
import pdb; pdb.set_trace() # <--- остановка здесь
total = add(prod, z)
return total
Запускаем: python calc.py. Когда выполнение дойдёт до set_trace(), появится приглашение (Pdb).
Типичный сценарий отладки:
(Pdb) l— смотрим, где мы в коде.(Pdb) p x, y, z— проверяем аргументы.(Pdb) s— заходим внутрьadd, если нужно посмотреть детали.(Pdb) n— просто идём дальше, не заходя вadd.(Pdb) w— смотрим стек вызовов, чтобы понять, кто нас вызвал.(Pdb) c— продолжаем до следующего брейкпоинта (или конца).(Pdb) q— если хотим аварийно завершить сессию.
Способ 2: запустить скрипт сразу под pdb (без правки кода)
В терминале:
python -m pdb calc.py
Отладчик остановится на первой исполняемой строке. Дальше можно:
(Pdb) b multiply_and_add— поставить брейкпоинт на функцию.(Pdb) c— продолжить до этого брейкпоинта.- Дальше как в примере выше.
Практический пример с ошибкой
Пусть в коде ошибка:
def divide(a, b):
return a / b
if __name__ == "__main__":
import pdb; pdb.set_trace()
x = 10
y = 0
print(divide(x, y))
Сценарий в отладчике:
(Pdb) p x, y— видим, чтоy == 0.(Pdb) sилиn— при выполненииdivideполучим исключение, но до него можно успеть проверить аргументы и понять причину.- Если хотим остановиться именно в
divide, можно сделатьb divide, затемc.
Нюансы, полезные для твоего профиля (C/низкоуровневый взгляд)
pdb— это интерпретатор-уровень: он не показывает машинные инструкции, регистры или память, как x64dbg/WinDbg. Это отладка логики на уровне Python-строк и переменных.- Для просмотра «состояния» вместо
printиспользуютpиpp, что ближе к «inspect variables» в классических отладчиках. - Стек вызовов (
w) — аналог backtrace. - Брейкпоинты (
b) можно ставить по имени функции, что удобно при работе с большими файлами.
Если скажешь, какую задачу хочешь отладить (например, шахматный движок на Python, парсер, игру «Дурак» и т.д.), могу показать конкретный сценарий с pdb именно под этот случай.
Комментариев нет:
Отправить комментарий