【问题标题】:Modify variable values in bdb without ctypes在没有 ctypes 的情况下修改 bdb 中的变量值
【发布时间】:2021-04-11 16:09:08
【问题描述】:
我有一个扩展 bdb.Bbd 的类,用于分析 Python 3 代码。现在,我还需要在程序逐步执行时修改一些变量值。
在函数之外,我可以通过修改frame.f_locals 字典来做到这一点:
frame.f_locals['x'] = 2
如果不使用this 问题中提到的ctypes 技巧,我无法弄清楚如何在函数内部执行此操作。我在 Pyodide 中运行 Python 3,不幸的是它还不支持 ctypes。
【问题讨论】:
标签:
python
python-3.x
pyodide
【解决方案1】:
应该可以按如下方式进行。定义一个 Javascript 函数:
function frameLocalsToFast(frame){
pyodide._module._PyFrame_LocalsToFast(frame.$$.ptr, 0);
// Hopefully avoid memory leak
frame.destroy();
}
然后将frameLocalsToFast导入Python,当你想更新框架时调用它。