2011-05-31 93 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)。