小编tho*_*ton的帖子

"在使用gdb在Eclipse中调试简单C++时,没有可用于main()的源代码"错误

我在OSX上调试Eclipse中的C++程序(Helios的最新RC,用自己内部更新的最新CDT)时遇到了麻烦.

该程序非常简单(基本上是NeHe的OpenGL教程的第2课),由一个cpp文件组成,使用OpenGL和Cocoa框架,并与libSDL.a和libSDLmain.a链接.

项目的结构非常简单:源文件位于项目的子目录中,名为src /,可执行文件构建在项目的根目录中.

问题在于,每当我尝试添加断点并对其进行调试时,断点似乎都会被完美地命中,但是没有显示任何源 - 相反,我只是在代码窗口中得到"没有源可用于main()"错误.

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

Eclipse中的调试设置设置为"Standard spawn progess",调试器设置为"gdb".

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

我确保Eclipse和shell都使用相同的gdb可执行文件,它们是(它是/ usr/bin/gdb).

现在我可能错了,但这一切都告诉我,编译器和链接器标志不会有问题(因为相同的可执行文件可以从shell调试),所以可能问题必须是如何调用gdb从Eclipse内部?也许从Eclipse运行时,gdb会提取不同的配置文件或者什么,而不是从shell运行时?(有人知道吗?)

我真的很感激任何帮助,因为它正在慢慢驱使我循环!

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

提前谢谢了,

thoughton.

--- 编辑@"14小时前" ---

我尝试了"添加文件系统路径"(带有"搜索子文件夹")选项,但这不起作用.我也试过创建一个新的完全平坦的项目,但这也不起作用.我甚至试图获得Galileo版本(带有CDT更新的eclipse-SDK-3.5.2RC4),但这没有任何区别(除了gdb启动速度较慢).

我注意到这里有一些奇怪的事情:一旦我得到"No source available"消息,如果我然后切换Eclipse的控制台以显示"gdb"控制台,并打开"详细控制台模式"以便我可以进行通信,我可以然后发出"l"和"bt"命令并让它们成功运行,显示我的断点被击中的正确源和堆栈.哪,纠正我,如果我错了,必须意味着信息在那里并正确调用gdb - 那么为什么Eclipse不会看到这些信息呢?

老实说,我已经接近放弃Eclipse了......我也带着如此高的期望来到它.

任何额外的帮助或想法将非常感激.

吨.

c++ eclipse debugging macos gdb

20
推荐指数
4
解决办法
6万
查看次数

如何从PDB文件获取GUID?

有谁知道如何从PDB文件获取GUID?

我正在使用Microsoft的Debug Interface Access SDK

http://msdn.microsoft.com/en-us/library/f0756hat.aspx

并在传递GUID时获取E_PDB_INVALID_SIG,我希望在尝试加载PDB时获得该信息。

我只想了解PDB的GUID,因此可以确定它不匹配,而不仅仅是一个可能因某种原因损坏的PDB。

有没有可以做到这一点的工具?我尝试了dia2dump和dumpbin,但没有任何乐趣...

非常感谢,

思想。

debugging guid pdb-files dia-sdk

3
推荐指数
1
解决办法
5999
查看次数

标签 统计

debugging ×2

c++ ×1

dia-sdk ×1

eclipse ×1

gdb ×1

guid ×1

macos ×1

pdb-files ×1