【问题标题】:How to see all elements of a two dimensional array in Visual Studio 2010?如何在 Visual Studio 2010 中查看二维数组的所有元素?
【发布时间】:2012-05-19 04:30:12
【问题描述】:

我正在 Visual Studio 2010 中调试我的 c++ 代码,并希望查看我的数组的内容,比如 Q,它是 17x17。当我插入断点并尝试调试时,我只看到变量“Q”。当我将它带到“Watch”屏幕并将其重命名为“Q,17”时,我看到了一层。

但我也想看看另一个维度。我不能写“Q,17,17”。什么是正确的命令?

谢谢你...

【问题讨论】:

    标签: c++ visual-studio-2010 debugging


    【解决方案1】:

    你不能,至少不能直接。

    你可以做的是把&array[0][0]放在内存窗口中,然后调整它的大小,使列数与array的一行数据相匹配。

    或者,您可以将array[0],17 放在监视窗口中,然后对array[1],17 等重复此操作。

    也许不是您要寻找的答案,而是监视窗口,虽然功能强大,但无法满足您的需求。

    【讨论】:

    • 谢谢,对我来说已经足够了。
    【解决方案2】:

    如果您想以更图形化的方式查看以 2D 组织的值,您可以尝试Array Visualizer extension。它适用于小型多维数组。

    这是一个免费的开源扩展,可以通过 MarketPlace 下载。它旨在在调试应用程序时显示数组。 Visual Studio 2010、2012、2013 和 2015 有版本,可惜好像没有更新到 2017。

    【讨论】:

    • Array Visualizer 扩展无法与 C/C++ 一起使用。有什么解决办法吗?
    【解决方案3】:

    建议的解决方案仅适用于一维数组。但是每行具有固定大小的二维数组(在数学中将第一维视为一行)可以分配为一维数组,如下所示:

    int ** a = new int * [n];
    int * b = new int [n*n];
    
    a[0] = &b[0];
    for (int i=1; i<n; i++)
    {
        a[i] = a[i-1]+n;
    }
    int count=0;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            a[i][j]= rgen.randInt(-10,10);
        }
    }
    

    然后,您可以在代码中使用 a 作为矩阵,如果您的矩阵是 10 x 10,则使用 b,100 进行可视化。

    【讨论】:

      【解决方案4】:

      将数组 Q 放到全局作用域,你可以看到它的所有元素(如果是本地数组,你可以复制到全局数组并在全局数组上操作):

      int Q[17][17];
      int main(){
          int x=1, y=1, z;
      }
      

      经过调试,算法验证良好,就可以随意使用本地数组了

      【讨论】:

        【解决方案5】:

        可以直接查看静态分配的全局内存或局部变量

        我没有找到在 VS2010 中查看动态分配的二维数组的方法(只有一维)。 VS2019可以, 通过

        double ** a;
        a = (double**)malloc(5 * sizeof(double*));
        a[0]=(double*)malloc(10 * sizeof(double));
        ...
        

        (double(*)[10]) a[0],5(在观察窗口中添加)

        这里的这个也可以 (double(**)[10])a,5

        【讨论】:

          猜你喜欢
          • 2023-03-11
          • 1970-01-01
          • 2022-01-25
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 1970-01-01
          • 2012-07-04
          • 2019-07-04
          相关资源
          最近更新 更多