在使用CDB进行调试时,在Qt Creator中将指针显示为数组

9

编辑 2: 如果不可能,我将授予一个证明它的答案(我是指提供一些可靠的来源,支持声称它不可能)。


假设我有一个指向数组的指针,例如:

int arr[3];
int *p = new int[3];

我能看到所有的arr元素,但只能看到p的第一个元素。如何才能看到p的全部3个元素?
我尝试了来自View Array contents in QtCreatorView Array contents in Qt Creator debugger答案中的各种建议,但对我没用: enter image description here 我猜这是因为我使用的是CDB,而其他两个问题是针对GDB的。有没有可能在CDB上实现相同的结果?
编辑:我忘记提到,但p,3也不起作用。

尝试使用(int (&) [3])p - GreenScape
@GreenScape CDB记录了这个错误:eERROR: 无法添加监视项"watch.1"/"(int (&) [3])p": 无法添加符号'(int (&) [3])p':AddSymbol返回DEBUG_ANY_ID作为符号索引。 - sashoalm
3个回答

5

请添加到表达式求值器(菜单“窗口”→“视图”→“本地和表达式”)中。

(int(*)[3])p

在 Qt Creator 3.2.1 上运行良好。基于 Qt 5.3.2 (GCC 4.9.2,64位),于2016年5月10日17:53:15构建。


-1
你可以使用 *(p+1) 和 *(p+2) 来访问另外两个元素。 编辑: @sashoalm 你需要按照下面的方法做:
int *pindex[3];
for(int j=0; j< 3;j++){
    pindex[j]= p+j;
}

然后您就可以在调试器中看到所有的p。

希望这能帮到您。


1
这根本不是解决方案。我已经知道 p[1]p[2]。我需要它适用于数百个元素的数组。 - sashoalm

-2

查看 *p 的所有元素:

  1. 右键单击“本地”和“表达式”。
  2. 输入 *(p+1) 和 *(p+2)。

这样,您就可以看到所有三个元素了。


3
如果你要复制一个现有的答案,那么最好选择一个没有被踩过且不能令人满意地回答问题的答案。 - Retired Ninja
请不要抄袭他人的答案,在 Stack Exchange 社区做出一些新的贡献。 - user3667171

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