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

时间:2011-09-23 19:25:51

标签: c++ qt qt-creator

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

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

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

5 个答案:

答案 0 :(得分:13)

在表达式评估器中, 请尝试使用(int[10])(*myArray)代替(int[10])myArray

或者,*myArray@10代替myArray@10

答案 1 :(得分: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表示您可以告诉调试器将指针显示为数组:

  

在Locals and Watchers中,指针条目的上下文菜单中,选择“Watch Expression”。这会在下面创建一个新观看的表达式。

     

在那里,双击“名称”列中的条目,然后添加“@ 10”以显示10个条目。

这听起来应该让你去。

答案 2 :(得分:3)

只需右键点击您的变量,然后选择Change Value Display Format并检查Array of 100 items

答案 3 :(得分:1)

在Mac版Qt中,对我有用的是:

  1. 为所需变量添加一个表达式评估器(在调试器窗口上右键单击该变量,然后单击“为“此处的变量名”添加表达式评估器””

enter image description here

  1. 数组变量最初显示为单个值。只需将“ var”更改为“ var [start ... end],然后出现数组值。

enter image description here

enter image description here

答案 4 :(得分: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添加到表达式求值器。不幸的是,您必须为自己的数组建立索引,但是您可以编写一个特殊用途的内联函数或使用其他封装方法使其变得更整洁。