首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Eclipse中使用gdb调试简单C++时出现"No source for main()“错误

在Eclipse中使用gdb调试简单C++时出现"No source for main()“错误
EN

Stack Overflow用户
提问于 2010-02-24 16:33:57
回答 14查看 70.2K关注 0票数 25

我在OSX上调试Eclipse ( Helios的最新RC,从内部使用最新的CDT更新)中的C++程序时遇到了问题。

这个程序非常简单(特别是从NeHe的OpenGL教程中学到的第二课),由一个cpp文件组成,使用OpenGL和Cocoa框架,并与libSDL.a和libSDLmain.a链接。

该项目的结构非常简单:源文件位于项目的子目录src/中,可执行文件构建到项目的根目录中。

问题是,每当我尝试添加断点并对其进行调试时,断点似乎完全命中,但没有显示源代码-相反,我只是在代码窗口中得到一个"No source available for main()“错误。

编译器标志将优化设置为none,并且编译器和链接器都设置了调试符号标志(-g)。

Eclipse中的调试设置被设置为“标准生成进度”,调试器被设置为"gdb“。

现在最奇怪的事情是,如果我尝试调试完全相同的可执行文件-即。与Eclipse构建的完全相同--从终端(shell)使用gdb,然后一切工作正常。命中断点,显示源代码,没有任何问题。

我已经确保Eclipse和shell使用相同的gdb可执行文件(即/usr/bin/gdb)。

现在我可能错了,但这一切都表明编译器和链接器标志不可能有问题(因为可以从shell调试相同的可执行文件),所以问题可能出在如何从Eclipse中调用gdb?也许当从Eclipse运行时,gdb会选择与从shell运行时不同的配置文件或其他文件?(有人知道吗?)

我真的很感谢任何人的帮助,因为它正在慢慢地让我发疯!

如果还有其他有用的细节,请告诉我-- Eclipse/cdt/gdb的确切版本号,确切的链接器/编译器命令行,等等--我将很乐意用它们更新这篇文章。

在此之前,非常感谢,

思考。

-编辑@ "14小时前“

我尝试了“添加文件系统路径”(使用“搜索子文件夹”)选项,但不起作用。我还尝试创建一个新的完全扁平的项目,但也不起作用。我甚至尝试过获取Galileo发行版(eclipse-SDK-3.5.2RC4 with CDT update),但这并没有什么不同(除了gdb启动较慢之外)。

还有一些我注意到的奇怪之处:一旦我收到"No source available“消息,如果我切换Eclipse的控制台以显示"gdb”控制台,并打开"Verbose console mode“以便与之通信,那么我就可以发出"l”和"bt“命令并使它们成功工作,从而显示出我的断点所在的正确的源代码和堆栈。如果我错了,请纠正我,这一定意味着信息已经存在,gdb正在被正确调用-那么为什么Eclipse看不到这些信息呢?

老实说,我快要放弃Eclipse了……我也是抱着很高的期望来到这里的。

任何额外的帮助或想法都将不胜感激。

t.

EN

Stack Overflow用户

发布于 2017-10-31 19:46:25

值得一提的是,在使用cmake构建项目的情况下,解决方案的一种方法是在cmake命令中添加"debug flag“,即-

$ cmake /path/to/main/cmake_file -DCMAKE_BUILD_TYPE=Debug

票数 2
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2324602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档