22

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

  • Upload
    -

  • View
    49

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Отладка в Python: 2016 edition
Page 2: Отладка в Python: 2016 edition

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

Moscow Python 2016

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

О докладчике

Имя ему - Кирилл Борисов

10 лет программирует за деньги

5,5 лет души не чает в Python

Работает в Яндексе и не знает забот

3

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

О чем этот доклад?

Вся наша жизнь - отладка

Иногда она случается и в продакшене

Есть много инструментов

Не нужно паниковать

4

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

Подходы к отладке в Python

Явное инструментирование кода

sys.settrace(func) / threading.settrace(func)

Требуют модификации кода

Подвержены влиянию кода пользователя

Подключение к интерпретатору

Можно подключаться к работающему процессу

Отлаживается не код на Python

5

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

Классификация: UI

GUI - графический интерфейс

PuDB

PyCharm, PyDev, WinPDB

CLI - командная строка

pdb, ipdb, rpdb

gdb + python-debuginfo

trepan2 + trepan2kc (trepan3 + trepan3kc)

6

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

Классификация: условия отладки

Локальная отладка

PyCharm, PyDev, WinPDB

PuDB

Удаленная отладка

rpdb, WinPDB + rpdb2

PyCharm, PyDev

trepan2 + trepan2kc (trepan3 + trepan3kc)

7

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

pdb

Входит в стандартную библиотеку

Основан на модуле bdb

Самый базовый CLI

Post-mortem, вызов по исключению и т.д.

8

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

rpdb

https://tamentis.com/projects/rpdb/

Обертка над pdb для удаленной отладки

Достаточно подключиться через nc, telnet и т.д.

Предназначался для отладки кода на Jython под Tomcat

9

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

ipdb

https://github.com/gotcha/ipdb

Отладчик из IPython

Автодополнение, подсветка кода и т.д.

Краткие traceback’и

10

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

python2-trepan

https://github.com/rocky/python2-trepan/

Попытка переписать pdb c нуля

Более гранулярная отладка

Умеет извлекать информацию из байткода

Поддерживает макросы

11

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

python3-trepan (trepan3k)

https://github.com/rocky/python3-trepan/

Попытка переписать pdb c нуля

Версия python2-trepan

Поддерживает 3.3 - 3.5

12

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

PuDB

https://github.com/inducer/pudb

Оконный интерфейс в текстовом режиме

Интеграция с IPython

Поддерживает удаленную отладку

13

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

Отладчик из PyDev (и PyCharm)

https://github.com/fabioz/PyDev.Debugger

Разрабатывался в составе PyDev (IDE, основанный на Eclipse)

Способен работать удаленно через pydevd

Поддерживает Python 2.4+

14

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

WinPDB

https://github.com/bluebird75/winpdb

Сделан на wxPython

Удаленная отладка через rpdb2

Поддерживает Python 2.5 - 3.5, PyPy

Имеет консольную версию

15

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

Экзотика

smiley - трассировка хода выполнения

manhole - вывод traceback всех потоков

pyrasite - инъекция кода в приложение

16

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

smiley

https://github.com/dhellmann/smiley

Трассировка хода выполнения программы

Запись всех изменений переменных

Клиент-серверная модель

Имеет веб-интерфейс

17

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

manhole

https://github.com/ionelmc/python-manhole

Выброс traceback’а всех потоков по сигналу

Запуск shell’а внутри исполняемого кода

В качестве клиента - netcat / socat / telnet

18

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

pyrasite

https://github.com/lmacken/pyrasite

Запуск произвольного кода внутри уже запущенного процесса

Использует gdb в качестве инструмента

pyrasite-gui, pyrasite-shell, pyrasite-memory-viewer

19

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

Дополнительные материалы

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

Дополнительные материалы

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

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

Борисов Кирилл

Разработчик ПО

Контакты

@lensvol

[email protected]