Eclipse-C++-调试:查看数组的内容

28

是否可以查看动态分配数组的内容,例如:

int *array = new int[dimension];

我只看到指针的值。

编辑:刚刚发现了“显示为数组”的选项,但我总是需要手动输入数组的大小。是否可以自动获取它?

4个回答

47

在Eclipse中,若想查看动态分配数组的内容(对于其他遇到这个问题的人),请按照以下步骤:

  1. 确保你在调试模式下;
  2. 寻找“变量”窗口。如果没有看到,点击“窗口” > “显示视图” > “变量”;
  3. 右键点击数组变量;
  4. 点击“显示为数组…”;
  5. Eclipse不知道你的数组大小。因此,在起始索引处输入0,并选择动态分配给长度的元素数。当然,您可以使用这些值来显示您所喜欢的数组任意部分。

choose display as array in eclipse

而处理指针时,请注意在悬停在指针本身(箭头图标)上时单击“显示为数组”,而不是首先在它所引用的值上单击(例如在图片中的(x)= counts位置)。 否则,您将看到对话框窗口中显示的错误类型如下:

Failed to execute MI command:
-data-evaluate-expression [specifics]
Error message from debugger back end:
Cannot access memory at address 0x[address of older *counts]

该窗口位于列表下方(从上面的“名称:”开始)。


很棒的答案!但是如果数组是二维的,比如int samples[10][dimension];?有没有一种方法可以将这样的数组可视化呢? - Jianyu
@Jianyu 请尝试使用(*samples@10@5)创建一个10x5的二维数组。这对我有效。 - Michael Ansolis

14

如果你想避免反复进行“显示为数组”的操作,打开“表达式”选项卡并添加表达式(*array@dimension)。不确定为什么需要括号。没有它们,你会得到一个错误。


8
在“表达式”选项卡中,如果执行cleong指出的步骤并输入(*array@dimension),那么您可以动态设置要显示的数组大小。这甚至适用于需要另一个表达式来获取它的情况。
因此,假设您有一个变量x,其中包含您的数组大小,您可以输入(*array@x),它将使用x的内容作为维度。
"x"还可以是结构内容或指针引用等内容。
(*array@SomePtrToStruct->x) 

运作得很好。

3
我发现了“作为数组显示”的选项,但我总是需要手动输入数组的大小。是否可能自动完成?
很好。在C或C++一般情况下无法自动获取数组的大小,尽管在某些简单情况下可以实现(但可能尚未实现 - 引用雷蒙德·陈的话,要创建新功能,必须先实现它们)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接