在python中进行交互式调试的最佳方法是什么?

Dan*_*uev 8 python debugging pdb

我想利用python的内省功能进行调试/开发,但找不到合适的工具.

我需要在特定位置或特定事件(例如异常)进入shell(例如IPython),将shell的locals和globals设置为frame的.

我自己快速解释它:

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 Code Online (Sandbox Code Playgroud)

使用来自'breakpoint'的run_debug()调用或try/except.但是,显然,这需要很多抛光,尤其是正确使用线程应用程序.

winpdb在控制台上有断点,但我发现无法从中快速运行适当的python shell,并且eval()/ exec()对于长调试来说不是很方便.

Way*_*ner 2

出于个人/教育目的,您可以使用WingIDE - 它们具有一些非常可靠的调试功能。

当然,如果您只是担心更改值,您可以随时使用raw_input()- 但这可能不够先进,无法满足您的需求。