我想利用 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() 对于长时间调试不是很方便。