Pet*_*eyn 7 python debugging visual-studio-code
有没有办法在 python 调试会话中记录所有本地/全局变量(以及调用堆栈和其他调试信息)的状态(或拍摄“快照”),以便我稍后查看?
我使用 VSCode 和 Microsoft python 扩展来调试 python。我想要做的是,当我遇到断点时,如下所示,有一种方法来保存所有全局/局部变量,以便我可以继续调试并比较我保存的“快照”和当前状态之间的所有调试信息系统。

有谁知道有什么方法可以做到这一点?不一定要与 VSCode 兼容,但那就太好了。
使用globals()和locals()获取当前变量列表。
例如:
a = 10
def f():
i = 0
j = 3
print(locals())
print(globals())
f()
Run Code Online (Sandbox Code Playgroud)
方法:
{'i': 0, 'j': 3}
{'a': 10, 'f': ..., other pre-defined variables}
Run Code Online (Sandbox Code Playgroud)
至于保存它,也许使用类似pickle或 之类的工具dill创建字典的二进制表示并将生成的文件视为快照?
例如,当我们将变量保存到文件中时snapshot.pkl:
{'i': 0, 'j': 3}
{'a': 10, 'f': ..., other pre-defined variables}
Run Code Online (Sandbox Code Playgroud)
然后稍后将其加载到另一个文件中:
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()
Run Code Online (Sandbox Code Playgroud)
输出:
{'i': 0, 'j': 3}
Run Code Online (Sandbox Code Playgroud)
对于调用堆栈,我不确定您是否想要一个格式良好的调用堆栈或只是拥有信息,但您可以简单地通过traceback具有函数traceback.format_stack(或traceback.print_stack)的模块来获取它。
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |