2015-03-02 101 views
0

我正在使用Python C API在我們的應用程序中嵌入python。目前,當用戶執行腳本時,我們呼叫PyRun_SimpleString()。哪個運行良好。如何在嵌入式Python中實現斷點功能

我想擴展此功能以允許用戶在「調試」模式下運行腳本,就像在典型的IDE中一樣,他們將被允許設置breakpointsm「手錶」,並且通常會遍歷腳本。

我已經看過API規範,搜索類似的功能,但沒有找到任何幫助很大的東西。

我確實玩過PyEval_SetTrace(),它返回我需要的所有信息,但是,我們在與我們的主應用程序相同的線程上執行Python,並且我還沒有找到一種方法在trace回調命中時暫停python執行包含用戶檢查的斷點的行號 - 稍後恢復執行。

我也看到,有像PyEval_EvalFrame()這樣的各種「框架」功能,但不是很多演示正確用法的地方。也許這些是我應該使用的功能?

任何幫助將不勝感激!

回答

1

PyEval_SetTrace()正是您需要使用的API。不知道爲什麼你需要一些額外的方式來「暫停」執行;當你的回調被調用時,執行已經暫停,直到你從回調中返回纔會恢復。

+0

似乎你是對的,謝謝!我的問題是我正在執行python的線程不是最好的離開跟蹤運行。重新分解後,一切正常。 – 2015-03-04 21:45:07