在 Eclipse 中调试 Python 扩展
Posted
技术标签:
【中文标题】在 Eclipse 中调试 Python 扩展【英文标题】:Debugging a Python Extension in Eclipse 【发布时间】:2011-09-05 05:06:47 【问题描述】:我有一个 Python 扩展,已成功构建并在 Windows、OSX 和 linux 上使用。我现在需要能够调试这个 Python 扩展。我反对在命令行中使用 gdb,所以我真的很想让它在 Eclipse 中工作。
首先,我尽我所能按照http://www.heikkitoivonen.net/blog/2008/07/21/debugging-python-extension-written-in-c-with-eclipse/ 中的说明进行操作,并将 Python 源代码的文件夹以及 Python 扩展代码的文件夹作为源文件夹添加到空项目中。由于在 linux 上获得所需的所有内容的调试版本相对容易,因此我开始在 Ubuntu 中进行调试开发。
一旦我获得了 python 的调试版本(我们称之为 python_d),我就运行了 setup.py 以用于我的扩展
python_d setup.py build
这也应该产生扩展模块的调试版本。我已经通过在 Eclipse 中将扩展作为应用程序打开来验证符号正在导出,并且我可以看到与 Python 共享对象链接的源代码。
现在,如果我在 Eclipse 中使用我的代码文件夹创建另一个项目,并在用于创建扩展的源代码中添加一个断点,它不会在断点处停止。我完全有可能在这里遗漏了一些相当重要的东西,但对于我的生活,我无法让它发挥作用。问题的症结在于:
如何让 Eclipse 在 Python 扩展模块的断点处停止?
【问题讨论】:
能否在python代码调用c代码之前设置断点?如果是这样,您可以使用“step into”进入您正在调用的 c 函数吗? 【参考方案1】:您使用的是哪个编译器,MSVC 还是 GCC?对于MSVC,你可以先启动python,并附加python_d.exe(windbg或visual studio),然后你可以加载你的模块,设置断点,你可以验证你的模块的符号是否在调试->模块窗口中加载( MSVC)。
【讨论】:
以上是关于在 Eclipse 中调试 Python 扩展的主要内容,如果未能解决你的问题,请参考以下文章
调试 python 在 Eclipse ( pydev ) 中终止