我正在使用Python C Api在我们的应用程序中嵌入python。目前,当用户执行脚本时,我们会调用PyRun_SimpleString()
。哪个运行正常。
我想扩展此功能,以允许用户在" Debug"中运行脚本。模式,在典型的IDE中,他们可以设置breakpointsm" watch",并且通常会逐步完成他们的脚本。
我查看了API规范,搜索了类似的功能,但没有找到任何有用的东西。
我确实玩PyEval_SetTrace()
,它返回了我需要的所有信息,但是,我们在与主应用程序相同的线程上执行Python,而我还没有找到一种方法来暂停"跟踪回调命中包含用户检查的断点的行号时的python执行 - 并在稍后恢复执行。
我也看到有各种各样的" Frame"像PyEval_EvalFrame()
这样的函数,但不是很多演示正确用法的地方。也许这些是我应该使用的功能?
非常感谢任何帮助!
答案 0 :(得分:2)
PyEval_SetTrace()
正是您需要使用的API。不知道为什么你需要一些额外的方法来“暂停”执行;当你的回调被调用时,执行已经暂停,并且在你从回调中返回之前不会恢复。