Предложения по инструментам отладки Python?[закрыто]

StackOverflow https://stackoverflow.com/questions/477193

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Не забывайте о посмертной отладке!После создания исключения кадр стека со всеми локальными элементами содержится внутри 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}

Другие советы

Винпдб это независимая платформа графический отладчик 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)

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

pudb screenshot

Вы можете ознакомиться с pdb отладчика Python, который входит в стандартную библиотеку: http: / /docs.python.org/library/pdb.html

Как пост предложил, есть несколько вариантов:

  • PDB:Встроенный отладчик Pythonpdb

  • пудб:Отладчик графического интерфейсаpudb

  • пидбгр:переписанный отладчик pydbpydbgrb

  • ipdb:ipdb iPythonipdb

Я бы порекомендовал pydb и ипитон для интерактивной отладки.

Скринкасты обоих доступны на сайте showmedo.com

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

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

Я использовал PyCharm и WingIDE для отладки, оба отлично справляются с отладкой.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top