/
disciplina
/
stepik-python-debugging
Обзор
Документация
Войти
/
disciplina
/
stepik-python-debugging
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
lessons/module1/1.4/lesson1.step
18 строк
9 KB
Sergey
Вторая версия курса
27 янв 2026, 21:14
27 янв 2026, 21:14
79b9655
Код
Авторство
О чём код?
{ "block": { "name": "text", "text": "<h2>Типология отладчиков</h2>\n\n<p>Отладчики — это специализированные инструменты для поиска и исправления ошибок в программах. В зависимости от способа взаимодействия с пользователем, отладчики можно разделить на несколько типов.</p>\n\n<h3>Классификация по интерфейсу</h3>\n\n<h4>1. Текстовые (консольные) отладчики</h4>\n\n<p><strong>Текстовые отладчики</strong> работают через командную строку и взаимодействуют с пользователем через текстовый интерфейс.</p>\n\n<h5>Характеристики:</h5>\n<ul>\n<li>✅ Работают в терминале без графического интерфейса</li>\n<li>✅ Универсальны — доступны на любой платформе</li>\n<li>✅ Легковесны — не требуют много ресурсов</li>\n<li>✅ Идеальны для удалённой отладки через SSH</li>\n<li>❌ Требуют знания команд</li>\n<li>❌ Менее наглядны, чем графические</li>\n</ul>\n\n<h5>Примеры текстовых отладчиков для Python:</h5>\n<ul>\n<li><code>pdb</code> — встроенный отладчик Python</li>\n<li><code>ipdb</code> — улучшенная версия pdb с IPython</li>\n<li><code>pdb++</code> — расширенная версия pdb с дополнительными возможностями</li>\n<li><code>pudb</code> — псевдографический отладчик для терминала</li>\n</ul>\n\n<h4>2. Графические (GUI) отладчики</h4>\n\n<p><strong>Графические отладчики</strong> предоставляют визуальный интерфейс для отладки программ.</p>\n\n<h5>Характеристики:</h5>\n<ul>\n<li>✅ Интуитивно понятный интерфейс</li>\n<li>✅ Визуализация кода, переменных, стека вызовов</li>\n<li>✅ Не требуют запоминания команд</li>\n<li>✅ Интеграция с редактором кода</li>\n<li>❌ Требуют графическую среду (не работают в SSH)</li>\n<li>❌ Более требовательны к ресурсам</li>\n</ul>\n\n<h5>Примеры графических отладчиков для Python:</h5>\n<ul>\n<li><strong>PyCharm Debugger</strong> — профессиональный отладчик в IDE PyCharm</li>\n<li><strong>VS Code Debugger</strong> — встроенный отладчик в Visual Studio Code</li>\n<li><strong>Spyder Debugger</strong> — отладчик в IDE Spyder (для научных вычислений)</li>\n<li><strong>Wing IDE Debugger</strong> — отладчик в Wing IDE</li>\n<li><strong>Eclipse PyDev</strong> — отладчик в Eclipse с плагином PyDev</li>\n</ul>\n\n<h3>Классификация по способу работы</h3>\n\n<h4>1. Интерактивные отладчики</h4>\n<p>Позволяют пошагово выполнять код, останавливаться на breakpoint'ах и взаимодействовать с программой в реальном времени.</p>\n<ul>\n<li><code>pdb</code>, <code>ipdb</code>, PyCharm Debugger, VS Code Debugger</li>\n</ul>\n\n<h4>2. Post-mortem отладчики</h4>\n<p>Запускаются после возникновения ошибки для анализа состояния программы в момент сбоя.</p>\n<ul>\n<li><code>pdb.pm()</code>, <code>pdb.post_mortem()</code></li>\n</ul>\n\n<h4>3. Удалённые отладчики</h4>\n<p>Позволяют отлаживать программы, работающие на удалённых серверах.</p>\n<ul>\n<li>PyCharm Remote Debugging, <code>rpdb</code> (remote pdb)</li>\n</ul>\n\n<h4>4. Веб-отладчики</h4>\n<p>Специализированы для отладки веб-приложений, работают в браузере.</p>\n<ul>\n<li><code>werkzeug</code> (для Flask), Django Debug Toolbar</li>\n</ul>\n\n<h3>Классификация по области применения</h3>\n\n<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n<tr>\n<th>Тип приложения</th>\n<th>Подходящие отладчики</th>\n</tr>\n<tr>\n<td>Консольные скрипты</td>\n<td>pdb, ipdb, pdb++</td>\n</tr>\n<tr>\n<td>Веб-приложения</td>\n<td>werkzeug, django-pdb, Browser DevTools</td>\n</tr>\n<tr>\n<td>Desktop приложения</td>\n<td>PyCharm, VS Code, Wing IDE</td>\n</tr>\n<tr>\n<td>Научные вычисления</td>\n<td>Spyder, Jupyter Debugger</td>\n</tr>\n<tr>\n<td>Микросервисы</td>\n<td>Remote debuggers, Sentry</td>\n</tr>\n<tr>\n<td>Production мониторинг</td>\n<td>Sentry, Rollbar, New Relic</td>\n</tr>\n</table>\n\n<h3>Гибридные отладчики</h3>\n\n<p>Некоторые отладчики сочетают текстовый и графический интерфейсы:</p>\n\n<h4>pudb</h4>\n<p>Псевдографический отладчик, который работает в терминале, но имеет визуальный интерфейс с панелями для кода, переменных и стека.</p>\n\n<h3>Специализированные инструменты</h3>\n\n<h4>1. Системы мониторинга ошибок</h4>\n<ul>\n<li><strong>Sentry</strong> — отслеживает ошибки в production</li>\n<li><strong>Rollbar</strong> — сбор и анализ ошибок</li>\n<li><strong>Bugsnag</strong> — мониторинг стабильности приложений</li>\n</ul>\n\n<h4>2. Профилировщики</h4>\n<p>Хотя технически не являются отладчиками, помогают находить узкие места в производительности:</p>\n<ul>\n<li><code>cProfile</code> — встроенный профилировщик Python</li>\n<li><code>line_profiler</code> — построчный профилировщик</li>\n<li><code>memory_profiler</code> — анализ использования памяти</li>\n</ul>\n\n<h3>Выбор отладчика</h3>\n\n<p><strong>Рекомендации по выбору:</strong></p>\n\n<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n<tr>\n<th>Ситуация</th>\n<th>Рекомендуемый инструмент</th>\n</tr>\n<tr>\n<td>Разработка в IDE</td>\n<td>Встроенный отладчик IDE (PyCharm, VS Code)</td>\n</tr>\n<tr>\n<td>Быстрая отладка скрипта</td>\n<td>pdb с breakpoint()</td>\n</tr>\n<tr>\n<td>Удалённый сервер без GUI</td>\n<td>ipdb, pdb++</td>\n</tr>\n<tr>\n<td>Веб-разработка (Flask/Django)</td>\n<td>werkzeug, django-pdb</td>\n</tr>\n<tr>\n<td>Научные вычисления</td>\n<td>Spyder, Jupyter</td>\n</tr>\n<tr>\n<td>Production мониторинг</td>\n<td>Sentry</td>\n</tr>\n<tr>\n<td>Терминал с визуализацией</td>\n<td>pudb</td>\n</tr>\n</table>\n\n<h3>Комбинирование инструментов</h3>\n\n<p>В реальной разработке часто используется комбинация инструментов:</p>\n\n<ul>\n<li><strong>Разработка:</strong> IDE-отладчик (PyCharm/VS Code)</li>\n<li><strong>Быстрые проверки:</strong> pdb/ipdb</li>\n<li><strong>CI/CD:</strong> автоматические тесты</li>\n<li><strong>Production:</strong> Sentry для мониторинга</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" }