2011-05-31 94 views
34

我有一個Python擴展,我已經成功構建並在Windows,OSX和Linux上使用。我現在需要能夠調試這個Python擴展。我不喜歡在命令行中使用gdb,所以我真的很想在Eclipse中使用它。在Eclipse中調試Python擴展

首先,我盡我所能按照http://www.heikkitoivonen.net/blog/2008/07/21/debugging-python-extension-written-in-c-with-eclipse/中的說明操作,並將Python源代碼的文件夾以及作爲源文件夾的python擴展代碼文件夾添加到空項目中。由於在Linux上調試所需的所有東西都比較容易,所以我開始在Ubuntu中進行調試開發。

一旦我得到了蟒蛇的調試版本(可以稱之爲python_d),我跑了setup.py我的擴展與

python_d setup.py build 

也應得到擴展模塊的調試版本。我已經驗證了通過在Eclipse中打開擴展作爲應用程序來導出符號,並且我可以看到與Python共享對象鏈接的源代碼。

現在,如果我在Eclipse中使用我的代碼的文件夾創建另一個項目,並在用於創建擴展的源代碼中添加斷點,它不會停在斷點處。我在這裏完全有可能失去一些相當重要的東西,但是對於我來說,我無法讓它工作。問題的關鍵是:

如何讓Eclipse停止在Python擴展模塊的斷點處?

+1

你能在python代碼調用c代碼之前設置一個斷點嗎?如果是這樣,你可以使用「step into」來進入你正在調用的c函數嗎? – 2011-09-16 20:49:50

回答

1

你正在使用哪種編譯器,MSVC或GCC?對於MSVC,你可以先啓動python,然後附上python_d.exe(windbg或visual studio),然後你可以加載你的模塊,設置斷點,你可以驗證你的模塊的符號是否加載到debug-> module窗口中MSVC)。