【问题标题】: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,当你想更新框架时调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 2020-12-04
      • 2021-04-21
      相关资源
      最近更新 更多