【发布时间】:2011-11-29 07:51:02
【问题描述】:
在 Linux 中,我正在尝试调试从 Python 代码加载的共享库的 C++ 代码。使用ctypes 包完成加载。在 Eclipse 中,我在 Python 和 C++ 代码中都设置了断点,但是 Eclipse 只是跳过了 C++ 代码中的断点(Python 代码中的断点可以正常工作)。
我尝试在 Eclipse 中使用attach to application(在调试配置下)并选择 Python 进程,但它没有改变任何东西。在attach to application 对话框中,我选择共享库作为项目,我选择/usr/bin/python2.6 作为C/C++ application。这是正确的方法吗?
在运行 python 代码之前,以及在 Python 代码中的断点被捕获之后,就在调用共享库函数的行之前,我都尝试过。
编辑
同时,我正在使用一种解决方法,即通过附加到 python 进程来调用 python 代码并使用 gdb 命令行会话进行调试。但我想听听在 Eclipse 中执行此操作的解决方案。
【问题讨论】:
-
库是用调试信息构建的吗?
-
是的,当从 c++ 可执行文件加载库时,我可以毫无问题地调试库。
-
第二个想法,如何验证python代码是否加载了调试版本?
-
如果未找到调试信息,GDB 应发出警告(
Reading symbols from <library>...(no debugging symbols found)...done.与Reading symbols from <library>...done.)。我不熟悉 Eclipse;希望你有办法读取原始 GDB 输出。 -
尝试在c++代码中使用_asm("int $3")
标签: python debugging gdb shared-libraries eclipse-cdt