在没有ctypes的情况下修改bdb中的变量值

Modify variable values in bdb without ctypes

我有一个 class 扩展 bdb.Bbd 用于分析 Python 3 代码。现在,我还需要在程序逐步执行时修改一些变量值。

在函数之外,我可以通过修改 frame.f_locals 字典来做到这一点:

frame.f_locals['x'] = 2

如果不使用 question. I'm running Python 3 inside Pyodide 中提到的 ctypes 技巧,我不知道如何在函数内部执行此操作,不幸的是,该技巧尚不支持 ctypes

按照下面的方法应该是可以的。定义一个 Javascript 函数:

function frameLocalsToFast(frame){
   pyodide._module._PyFrame_LocalsToFast(frame.$$.ptr, 0);
   // Hopefully avoid memory leak
   frame.destroy();
}

然后将frameLocalsToFast导入Python,当你想更新框架时调用它。