/
disciplina
/
stepik-python-debugging
Обзор
Документация
Войти
/
disciplina
/
stepik-python-debugging
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
lessons/module1/1.4/lesson2.step
18 строк
10 KB
Sergey
Вторая версия курса
27 янв 2026, 21:14
27 янв 2026, 21:14
79b9655
Код
Авторство
О чём код?
{ "block": { "name": "text", "text": "<h2>Краткий обзор текстовых отладчиков</h2>\n\n<p>Текстовые отладчики для Python работают в командной строке и предоставляют мощные возможности для отладки без необходимости графического интерфейса.</p>\n\n<h3>1. pdb — Python Debugger</h3>\n\n<h4>Описание</h4>\n<p><strong>pdb</strong> — это стандартный встроенный отладчик Python, входящий в стандартную библиотеку.</p>\n\n<h4>Ключевые характеристики:</h4>\n<ul>\n<li>✅ Встроен в Python — не требует установки</li>\n<li>✅ Работает везде, где есть Python</li>\n<li>✅ Полный набор базовых команд отладки</li>\n<li>❌ Минималистичный интерфейс без цветов</li>\n<li>❌ Нет автодополнения в старых версиях</li>\n</ul>\n\n<h4>Базовое использование:</h4>\n<pre><code>import pdb\npdb.set_trace() # или breakpoint() в Python 3.7+\n</code></pre>\n\n<hr>\n\n<h3>2. ipdb — IPython Debugger</h3>\n\n<h4>Описание</h4>\n<p><strong>ipdb</strong> — это расширенная версия pdb, использующая IPython в качестве интерактивной оболочки.</p>\n\n<h4>Ключевые характеристики:</h4>\n<ul>\n<li>✅ Подсветка синтаксиса</li>\n<li>✅ Расширенное автодополнение по Tab</li>\n<li>✅ История команд</li>\n<li>✅ Магические команды IPython</li>\n<li>❌ Требует установки ipdb и IPython</li>\n</ul>\n\n<h4>Установка:</h4>\n<pre><code>pip install ipdb</code></pre>\n\n<h4>Использование:</h4>\n<pre><code>import ipdb\nipdb.set_trace()\n\n# Или настроить breakpoint() на использование ipdb:\n# export PYTHONBREAKPOINT=ipdb.set_trace\n</code></pre>\n\n<h4>Преимущества над pdb:</h4>\n<ul>\n<li>Цветной вывод кода</li>\n<li>Автодополнение атрибутов объектов</li>\n<li>Доступ к магическим командам IPython (<code>%timeit</code>, <code>%debug</code> и др.)</li>\n</ul>\n\n<hr>\n\n<h3>3. pdb++ (pdbpp)</h3>\n\n<h4>Описание</h4>\n<p><strong>pdb++</strong> — это drop-in replacement для pdb с расширенными возможностями.</p>\n\n<h4>Ключевые характеристики:</h4>\n<ul>\n<li>✅ Подсветка синтаксиса из коробки</li>\n<li>✅ Улучшенное автодополнение</li>\n<li>✅ Показывает значения переменных прямо в коде</li>\n<li>✅ Дополнительные команды (sticky mode, longlist++)</li>\n<li>✅ Совместим с pdb — работает как замена</li>\n<li>❌ Требует установки</li>\n</ul>\n\n<h4>Установка:</h4>\n<pre><code>pip install pdbpp</code></pre>\n\n<h4>Использование:</h4>\n<pre><code># После установки автоматически заменяет pdb\nimport pdb\npdb.set_trace() # Будет использоваться pdb++\n</code></pre>\n\n<h4>Уникальные возможности:</h4>\n<ul>\n<li><strong>Sticky mode</strong> — код остаётся на экране при пошаговом выполнении</li>\n<li><strong>Smart command parsing</strong> — умное распознавание команд</li>\n<li><strong>Inline values</strong> — показ значений переменных рядом с кодом</li>\n</ul>\n\n<hr>\n\n<h3>4. pudb — Console-based Visual Debugger</h3>\n\n<h4>Описание</h4>\n<p><strong>pudb</strong> — это псевдографический отладчик для терминала с полноэкранным интерфейсом.</p>\n\n<h4>Ключевые характеристики:</h4>\n<ul>\n<li>✅ Визуальный интерфейс в терминале</li>\n<li>✅ Панели для кода, переменных, стека, breakpoint'ов</li>\n<li>✅ Навигация с помощью клавиатуры</li>\n<li>✅ Подсветка синтаксиса</li>\n<li>✅ Работает в SSH-сессиях</li>\n<li>❌ Требует привыкания к интерфейсу</li>\n<li>❌ Занимает весь экран терминала</li>\n</ul>\n\n<h4>Установка:</h4>\n<pre><code>pip install pudb</code></pre>\n\n<h4>Использование:</h4>\n<pre><code>import pudb\npudb.set_trace()\n\n# Или запустить скрипт полностью:\npython -m pudb script.py\n</code></pre>\n\n<h4>Интерфейс:</h4>\n<p>pudb разделяет экран на несколько панелей:</p>\n<ul>\n<li><strong>Верхняя панель:</strong> исходный код</li>\n<li><strong>Правая панель:</strong> переменные и их значения</li>\n<li><strong>Нижняя панель:</strong> стек вызовов и breakpoint'ы</li>\n</ul>\n\n<h4>Управление:</h4>\n<ul>\n<li><code>n</code> — next (следующая строка)</li>\n<li><code>s</code> — step (войти в функцию)</li>\n<li><code>c</code> — continue</li>\n<li><code>b</code> — установить breakpoint</li>\n<li><code>q</code> — quit</li>\n<li><code>?</code> — справка</li>\n</ul>\n\n<hr>\n\n<h3>5. rpdb — Remote Python Debugger</h3>\n\n<h4>Описание</h4>\n<p><strong>rpdb</strong> — отладчик для удалённой отладки через TCP-соединение.</p>\n\n<h4>Ключевые характеристики:</h4>\n<ul>\n<li>✅ Отладка удалённых процессов</li>\n<li>✅ Работает через telnet/netcat</li>\n<li>✅ Полезен для Docker-контейнеров</li>\n<li>❌ Требует открытого порта</li>\n<li>❌ Проблемы с безопасностью при использовании в production</li>\n</ul>\n\n<h4>Установка:</h4>\n<pre><code>pip install rpdb</code></pre>\n\n<h4>Использование:</h4>\n<pre><code>import rpdb\nrpdb.set_trace() # Слушает на порту 4444\n\n# Подключение:\n# telnet localhost 4444\n</code></pre>\n\n<hr>\n\n<h3>Сравнительная таблица текстовых отладчиков</h3>\n\n<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n<tr>\n<th>Отладчик</th>\n<th>Подсветка</th>\n<th>Автодополнение</th>\n<th>Требует установки</th>\n<th>Визуальный UI</th>\n<th>Лучше всего для</th>\n</tr>\n<tr>\n<td><strong>pdb</strong></td>\n<td>❌</td>\n<td>✅ (3.3+)</td>\n<td>❌</td>\n<td>❌</td>\n<td>Быстрая отладка, универсальность</td>\n</tr>\n<tr>\n<td><strong>ipdb</strong></td>\n<td>✅</td>\n<td>✅✅</td>\n<td>✅</td>\n<td>❌</td>\n<td>Интерактивная работа, IPython-пользователи</td>\n</tr>\n<tr>\n<td><strong>pdb++</strong></td>\n<td>✅</td>\n<td>✅✅</td>\n<td>✅</td>\n<td>❌</td>\n<td>Замена pdb с улучшениями</td>\n</tr>\n<tr>\n<td><strong>pudb</strong></td>\n<td>✅</td>\n<td>✅</td>\n<td>✅</td>\n<td>✅</td>\n<td>Визуальная отладка в терминале</td>\n</tr>\n<tr>\n<td><strong>rpdb</strong></td>\n<td>❌</td>\n<td>✅</td>\n<td>✅</td>\n<td>❌</td>\n<td>Удалённая отладка, Docker</td>\n</tr>\n</table>\n\n<h3>Выбор текстового отладчика</h3>\n\n<h4>Используйте pdb, если:</h4>\n<ul>\n<li>Нужна максимальная совместимость</li>\n<li>Нельзя устанавливать дополнительные пакеты</li>\n<li>Работаете на минимальной системе</li>\n</ul>\n\n<h4>Используйте ipdb, если:</h4>\n<ul>\n<li>Уже работаете с IPython/Jupyter</li>\n<li>Нужна подсветка синтаксиса</li>\n<li>Важно хорошее автодополнение</li>\n</ul>\n\n<h4>Используйте pdb++, если:</h4>\n<ul>\n<li>Хотите улучшенный pdb без изменения workflow</li>\n<li>Нужны дополнительные команды и sticky mode</li>\n</ul>\n\n<h4>Используйте pudb, если:</h4>\n<ul>\n<li>Работаете через SSH на удалённом сервере</li>\n<li>Хотите визуальный интерфейс без GUI</li>\n<li>Нужен обзор всего состояния отладки на одном экране</li>\n</ul>\n\n<h4>Используйте rpdb, если:</h4>\n<ul>\n<li>Отлаживаете Docker-контейнеры</li>\n<li>Нужна удалённая отладка через сеть</li>\n<li>Отлаживаете фоновые процессы</li>\n</ul>\n\n<p>В следующем уроке мы рассмотрим графические отладчики и их возможности.</p>", "video": null, "options": {}, "subtitle_files": [], "is_deprecated": false, "source": {}, "subtitles": {}, "tests_archive": null, "feedback_correct": "", "feedback_wrong": "" }, "id": null, "has_review": false, "time": "2026-01-27T00:00:00.000Z" }