我对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结构的成员?它似乎总是倾向于我打开查看的第一个结构,而第二个总是空白空间——这在任何可能的方式上都不方便:(内存视图也是如此——如果它是一个嵌套结构成员,由于错误/未知地址,它不能打开内存视图。
我确实认为,调试器应该对这些结构有某种解析问题,但不幸的是,我不知道先拉哪个线程。
链接到完整的项目代码。
多亏了我的同事,我发现使用标准创建过程启动器而不是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进行了验证。