Предложения для инструментов отладки Python?

Вчера я сделал симуляцию с помощью Python. У меня было несколько трудностей с переменными и отладкой.

Есть ли какое-нибудь программное обеспечение для Python, которое обеспечивает достойный отладчик?

Похожие вопросы: Каков наилучший способ отладки моего кода на Python?

Ответ 1

Не забывайте об отсрочке откладывания! После того, как выбрано исключение, кадр стека со всеми локалями содержится внутри sys.last_traceback. Вы можете сделать pdb.pm(), чтобы перейти к фрейму стека, где было выбрано исключение, p (retty) p (rint) locals().

Вот функция, которая использует эту информацию для извлечения локальных переменных из стека.

def findlocals(search, startframe=None, trace=False):

    from pprint import pprint
    import inspect, pdb

    startframe = startframe or sys.last_traceback
    frames = inspect.getinnerframes(startframe)

    frame = [tb for (tb, _, lineno, fname, _, _) in frames
             if search in (lineno, fname)][0]

    if trace:
        pprint(frame.f_locals)
        pdb.set_trace(frame)
    return frame.f_locals

Использование:

>>> def screwyFunc():
    a = 0
    return 2/a

>>> screwyFunc()

Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    screwyFunc()
  File "<pyshell#55>", line 3, in screwyFunc
    return 2/a
ZeroDivisionError: integer division or modulo by zero
>>> findlocals('screwyFunc')
{'a': 0}

Ответ 2

Winpdb является независимым от платформы графическим отладчиком Python GPL с поддержкой удаленной отладки по сети, несколькими потоками, модификацией пространства имен, встроенной отладкой, зашифрованной связью и работает в 20 раз быстрее, чем pdb.

Особенности:

  • Лицензия GPL. Winpdb - свободное программное обеспечение.
  • Совместим с CPython 2.3 до 2.6 и Python 3000
  • Совместим с wxPython 2.6 до 2.8
  • Независимо от платформы и протестировано на Ubuntu Gutsy и Windows XP.
  • Пользовательские интерфейсы: rpdb2 основывается на консоли, а winpdb требует wxPython 2.6 или более поздней версии.

Screenshot
(источник: winpdb.org)

Ответ 3

pudb - визуальный отладчик для python.

pudb screenshot

Ответ 5

В качестве сообщения предложено несколько вариантов:

  • pdb: встроенный отладчик Python pdb

  • pudb: отладчик GUI pudb

  • pydbgr: переписать отладчик pydb pydbgrb

  • ipdb: iPython ipdb ipdb

Ответ 7

Komodo IDE (а не бесплатный Komodo Edit) поставляется с отладчиком. Я не использовал его более года, но тогда это было хорошо (v 3, IIRC).

Ответ 8

В Python есть подключаемый модуль Eclipse, который поддерживает отладку, среди других инструментов. См. "" Учебное пособие ", и Веб-сайт для загрузки. Конечно, вам нужно будет Eclipse.

Ответ 9

Я использовал PyCharm и WingIDE для отладки, оба великолепны.

PyCharm использует довольно много ОЗУ (в Java), но я все же использовал его, поскольку могу отлаживать тесты, которые я выполняю из него.

WindIDE написан на Python, мне он больше нравится, чем PyCharm, за исключением отсутствия запуска doctests.

Вы также можете попробовать Spyder, который мне никогда не удавалось заставить работать.

Ответ 10

См. официальный Python wiki для предложений. Не стесняйтесь обновлять и подписываться на получение уведомлений, когда появляется что-то новое.