我有使用共享库的Eclipse CDT C ++应用程序项目。该库使用调试信息进行编译,其源代码可在正确的路径下使用。
现在我尝试使用Eclipse和GDB调试我的应用程序。如果我在我的应用程序源代码中放置断点,一切都很好。 然后我打开包含的共享库的源文件并将断点放在那里。启动调试会话时,我被警告 “在加载的符号中没有名为xxx.cpp的源文件” ,并且此时没有停止执行。如果我在调试会话已经运行时将相同的断点放在同一个文件中,一切正常。有什么问题?
感谢您的帮助。
答案 0 :(得分:7)
我找到了一个可以回答这个问题的主题: Why does Eclipse CDT ignore breakpoints?
可能是你想要设置 共享库中的断点 尚未加载。那不会 工作直到库加载。 较新的gdb允许设置延迟 断点,但可能还没有 CDT支持。解决方法是 在一个地方设置一个断点 从一开始就可以 在共享库中时到达 问题已经加载。然后设置 共享中的另一个断点 图书馆。现在它应该工作。它是 有点乏味,但通常有效。
认为它是answear? 我正在使用CDT v6.0.0.200906161748和GDB v6.8
答案 1 :(得分:7)
我有同样的问题,在Qt插件中尝试设置断点(基于Windows DLL,s)。
我发现这个讨论并且解决方案对我来说非常合适,尽管我使用的是Eclipse的新版本,而不是听起来像是同样的问题。
基本上,它是使用支持延迟断点的旧gdb协议。使用“标准创建进程启动器”而不是“调试配置”中的“GDB(DSF)创建进程启动器”,我现在可以设置所有的DLL断点。
版本:Helios发布 构建ID:20100617-1415
CDT和GDB版本7.0.0。
祝你好运!