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

nik*_*hil 14 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;
};
Run Code Online (Sandbox Code Playgroud)

它仅显示调试窗口中的第一个键值.

小智 13

在Expression评估器中,尝试(int[10])(*myArray)而不是(int[10])myArray

或者,*myArray@10而不是myArray@10


Cla*_*rae 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;
Run Code Online (Sandbox Code Playgroud)

而使用此代码,调试器仅显示第一个值,与您描述的完全一样.

int* array2 = new int[5];
array2[0] = 20;
array2[1] = 21;
array2[2] = 22;
array2[3] = 23;
array2[4] = 24;
Run Code Online (Sandbox Code Playgroud)

旁白:当然,上面的代码会跟着这个,以避免泄漏内存:

delete[] array2;
Run Code Online (Sandbox Code Playgroud)

后来:这个Qt开发者网络论坛帖子说你可以告诉调试器将指针显示为数组:

在Locals and Watchers中,指针条目的上下文菜单中,选择"Watch Expression".这将在下面创建一个新观察的表达式.

在那里,双击"名称"列中的条目,并添加"@ 10"以显示10个条目.

这听起来应该让你去.


Mat*_*u H 5

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