我想利用python的自省功能进行调试/开发,但找不到合适的工具。python中交互式调试的最佳方式是什么?
我需要在特定位置或特定事件(如异常)进入shell(例如IPython),并将shell的局部和全局变量设置为帧的。
我自己的快速黑客来说明吧:
import inspect
from IPython.Shell import IPShellEmbed
def run_debug():
stack = inspect.stack()
frame = stack[1][0]
loc = frame.f_locals
glob = frame.f_globals
shell = IPShellEmbed()
shell(local_ns=loc, global_ns=glob)
在根据run_debug()从 '断点' 呼叫或尝试/除外。但是,显然,这需要大量的改进,尤其是适当地使用线程应用程序。
winpdb与控制台有断点,但我发现没有办法从它快速运行适当的python shell,并且eval()/ exec()对于长时间调试不太方便。
谢谢,他们的Pro版本确实需要功能,它在运行shell之前暂停执行进程,所以线程并不是问题。 很遗憾它的专有,但似乎它是你得到什么付费的情况。 – 2010-07-23 02:11:58
我想这是收费的好处之一 - 他们可以承担雇用人并支付他们的费用,以解决类似问题;)当然,如果价格过高,您可以随时环顾当地的python会议,并建议他们询问翼为一些赠送的副本。他们每年向我们提供3-4次我们所要求的信息,而我与他们交流过的每一次交易都令人印象深刻。 – 2010-07-23 12:26:57