提问者:小点点

Eclipse(kepler)不显示结构成员


我对eclipse相当陌生,因此对其他人来说似乎显而易见的事情对我来说是一个谜,当然我对此感到抱歉。在Eclipse下构建项目时IDE为C/C开发人员(版本:Kepler Service Release 1,Build id:20130919-0819 on Win 7 64bit)和MinGW工具链,调试器变量视图不想向我展示一些东西。它始于我在结构中定义结构,如下所示:

typedef     struct
{
    int i1;
    int i2;
}ts;


typedef struct
{
    int i;
    ts  s1;
    ts  s2;
}t_mystruct;

我在调试器的变量视图中得到了这个:

而不是:

到目前为止,我可以做相对多的事情(多亏了谷歌和stackoverflow)来解决eclipse给我带来的所有问题,但是这个似乎有点难,甚至谷歌也不会对此说太多。所以这要么是新的,要么是显而易见的,只有像我这样的eclipse新手才能在那里遇到麻烦。

第二个问题是为什么会有一个空的空间,我想在那里看到s1结构的成员?它似乎总是倾向于我打开查看的第一个结构,而第二个总是空白空间——这在任何可能的方式上都不方便:(内存视图也是如此——如果它是一个嵌套结构成员,由于错误/未知地址,它不能打开内存视图。

我确实认为,调试器应该对这些结构有某种解析问题,但不幸的是,我不知道先拉哪个线程。

链接到完整的项目代码。


共3个答案

匿名用户

多亏了我的同事,我发现使用标准创建过程启动器而不是GDB(DSF)给了我一个很好的bug免费(也许几乎)调试会话的机会。

只要我不知道为什么要使用另一个发射器,我就可以忍受。

匿名用户

这不是完整的答案,但一些测试结果,希望能有所帮助:

我用默认工具链(LinuxGCC)在Linux(Ubuntu)上的开普勒SR1下尝试了你的例子,它似乎在那里工作得很好:Linux上的扩展变量

但是在Windows 8上的Kepler SR1下,我有和你一样的问题:“没有成员”和“空空间”。由于某种原因,它试图评估错误的表达式((mydat). i2而不是(mydat).s2.i2)并从gdb接收相应的答案(“没有名为i2的成员”)。

这是一个在控制台中使用gdb进行的小测试,具有预期结果:gdb控制台测试(参见最后2个命令)

它看起来像是Windows版本的Eclipse或其他东西中的UI错误。

匿名用户

我可以确认Sangesi提供的答案,使用标准创建过程启动器而不是GDB(DSF)对我也有效。(我不能投票或评论他的答案,因为我还没有足够的信誉点。)

在Windows 7、CDT v8.0.2、Cygwin、gdb v7.6.50上使用Eclipse Indigo进行了验证。