Comments 21
Раз уж пошла такая пьянка, а нет ли для питона отладчика, понимаемого всякими нетбинсами?
Думал: «Сейчас на ночь что-нибудь интересное небольшое почитаю...»
скажите, плиз, а чем отладчик выигрывает перед логами?
логи гораздо информативнее, хотя бы потому что ты видишь сразу все значения всех переменных, не нажимая f8 и не следя за изменением значения
это все равно что сравнить посмотреть через подзорную трубу на что-то или снять этой подзорной трубой панораму и рассматривать большую панораму
В случае с отладичком (я говорю про полноценные GUI отладчики, например как в JetBrains IDEA) я могу при необходимости менять значения переменных и исправлять код методов непосредственно в процессе отладки. То есть по мере выполнения увидел, что в такой-то строчке забыл прибавить еденицу — исправил код и тут же исправил значение переменой, чтобы не запускать всё заново.

«не нажимая f8 и не следя за изменением значения» — а зачем следить? Есть же условные брэкпойнты.

Еще насчет «ты видишь сразу все значения всех переменных» — если у вас данных много, то логировать всё вы не сможете, иначе закопаетесь в логах. Отладчик же позволяет получить нужные значения в нужное время с нужной детализацией.

Если уж сравнивать, то логирование — это статичная фотография, а отладчик — возможность покапаться с микроскопом и пинцетом.

Да и вообще спор отладчик vs логи имеет мало смысла — всё зависит от задачи и структуры кода, который нужно отладить.
Ну, почему же. Можно подумать, где лучше применять отладчик, а где отладочную печать.
Лично я поступаю так, практически всегда применяю отладочную печать.
В отладчик лезу тогда, когда программа падает, а в каком месте и из-за чего, неизвестно. Вот тогда отладчик, ИМХО, незаменим.
Вот именно, это не спор — просто в некоторых местах удобнее отладчик, в некоторых — логи.
я не говорю выводить в лог значения каждой переменной i
да и grep-ать логи никто не запрещает
pdb – Интерактивный отладчик

логи — не интерактивны. читая логи нельзя на ходу повлиять на ход выполнения программы. Отладчик так же позволяет проследить за выполнением программы построчно, тоесть можно походить как по своему коду, так и рассмотреть выполнение внутри 3rd party библиотек (бывает часто полезно с той же джангой).

Вообще, выше — правильно про спор отладка vs. логи. Это разные инструменты для разных целей
Отладчик удобнее использовать, когда непонятно, куда и почему передается управление.
в принципе есть еще winpdb, гуй на wx, есть возможность удаленной отладки. в принципе лучший отладчик для питона, имхо
pdb хорош. Но не без недостатков (туповатый он, что касается автодополнения и прочих наглядных плюшек).

Нередко для разбора того, что происходит в коде использую в нужном месте
import IPython
ipshell = IPython.core.embed.InteractiveShellEmbed()
ipshell.mainloop()

Очень красиво и наглядно получается. :)
$ pip install ipython ipdb

и потом

import ipdb; ipdb.set_trace()

на последнюю команду даже shortcut в редакторе завел.
Как можно с помощью pdb отлаживать форки?

Запускаю pdb, пишу break /path/to/module:10 (после чего в брякпоинтах он отображается, значит добавился успешно), затем cont, выполняется основной процесс, запускает форки, форки отрабатывают, родитель завершается, отладчик перезапускается со словами «программа завершилась, и я запустился заново»
Only those users with full accounts are able to leave comments. Log in, please.