SlideShare a Scribd company logo
Отладка в Python: 2016 edition
Отладка в Python:
2016 edition
Moscow Python 2016
О докладчике
Имя ему - Кирилл Борисов
10 лет программирует за деньги
5,5 лет души не чает в Python
Работает в Яндексе и не знает забот
3
О чем этот доклад?
Вся наша жизнь - отладка
Иногда она случается и в продакшене
Есть много инструментов
Не нужно паниковать
4
Подходы к отладке в Python
Явное инструментирование кода
sys.settrace(func) / threading.settrace(func)
Требуют модификации кода
Подвержены влиянию кода пользователя
Подключение к интерпретатору
Можно подключаться к работающему процессу
Отлаживается не код на Python
5
Классификация: UI
GUI - графический интерфейс
PuDB
PyCharm, PyDev, WinPDB
CLI - командная строка
pdb, ipdb, rpdb
gdb + python-debuginfo
trepan2 + trepan2kc (trepan3 + trepan3kc)
6
Классификация: условия отладки
Локальная отладка
PyCharm, PyDev, WinPDB
PuDB
Удаленная отладка
rpdb, WinPDB + rpdb2
PyCharm, PyDev
trepan2 + trepan2kc (trepan3 + trepan3kc)
7
pdb
Входит в стандартную библиотеку
Основан на модуле bdb
Самый базовый CLI
Post-mortem, вызов по исключению и т.д.
8
rpdb
https://tamentis.com/projects/rpdb/
Обертка над pdb для удаленной отладки
Достаточно подключиться через nc, telnet и т.д.
Предназначался для отладки кода на Jython под Tomcat
9
ipdb
https://github.com/gotcha/ipdb
Отладчик из IPython
Автодополнение, подсветка кода и т.д.
Краткие traceback’и
10
python2-trepan
https://github.com/rocky/python2-trepan/
Попытка переписать pdb c нуля
Более гранулярная отладка
Умеет извлекать информацию из байткода
Поддерживает макросы
11
python3-trepan (trepan3k)
https://github.com/rocky/python3-trepan/
Попытка переписать pdb c нуля
Версия python2-trepan
Поддерживает 3.3 - 3.5
12
PuDB
https://github.com/inducer/pudb
Оконный интерфейс в текстовом режиме
Интеграция с IPython
Поддерживает удаленную отладку
13
Отладчик из PyDev (и PyCharm)
https://github.com/fabioz/PyDev.Debugger
Разрабатывался в составе PyDev (IDE, основанный на Eclipse)
Способен работать удаленно через pydevd
Поддерживает Python 2.4+
14
WinPDB
https://github.com/bluebird75/winpdb
Сделан на wxPython
Удаленная отладка через rpdb2
Поддерживает Python 2.5 - 3.5, PyPy
Имеет консольную версию
15
Экзотика
smiley - трассировка хода выполнения
manhole - вывод traceback всех потоков
pyrasite - инъекция кода в приложение
16
smiley
https://github.com/dhellmann/smiley
Трассировка хода выполнения программы
Запись всех изменений переменных
Клиент-серверная модель
Имеет веб-интерфейс
17
manhole
https://github.com/ionelmc/python-manhole
Выброс traceback’а всех потоков по сигналу
Запуск shell’а внутри исполняемого кода
В качестве клиента - netcat / socat / telnet
18
pyrasite
https://github.com/lmacken/pyrasite
Запуск произвольного кода внутри уже запущенного процесса
Использует gdb в качестве инструмента
pyrasite-gui, pyrasite-shell, pyrasite-memory-viewer
19
Дополнительные материалы
Python Debugger Uncovered
https://www.youtube.com/watch?v=2sEPipctTxw
How I built a power debugger out of the standard library and
things I found on the internet
https://www.youtube.com/watch?v=g8kF9tuYZ6s
Architecture of Open Source Applications: GDB
http://www.aosabook.org/en/gdb.html
20
Дополнительные материалы
pdb – Interactive Debugger
https://pymotw.com/2/pdb/
bdb — Debugger framework
https://docs.python.org/2/library/bdb.html
Advanced Python Debugging Techniques Using GDB
https://www.youtube.com/watch?v=rB9rPdMRxIA
21
Борисов Кирилл
Разработчик ПО
Контакты
@lensvol
lensvollensvol@yandex-team.ru

More Related Content

PDF
Михаил Коробов: Как перейти на Python 3
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
PDF
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
PDF
Язык программирования GO
PDF
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
PDF
Как ВКонтакте использует Go
PDF
Михаил Коробов: Как перейти на Python 3
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Язык программирования GO
Go в продакшене Яндекса: отчёт после года использования — Вячеслав Бахмутов
Как ВКонтакте использует Go

What's hot (19)

