【问题标题】:Eclipse-C++-Debugging: see content of an ArrayEclipse-C++-调试:查看数组的内容
【发布时间】:2009-12-01 08:07:53
【问题描述】:

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

int *array = new int[dimension];

我只看到指针的值。

编辑:刚刚找到“显示为数组”选项,但我总是必须手动输入数组的大小。是否有可能自动获得?

【问题讨论】:

    标签: c++ debugging eclipse-cdt


    【解决方案1】:

    在 Eclipse 中,为了查看动态分配数组的内容(对于遇到此问题的任何其他人),

    1. 确保您处于调试视角;
    2. 查找“变量”窗口。如果看不到,点击“窗口”>“显示视图”>“变量”;
    3. 右键单击数组变量;
    4. 点击“显示为数组...”;
    5. Eclipse 不知道您的阵列有多大。因此,为起始索引键入 0 并选择为长度动态分配的元素数。当然,您可以使用这些值来显示您喜欢的数组的任何部分。

    并且,在处理指针时,请注意在将鼠标悬停在指针本身(箭头图标)上时单击“显示为数组”,而不是在最初引用的值上(例如在 (x)= counts 的位置)图片)。 否则你会得到一个类型的错误

    执行 MI 命令失败:
    -data-evaluate-expression [细节]
    来自调试器后端的错误消息:
    无法访问地址 0x[旧地址*counts] 处的内存

    显示在列表下方的对话窗口中(在上面的屏幕截图中以“名称:”开头)。

    【讨论】:

    • 很好的答案!但是如果数组是二维的,例如int samples[10][dimension];?有没有办法可视化这样的数组?
    【解决方案2】:

    如果您想避免重复执行“显示为数组”,请打开“表达式”选项卡并添加表达式(*array@dimension)。不知道为什么括号是必要的。没有它们你会得到一个错误。

    【讨论】:

      【解决方案3】:

      在“表达式”选项卡中,如果您按照 cleong 的说明输入 (*array@dimension),那么您也可以动态设置要显示的数组的大小。当您需要另一个表达式来获取它时,这甚至可以工作。

      假设您有一个包含数组大小的变量 x,您输入 (*array@x),它将使用 x 的内容作为维度。

      "x" 也可以是结构内容或指针取消引用等 - 即

      (*array@SomePtrToStruct->x) 
      

      工作得很好。

      【讨论】:

        【解决方案4】:

        刚刚找到“显示为数组”选项,但我总是要手动输入数组的大小。是否有可能自动获得?

        这很好。我会坚持下去。在 C 或 C++ 的一般情况下,自动获取数组是不可能的,尽管在某些微不足道的情况下肯定可以做到(但可能还没有——功能需要在它们存在之前实现,套用 Raymond Chen 的话)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-24
          • 1970-01-01
          • 1970-01-01
          • 2013-01-29
          • 1970-01-01
          • 2015-02-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多