在Qt Creator调试器中查看数组内容

14

我正在Ubuntu上使用Qt。当我进行调试时,只能在Locals和Watchers中看到数组的第一个值。如何查看所有数组内容?

struct node
{
    int *keys;
    void **pointers;
    int num_keys;
    struct node *parent;
    int is_leaf;
    struct node *nextLevelNode;
};

它只在调试窗口中显示第一个键值。

5个回答

15
在表达式求值器中, 请尝试使用(int[10])(*myArray)代替(int[10])myArray 或者,使用*myArray@10代替myArray@10

8
在调试窗口中,它只显示第一个键值。我猜你指的是指针键,用 int *keys; 声明。
调试器不知道这是一个数组:它只知道这是一个指向 int 的指针。因此,它无法知道您希望它显示多少个值。
使用 Ubuntu 上的 Qt Creator 2.1.0 调试器,我发现以下代码可以让我看到所有 5 个值:
int array1[5];
array1[0] = 2;
array1[1] = 4;
array1[2] = 6;
array1[3] = 8;
array1[4] = 10;

与此代码相比,调试器仅显示第一个值,正如您所描述的那样。
int* array2 = new int[5];
array2[0] = 20;
array2[1] = 21;
array2[2] = 22;
array2[3] = 23;
array2[4] = 24;

顺便提一下:当然,为了避免内存泄漏,上述代码之后应该跟着这个:

delete[] array2;

稍后:这篇Qt Developer Network Forum Post说,你可以告诉调试器将指针显示为数组:
在“局部变量”和“监视器”中,选择指针条目的上下文菜单,选择“监视表达式”。这将在下面创建一个新的监视表达式。
然后,在“名称”列中双击条目,并添加“@10”以显示10个条目。
这听起来应该可以让你开始了。

7

只需右键单击变量,选择更改值显示格式并勾选100项的数组


1
在Mac上使用Qt,我成功的方法是:
  1. 为所需的变量添加表达式求值器(在调试器窗口上右键单击变量,然后选择“为“变量名称”添加表达式求值器”)

enter image description here

数组变量最初只显示为单个值。只需将“var”更改为“var[start...end]”,即可显示数组值。

enter image description here

enter image description here


1

有时候当前最受欢迎的答案无法显示二维数组。但是有一个解决方法。首先,将二维数组声明为一维数组,如下:

    int width = 3;
    int height = 4;
    int* array2D = new int [width*height];
    int x,y;
    for(x=width-1;x>-1;x--)
        for(y=height-1;y>-1;y--)
            array2D[x*height + y] = -1; // mark a breakpoint here!
    // add to expression evaluator: (int[3][4]) *array2D
    delete [] array2D;

然后将(int[3][4]) *array2D添加到表达式计算器中。不幸的是,您必须自行索引数组,但是您可以编写特殊用途的内联函数或使用另一种封装方法使其稍微更清晰些。

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