使用Eclipse CDT和GDB进行调试

时间:2009-10-19 09:33:48

标签: c++ eclipse gdb eclipse-cdt

我有使用共享库的Eclipse CDT C ++应用程序项目。该库使用调试信息进行编译,其源代码可在正确的路径下使用。

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

感谢您的帮助。

2 个答案:

答案 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的新版本,而不是听起来像是同样的问题。

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。

祝你好运!