如何在调试模式下查看动态分配内存的值?

dvi*_*vir 5 c eclipse netbeans

我正在使用eclipse和netbeans for c,我想查看在调试时在内存中动态分配的变量值(在eclipsenetbeans中).

由于某种原因,我只能看到指针本身的值,它是第一个项目.

用以下代码说明:

int foo[10];
Run Code Online (Sandbox Code Playgroud)

我可以稍后检查整个数组的值(调试时).例如,我可以在watch窗口中查看foo [7]的值.

但是这个代码:

int *bar = malloc(10*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我只能检查bar指向的位置,以及bar[0](但不是其他值)的值.

我怎样才能观察阵列的所有值?


更新:问题在eclipse和netbeans中都得到了解决.

在eclipse中:右键单击Variables窗口中的所需变量- >选择Display As Array - >填写起始索引和数组长度.

在netbeans中:在Watches窗口中添加一个具有以下格式的新手表:

*((bar)+0)@10
Run Code Online (Sandbox Code Playgroud)

这里bar应该是指针的名字, 0应该是你开始索引,并10应其长度

如果我可以添加个人的东西:这是我在stackoverflow上的第一个消息.希望你觉得它有用.

Som*_*ude 2

*(bar + 1)我不知道它是否适用于 Eclipse 或 Netbeans,但您可以尝试为第二个“条目”添加监视。bar但是,除非调试器允许您将其类型转换为数组,否则您可能无法将其用作数组((int[])bar例如,我不知道它是否可以在真正的C中工作)。

  • 尝试添加 `(int[100])foo` 的监视,将其变成“wathces”窗口中的 100 个条目数组,但它的值不正确......我想我必须以另一种方式检查它们。不管怎样,谢谢你! (2认同)