在没有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,当你想更新框架时调用它。
我有一个 class 扩展 bdb.Bbd
用于分析 Python 3 代码。现在,我还需要在程序逐步执行时修改一些变量值。
在函数之外,我可以通过修改 frame.f_locals
字典来做到这一点:
frame.f_locals['x'] = 2
如果不使用 ctypes
技巧,我不知道如何在函数内部执行此操作,不幸的是,该技巧尚不支持 ctypes
。
按照下面的方法应该是可以的。定义一个 Javascript 函数:
function frameLocalsToFast(frame){
pyodide._module._PyFrame_LocalsToFast(frame.$$.ptr, 0);
// Hopefully avoid memory leak
frame.destroy();
}
然后将frameLocalsToFast
导入Python,当你想更新框架时调用它。