2024-05-14 00:22:59 发布
网友
有没有办法在python调试会话中记录所有本地/全局变量(以及调用堆栈和其他调试信息)的状态(或拍摄“快照”),以便以后查看
我使用VSCode和Microsoft python扩展来调试python。我想做的是,当我点击一个断点时,如下图所示,找到一种保存所有全局/局部变量的方法,这样我就可以继续调试,并在保存的“快照”和系统的当前状态之间比较所有调试信息。
有人知道这样做的方法吗?不必与VSCode兼容,但那会很好
使用globals()和locals()获取当前变量列表
globals()
locals()
例如:
a = 10 def f(): i = 0 j = 3 print(locals()) print(globals()) f()
指:
{'i': 0, 'j': 3} {'a': 10, 'f': ..., other pre-defined variables}
至于保存它,也许可以使用pickle或dill等工具来创建字典的二进制表示,并将生成的文件视为快照
pickle
dill
例如,当我们将变量保存到文件snapshot.pkl时:
snapshot.pkl
import dill a = 10 def f(): i = 0 j = 3 with open('snapshot.pkl', 'wb') as fd: dill.dump({ 'locals': locals(), 'globals': globals() }, fd) f()
然后稍后将其加载到另一个文件中:
import dill with open('snapshot.pkl', 'rb') as fd: state = dill.load(fd) print(state['locals'])
输出:
{'i': 0, 'j': 3}
对于调用堆栈,我不确定您是想要一个格式良好的调用堆栈,还是仅仅拥有这些信息,但是您可以通过traceback模块和函数traceback.format_stack(或traceback.print_stack)来获得它
traceback
traceback.format_stack
traceback.print_stack
使用
globals()
和locals()
获取当前变量列表例如:
指:
至于保存它,也许可以使用
pickle
或dill
等工具来创建字典的二进制表示,并将生成的文件视为快照例如,当我们将变量保存到文件
snapshot.pkl
时:然后稍后将其加载到另一个文件中:
输出:
对于调用堆栈,我不确定您是想要一个格式良好的调用堆栈,还是仅仅拥有这些信息,但是您可以通过
traceback
模块和函数traceback.format_stack
(或traceback.print_stack
)来获得它相关问题 更多 >
编程相关推荐