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

6ojccjat  于 2023-03-25  发布在  其他
关注(0)|答案(5)|浏览(324)

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

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

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

mbzjlibv

mbzjlibv1#

在表达式计算器中,尝试(int[10])(*myArray)而不是(int[10])myArray
或者,使用*myArray@10代替myArray@10

hgb9j2n6

hgb9j2n62#

它只显示调试窗口中的第一个键值
我假设您指的是指针键,用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开发者网络论坛的帖子说,你可以告诉调试器将指针显示为数组:

在Locals and Watchers中,在指针条目的上下文菜单中,选择“Watch Expression”。这将在下面创建一个新的被监视的表达式。
在那里,双击“名称”列中的条目,并添加“@10”以显示10个条目。
这听起来像它应该让你去。

h7appiyu

h7appiyu3#

右键单击变量,选择Change Value Display Format并选中Array of 100 items

3j86kqsm

3j86kqsm4#

在Qt for Mac中,对我有效的是:
1.为所需变量添加表达式计算器(在调试器窗口中右键单击该变量,然后单击“在此处为“var name”添加表达式计算器”)

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

cvxl0en2

cvxl0en25#

currently top voted answer有时无法显示二维数组。有一个解决方案。首先,像这样将二维数组声明为一维数组:

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添加到表达式求值器中。不幸的是,您必须自己索引数组,但您可以编写一个特殊用途的内联函数或使用其他封装方法使其稍微更清晰。

相关问题