在Mac上使用Eclipse伽利略来调试C++的问题

问题描述:

我想在运行Mac OS X v10.5(Leopard)的MacBook Pro上使用Eclipse伽利略来调试C++代码。这是我第一次尝试这个。我有一个复杂的C++程序,我想调试,但要测试的东西出来,我只是试图调试,并通过以下步骤:在Mac上使用Eclipse伽利略来调试C++的问题

#include <iostream> 
using namespace std; 

int main() 
{ 
    int x = 0; 
    cout << x << endl; 

    x = 54; 
    cout << x << endl; 

    return 0; 
} 

我点击调试图标,告诉它使用GDB(DSF )创建Process Launcher并开始逐步完成代码。我希望能够监视x的值,所以我打开了“变量”窗口并观看。最初,这是4096 - 大概是一些垃圾价值。只要我打的下一行,它表明的价值,它现在显示了以下错误:

Failed to execute MI command: 
-var-update 1 var1 
Error message from debugger back end: 
Variable object not found 

我似乎无法想出解决办法或周围获得。一些谷歌搜索结果骨头干燥,甚至没有铅的暗示。


:作为drhirsch指出下方,使用标准创建流程启动器而不是GDB创建流程启动的。 (这实际上是一个解决方法,而不是一个真正的解决方案,但它至少对我们两个人有效。)

+0

嗨,我得到相同的错误 你如何得到在屏幕上的错误输出“失败执行..”?我什至没有任何信息.... – flow 2009-12-20 22:10:48

+0

好吧,目前,使用/ opt/local/bin/fsf-gdb 这是版本7.1,似乎做的伎俩!我没有广泛地测试它,但是我可以在非常不同的函数中使用断点,并且程序在调试时停在那里 – flow 2011-03-04 15:35:20

+0

您是否使用调试信息进行编译并且不会剥离可执行文件? – steve 2009-08-13 07:09:47

以我的经验gdb/dsf启动程序仍然很不可用。我无法让它显示变量,它似乎仍然非常错误。

您是否尝试过使用Standard Create Process Launcher?对我来说这工作得很好。

+0

你知道,我诚实地尝试切换到,并得到了完全不同的应用程序错误。但是,根据你的建议,我再次尝试,whaddaya知道......它的工作原理!谢谢! – 2009-08-13 08:11:08

+0

我可能从那以后重新启动了Eclipse。这可能是为什么。 – 2009-08-13 08:12:37

在未来,你也可以尝试使用Xcode(只是为了调试) - 在将所有的文件,将它们导入到一个新的项目,但不进行编译。相反,打开调试器窗口并附加到正在运行的进程。

+0

使用两个IDE并不是很实际我会说 – flow 2011-03-03 09:23:57

同样的问题,但我可能找到了一种方法。在Eclipse中,在项目属性下,在运行/调试设置中,我删除了启动配置并再次运行调试器。

在这一点上一切正常,但如果我修改,启动调试器至少需要10秒。我认为这与调试属性和启动器配置的组合有关。

这似乎仍然是没有一个可靠的很好的回答了问题,比使用IDE以外的Eclipse等。

我试用过DSF创建进程启动和标准创建进程启动的变化,但也导致调试成功经验。 GDB调试器以任一方式启动,但断点处理不当(在某些情况下未解决),几乎没有变量值可以检查/跟踪。

下面是我用什么软件:

  • 的Eclipse 3.5.2(伽利略),64位版本的可可
  • Eclipse的C/C++开发工具6.0.2.2
  • 的Mac OS X 10.6 1.3(雪豹)
  • GDB 6.3.5(苹果版附带的Xcode)

我也试过,因为作为7从源文件编译GDB 7.1。0它应该具有本机x86/x86_64达尔文支持。它建立良好并从命令行启动,但在尝试从Eclipse启动时遇到各种问题。这些似乎与苹果最近对任务调整机制如何工作以允许调试器连接到进程的变化有关。下面的错误是典型的这些:

Target request failed: Unable to find Mach task port for process-id 88283: 
(os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8)). 

在网络上的各种消息来源指出,苹果使用在GDB 6.3.5自己特殊的补丁程序来支持Mac OS X,但是这是一个非常老的代码库(2004) 。相反,其他Web源指出Eclipse DSF调试器框架需要仅在GDB 6.6(大约在2006年?)出现的GDB命令。

我已经遍布Eclipse相关的论坛,但没有发现这个问题的解决方案的迹象。看来Eclipse CDT开发团队几乎没有人使用Mac OS X,所以他们很少费心去测试他们在这个平台上的变化。除了上面的内容,我已经用开发者构建,Eclipse Helios 3.6 RC3(用于C/C++开发人员的IDE)重试了前面所述的所有测试(GDB版本6.3.5和7.1) ),其中包括CDT 7.0。遇到了所有相同的报告问题。 Mac OS X上的Eclipse CDT调试Snow Leopard仍然无法使用。

有人知道一些不同的和/或一个可靠的基于Eclipse的解决方案,我上面报告的情况?

+0

Joel,您可能想将其作为您自己的问题发布。为了我的目的,drhirsch建议仅使用标准发射器对我来说工作得很好。两个upvotes表明它可能也帮助了其他人,但基于本页的反馈,它似乎并没有帮助每个人。也许这个话题值得另外一个问题,像你这样的人还在经历这个问题。 – 2010-06-28 16:52:42

+0

@speedmetal - 感谢您的建议;我可能会这样做,但问题仍然存在 - 我一直在使用XCode。不过,我可能会首先尝试在其中一个Eclipse论坛上发帖。 – 2010-06-29 18:09:11

+0

我遇到同样的问题,您是否找到新的解决方案? – flow 2011-03-03 08:52:45

更新到Eclipse 3.6(Helios)的发行版并使用DSF/GDB创建启动器。为了将DSF/GDB框架的功能奇偶性提升到Eclipse 3.6(Helios)的可用级别,做了大量工作。使用Eclipse CDT 3.6 Helios,现在可以在OS X 10.5和10.6上正常进行调试。

+0

嗨迈克,你能告诉我们你正在使用哪种调试设置吗? – flow 2011-03-03 09:22:55

好的,目前,使用版本为7.1的/opt/local/bin/fsf-gdb似乎有诀窍!我没有广泛地测试它,但是我可以在非常不同的函数中使用断点,并且程序在调试时停在那里。

我在Ubuntu上遇到过多个Eclipse版本的类似问题。一个经常用于我的解决方案是使用版本6.6而不是最新版本。

您可以按照页面GDB on OS X Mavericks and Xcode 5的说明进行操作。