如何在嵌入Python中实现断点功能

时间:2015-03-02 18:49:26

标签: python python-c-api

我正在使用Python C Api在我们的应用程序中嵌入python。目前,当用户执行脚本时,我们会调用PyRun_SimpleString()。哪个运行正常。

我想扩展此功能,以允许用户在" Debug"中运行脚本。模式,在典型的IDE中,他们可以设置breakpointsm" watch",并且通常会逐步完成他们的脚本。

我查看了API规范,搜索了类似的功能,但没有找到任何有用的东西。

我确实玩PyEval_SetTrace(),它返回了我需要的所有信息,但是,我们在与主应用程序相同的线程上执行Python,而我还没有找到一种方法来暂停"跟踪回调命中包含用户检查的断点的行号时的python执行 - 并在稍后恢复执行。

我也看到有各种各样的" Frame"像PyEval_EvalFrame()这样的函数,但不是很多演示正确用法的地方。也许这些是我应该使用的功能?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

PyEval_SetTrace()正是您需要使用的API。不知道为什么你需要一些额外的方法来“暂停”执行;当你的回调被调用时,执行已经暂停,并且在你从回调中返回之前不会恢复。