天天看點

python 逐行調試工具,Python調試工具的建議?

python 逐行調試工具,Python調試工具的建議?

Yesterday I made a simulation using Python. I had a few difficulties with variables and debugging.

Is there any software for Python, which provides a decent debugger?

解決方案

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 "", line 1, in

screwyFunc()

File "", line 3, in screwyFunc

return 2/a

ZeroDivisionError: integer division or modulo by zero

>>> findlocals('screwyFunc')

{'a': 0}