Download - Отладка в Python: 2016 edition
![Page 1: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/1.jpg)
![Page 2: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/2.jpg)
Отладка в Python: 2016 edition
Moscow Python 2016
![Page 3: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/3.jpg)
О докладчике
Имя ему - Кирилл Борисов
10 лет программирует за деньги
5,5 лет души не чает в Python
Работает в Яндексе и не знает забот
3
![Page 4: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/4.jpg)
О чем этот доклад?
Вся наша жизнь - отладка
Иногда она случается и в продакшене
Есть много инструментов
Не нужно паниковать
4
![Page 5: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/5.jpg)
Подходы к отладке в Python
Явное инструментирование кода
sys.settrace(func) / threading.settrace(func)
Требуют модификации кода
Подвержены влиянию кода пользователя
Подключение к интерпретатору
Можно подключаться к работающему процессу
Отлаживается не код на Python
5
![Page 6: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/6.jpg)
Классификация: UI
GUI - графический интерфейс
PuDB
PyCharm, PyDev, WinPDB
CLI - командная строка
pdb, ipdb, rpdb
gdb + python-debuginfo
trepan2 + trepan2kc (trepan3 + trepan3kc)
6
![Page 7: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/7.jpg)
Классификация: условия отладки
Локальная отладка
PyCharm, PyDev, WinPDB
PuDB
Удаленная отладка
rpdb, WinPDB + rpdb2
PyCharm, PyDev
trepan2 + trepan2kc (trepan3 + trepan3kc)
7
![Page 8: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/8.jpg)
pdb
Входит в стандартную библиотеку
Основан на модуле bdb
Самый базовый CLI
Post-mortem, вызов по исключению и т.д.
8
![Page 9: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/9.jpg)
rpdb
https://tamentis.com/projects/rpdb/
Обертка над pdb для удаленной отладки
Достаточно подключиться через nc, telnet и т.д.
Предназначался для отладки кода на Jython под Tomcat
9
![Page 10: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/10.jpg)
ipdb
https://github.com/gotcha/ipdb
Отладчик из IPython
Автодополнение, подсветка кода и т.д.
Краткие traceback’и
10
![Page 11: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/11.jpg)
python2-trepan
https://github.com/rocky/python2-trepan/
Попытка переписать pdb c нуля
Более гранулярная отладка
Умеет извлекать информацию из байткода
Поддерживает макросы
11
![Page 12: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/12.jpg)
python3-trepan (trepan3k)
https://github.com/rocky/python3-trepan/
Попытка переписать pdb c нуля
Версия python2-trepan
Поддерживает 3.3 - 3.5
12
![Page 13: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/13.jpg)
PuDB
https://github.com/inducer/pudb
Оконный интерфейс в текстовом режиме
Интеграция с IPython
Поддерживает удаленную отладку
13
![Page 14: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/14.jpg)
Отладчик из PyDev (и PyCharm)
https://github.com/fabioz/PyDev.Debugger
Разрабатывался в составе PyDev (IDE, основанный на Eclipse)
Способен работать удаленно через pydevd
Поддерживает Python 2.4+
14
![Page 15: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/15.jpg)
WinPDB
https://github.com/bluebird75/winpdb
Сделан на wxPython
Удаленная отладка через rpdb2
Поддерживает Python 2.5 - 3.5, PyPy
Имеет консольную версию
15
![Page 16: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/16.jpg)
Экзотика
smiley - трассировка хода выполнения
manhole - вывод traceback всех потоков
pyrasite - инъекция кода в приложение
16
![Page 17: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/17.jpg)
smiley
https://github.com/dhellmann/smiley
Трассировка хода выполнения программы
Запись всех изменений переменных
Клиент-серверная модель
Имеет веб-интерфейс
17
![Page 18: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/18.jpg)
manhole
https://github.com/ionelmc/python-manhole
Выброс traceback’а всех потоков по сигналу
Запуск shell’а внутри исполняемого кода
В качестве клиента - netcat / socat / telnet
18
![Page 19: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/19.jpg)
pyrasite
https://github.com/lmacken/pyrasite
Запуск произвольного кода внутри уже запущенного процесса
Использует gdb в качестве инструмента
pyrasite-gui, pyrasite-shell, pyrasite-memory-viewer
19
![Page 20: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/20.jpg)
Дополнительные материалы
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
![Page 21: Отладка в Python: 2016 edition](https://reader034.vdocuments.us/reader034/viewer/2022051300/5875fbeb1a28ab4a508b4b05/html5/thumbnails/21.jpg)
Дополнительные материалы
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