17

我有使用共享库的 Eclipse CDT C++ 应用程序项目。这个库是用调试信息编译的,它的源代码在正确的路径上可用。

现在我尝试使用 Eclipse 和 GDB 调试我的应用程序。如果我在我的应用程序源代码中设置断点,一切都很好。然后我打开包含的共享库的源文件并将断点放在那里。启动调试会话时,我被警告“在加载的符号中没有名为 xxx.cpp 的源文件”,并且此时不会停止执行。如果我在调试会话已经运行时将相同的断点放在同一个文件中,那么一切正常。怎么了?

谢谢你的帮助。

4

2 回答 2

7

我遇到了同样的问题,尝试在 Qt 插件(基于 Windows DLL)中设置断点。

我发现这个讨论和解决方案对我来说非常有效,尽管我使用的 Eclipse 版本比你使用的新版本听起来很像同样的问题。

http://www.eclipse.org/forums/index.php?t=msg&goto=555294&S=2aed4155e654e34cb2e84a6fb23de9bf#msg_555294

基本上,它是使用支持延迟断点的旧 gdb 协议。使用调试配置中的“标准创建进程启动器”而不是“GDB(DSF)创建进程启动器”,我现在设置了所有 DLL 断点。

版本:Helios 发布版本 ID:20100617-1415

CDT 和 GDB 版本 7.0.0。

祝你好运!

于 2010-08-27T20:57:12.240 回答
7

我找到了一个可以回答这个问题的主题: 为什么 Eclipse CDT 会忽略断点?

可能是您试图在尚未加载的共享库中设置断点。在库加载之前,这将不起作用。较新的 gdb 允许设置延迟断点,但 CDT 可能(尚)不支持。一种解决方法是在一个从一开始就可用的位置设置一个断点,当相关共享库已经加载时将到达该位置。然后在共享库中设置另一个断点。现在它应该可以工作了。这有点乏味,但通常有效。

难道是答案?我正在使用 CDT v6.0.0.200906161748 和 GDB v6.8

于 2009-10-19T09:38:09.730 回答