Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Кирилл Борисов (Яндекс) - Отладка в Python: 2016 edition

Кирилл Борисов (Яндекс) - Отладка в Python: 2016 edition

Доклад с Moscow Python Conf 2016 (http://conf.python.ru)
Видео: https://conf.python.ru/otladka-v-python-2016-edition/

Спросите любого программиста и он честно вам ответит, что 90% процентов его времени уходит на поиск ошибок. Подпишусь под этим и я, сменивший за долгие годы множество языков и фреймворков. Действительно, "человеку свойственно ошибаться". Так что же делать, если из человека это свойство не выбить? Как сократить это бездарно потраченное время?
Тот же программист вам и ответ: "отлаживать, конечно". Это искуство сродни магии, доступно всем и покоряется немногим. Но к счастью, помимо проверенной временем практики "вставь сюда print" к услугам питонистов целый зоопарк инструментов.
В этом докладе я постараюсь обобщить самые частые практики отладки, описать их плюсы/минусы и как они соотносятся с Python. Кроме этого, мы совершим обзорный экскурс по экосистеме и посмотрим, чем можно помочь себе в этой нелегкой борьбе. Для особенных эстетов мы рассмотрим техники получения информации из уже запущенного кода. Buckle up!

Moscow Python Meetup

October 12, 2016
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. О докладчике Имя ему - Кирилл Борисов 10 лет программирует

    за деньги 5,5 лет души не чает в Python Работает в Яндексе и не знает забот 3
  2. О чем этот доклад? Вся наша жизнь - отладка Иногда

    она случается и в продакшене Есть много инструментов Не нужно паниковать 4
  3. Подходы к отладке в Python Явное инструментирование кода ̼ sys.settrace(func)

    / threading.settrace(func) ̼ Требуют модификации кода ̼ Подвержены влиянию кода пользователя Подключение к интерпретатору ̼ Можно подключаться к работающему процессу ̼ Отлаживается не код на Python 5
  4. Классификация: UI GUI - графический интерфейс ̼ PuDB ̼ PyCharm,

    PyDev, WinPDB CLI - командная строка ̼ pdb, ipdb, rpdb ̼ gdb + python-debuginfo ̼ trepan2 + trepan2kc (trepan3 + trepan3kc) 6
  5. Классификация: условия отладки Локальная отладка ̼ PyCharm, PyDev, WinPDB ̼

    PuDB Удаленная отладка ̼ rpdb, WinPDB + rpdb2 ̼ PyCharm, PyDev ̼ trepan2 + trepan2kc (trepan3 + trepan3kc) 7
  6. pdb ̼Входит в стандартную библиотеку ̼Основан на модуле bdb ̼Самый

    базовый CLI ̼Post-mortem, вызов по исключению и т.д. 8
  7. rpdb https://tamentis.com/projects/rpdb/ ̼Обертка над pdb для удаленной отладки ̼Достаточно подключиться

    через nc, telnet и т.д. ̼Предназначался для отладки кода на Jython под Tomcat 9
  8. python2-trepan https://github.com/rocky/python2-trepan/ ̼Попытка переписать pdb c нуля ̼Более гранулярная отладка

    ̼Умеет извлекать информацию из байткода ̼Поддерживает макросы 11
  9. Отладчик из PyDev (и PyCharm) https://github.com/fabioz/PyDev.Debugger ̼Разрабатывался в составе PyDev

    (IDE, основанный на Eclipse) ̼Способен работать удаленно через pydevd ̼Поддерживает Python 2.4+ 14
  10. Экзотика smiley - трассировка хода выполнения manhole - вывод traceback

    всех потоков pyrasite - инъекция кода в приложение 16
  11. manhole https://github.com/ionelmc/python-manhole ̼Выброс traceback’а всех потоков по сигналу ̼Запуск shell’а

    внутри исполняемого кода ̼В качестве клиента - netcat / socat / telnet 18
  12. Дополнительные материалы 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
  13. Дополнительные материалы 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