Предложения по инструментам отладки Python?[закрыто]
-
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 или новее.
(источник: winpdb.org)
pudb - визуальный отладчик для python.
Вы можете ознакомиться с pdb отладчика Python, который входит в стандартную библиотеку: http: / /docs.python.org/library/pdb.html р>
Как пост предложил, есть несколько вариантов:
PDB:Встроенный отладчик Python
пудб:Отладчик графического интерфейса
пидбгр:переписанный отладчик pydb
ipdb:ipdb iPython
Я бы порекомендовал pydb и ипитон для интерактивной отладки.
Скринкасты обоих доступны на сайте showmedo.com
Komodo IDE (не бесплатная Komodo Edit ) поставляется с отладчиком. Я не использовал его более года, но тогда это было хорошо (ст. 3, IIRC). Р>
Существует плагин Eclipse для Python, который поддерживает отладку, среди других инструментов. См. Учебное пособие для начала и Веб-сайт для загрузки. Конечно же, вам потребуется Eclipse .
Я использовал PyCharm и WingIDE для отладки, оба отлично справляются с отладкой. Р>
PyCharm использует довольно много ОЗУ (оно на Java), но в итоге я использовал его, так как могу отлаживать тесты, которые я выполняю из него.
WindIDE написан на Python, мне он больше нравится, чем PyCharm, за исключением отсутствия запуска doctests.
Вы также можете попробовать Spyder, который мне никогда не удавалось заставить работать.
См. официальные Python wiki для получения предложений. Не стесняйтесь обновлять и подписываться на получение уведомлений, когда появляется что-то новое.