我在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了......我也带着如此高的期望来到它.
任何额外的帮助或想法将非常感激.
吨.
有谁知道如何从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,但没有任何乐趣...
非常感谢,
思想。