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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值