Suggestions for Python debugging tools? [closed]

*爱你&永不变心* 提交于 2019-11-28 15:53:48

Don't forget about post-mortem debugging! After an exception is thrown, the stack frame with all of the locals is contained within sys.last_traceback. You can do pdb.pm() to go to the stack frame where the exception was thrown then p(retty)p(rint) the locals().

Here is a function that uses this information to extract the local variables from the stack.

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 

Usage:

>>> 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} 
nosklo

Winpdb is a platform independent graphical GPL Python debugger with support for remote debugging over a network, multiple threads, namespace modification, embedded debugging, encrypted communication and is up to 20 times faster than pdb.

Features:

  • GPL license. Winpdb is Free Software.
  • Compatible with CPython 2.3 through 2.6 and Python 3000
  • Compatible with wxPython 2.6 through 2.8
  • Platform independent, and tested on Ubuntu Gutsy and Windows XP.
  • User Interfaces: rpdb2 is console based, while winpdb requires wxPython 2.6 or later.


(source: winpdb.org)

pudb is a visual debugger for python.

You can check out the python debugger pdb, which is included in the standard library: http://docs.python.org/library/pdb.html

As the post suggested, there are a few options:

  • pdb: Python's built-in debugger

  • pudb: GUI debugger

  • pydbgr: a rewrite of the pydb debugger

  • ipdb: iPython's ipdb

I'd recommend pydb and ipython for interactive debugging.

Both have screencasts available at showmedo.com

Komodo IDE (not the free Komodo Edit) comes with a debugger. I haven't used it in over a year, but it was good back then (v 3, IIRC).

There is an Eclipse plug-in for Python which supports debugging, among other tools. See the The Tutorial to start with, and the Website for download. Off course you will need to get Eclipse as well.

I used PyCharm and WingIDE for debugging, both are great at debugging.

PyCharm uses quite some RAM (it's in Java), still I ended up using it as I can debug doctests that I'm executing from it.

WindIDE is written in Python, I like it more than PyCharm except the lack of running doctests.

You can also try Spyder, which I never succeeded to make work.

See official Python wiki for suggestions. Feel free to update and subscribe to receive notifications when something new comes out.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!