PDF
Rust - GDG DevFest Siberia 2016
PDF
Rust - GDG DevFest 2016 Nizhny Novgorod
PDF
REPL в Node.js: улучшаем быт разработчик
PDF
Программирование с gfortran
PPTX
Php and frameworks
PPTX
С чем едят JS-дебаггур?!
ODP
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
PDF
Migrating from Perl 5 to 6
PPTX
"Великолепный API без Rest", Констатин Якушев (Badoo)
PPTX
Инструменты профайлинга С++ кода
PPTX
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
PDF
Введение в язык программирования Go
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
Go в автобусе
PDF
Django на Android
PDF
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
PDF
Контроль за качеством кода
PDF
Разработка декстопных приложений для linux (Владимир Яковлев)
PDF
Как мы делаем раскладку Календаря@Mail.Ru
Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest 2016 Nizhny Novgorod
REPL в Node.js: улучшаем быт разработчик
Программирование с gfortran
Php and frameworks
С чем едят JS-дебаггур?!
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
Migrating from Perl 5 to 6
"Великолепный API без Rest", Констатин Якушев (Badoo)
Инструменты профайлинга С++ кода
Как не подавиться большим старым проектом. Юрий Минаев ➠ CoreHard Autumn 2019
Введение в язык программирования Go
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Go в автобусе
Django на Android
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Контроль за качеством кода
Разработка декстопных приложений для linux (Владимир Яковлев)
Как мы делаем раскладку Календаря@Mail.Ru
Ad

Viewers also liked (20)

PDF
Flame graph: новый взгляд на старое профилирование
PDF
Автоматизированные рефакторинги: AST, FST и все-все-все
PPTX
G1 valdez aa_u8_t2_aa2
PDF
Суров А. Г. Колесо Футарка
PDF
Qotient conversation intelligence e book
PPTX
Summer 2016 REU Research Presentation
PDF
HeadhuntersAlexWooDH
DOCX
Sms lucu
PDF
EMA MA Lang Lit
PDF
Dip of Man1
PDF
Syh Ikea A
PPT
Mobile Do Not Delete.ppt
PDF
Ftd90
PPTX
Diseñografico calvache vasquez
PDF
BELP Certificate
PPTX
Linkedin profile
PDF
CBQ reference Letter
PDF
IP Statistics for Decision Makers Conference 2016
PDF
Zvit 2015
Flame graph: новый взгляд на старое профилирование
Автоматизированные рефакторинги: AST, FST и все-все-все
G1 valdez aa_u8_t2_aa2
Суров А. Г. Колесо Футарка
Qotient conversation intelligence e book
Summer 2016 REU Research Presentation
HeadhuntersAlexWooDH
Sms lucu
EMA MA Lang Lit
Dip of Man1
Syh Ikea A
Mobile Do Not Delete.ppt
Ftd90
Diseñografico calvache vasquez
BELP Certificate
Linkedin profile
CBQ reference Letter
IP Statistics for Decision Makers Conference 2016
Zvit 2015
Ad

Similar to Отладка в Python: 2016 edition (20)

PDF
Про асинхронное сетевое программирование
PPTX
Mixing c++ and python
PDF
Компиляция скриптов PHP (Алексей Романенко)
PDF
Программируемость коммутаторов для ЦОД Cisco Nexus
PPTX
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
PPTX
[RU] Connecting AutoCAD and Python (by Alex Bausk)
PDF
Компиляция скриптов PHP. Алексей Романенко
PDF
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
PDF
Разработка сетевых приложений с gevent
PDF
Enter: legacy code
PDF
Robot Framework: универсальный инструмент автоматизатора
PDF
ekbpy'2012 - Михаил Коробов - Python 3
PDF
Egor Fedorov "Behavior-driven development in Python"
PDF
Стандарт MPI (Message Passing Interface)
PDF
Как мы делаем модули PHP в Badoo – Антон Довгаль
PDF
Anton Bolshakov - Joint anti-crime. Open source security
PPTX
DLR Hosting
PDF
Введение в динамический анализ приложений на примере Intel Pin
Про асинхронное сетевое программирование
Mixing c++ and python
Компиляция скриптов PHP (Алексей Романенко)
Программируемость коммутаторов для ЦОД Cisco Nexus
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
[RU] Connecting AutoCAD and Python (by Alex Bausk)
Компиляция скриптов PHP. Алексей Романенко
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
Разработка сетевых приложений с gevent
Enter: legacy code
Robot Framework: универсальный инструмент автоматизатора
ekbpy'2012 - Михаил Коробов - Python 3
Egor Fedorov "Behavior-driven development in Python"
Стандарт MPI (Message Passing Interface)
Как мы делаем модули PHP в Badoo – Антон Довгаль
Anton Bolshakov - Joint anti-crime. Open source security
DLR Hosting
Введение в динамический анализ приложений на примере Intel Pin

Отладка в Python: 2016 edition