Ada*_*eld 144 c c++ debugging visual-studio
如果您有一个静态分配的数组,Visual Studio调试器可以轻松显示所有数组元素.但是,如果您有一个动态分配并由指针指向的数组,那么当您单击+以展开它时,它将仅显示该数组的第一个元素.是否有一种简单的方法来告诉调试器,将这些数据显示为Foo类型和X大小的数组?
sho*_*osh 189
是的,简单.说你有
char *a = new char[10];
Run Code Online (Sandbox Code Playgroud)
在调试器中写入:
a,10
Run Code Online (Sandbox Code Playgroud)
会向你显示内容,就好像它是一个数组.
Ria*_*zvi 32
有两种方法可以查看数组m4x4中的数据:
float m4x4[16]={
1.f,0.f,0.f,0.f,
0.f,2.f,0.f,0.f,
0.f,0.f,3.f,0.f,
0.f,0.f,0.f,4.f
};
Run Code Online (Sandbox Code Playgroud)
一种方法是使用Watch窗口(Debug/Windows/Watch).添加watch =
m4x4,16
Run Code Online (Sandbox Code Playgroud)
这会在列表中显示数据:

另一种方法是使用Memory窗口(Debug/Windows/Memory).指定内存起始地址=
m4x4
Run Code Online (Sandbox Code Playgroud)
这会在表格中显示数据,这对于二维和三维矩阵更好:

右键单击"内存"窗口以确定二进制数据的可视化方式.选择仅限于整数,浮点数和一些文本编码.
Gen*_*Liu 10
再访:
我们假设你有一个指针:
double ** a; // assume 5*10
Run Code Online (Sandbox Code Playgroud)
那么你可以在下面的Visual Studio调试手表中写下:
(double(*)[10]) a[0],5
Run Code Online (Sandbox Code Playgroud)
将它转换成如下所示的数组,您可以一次查看所有内容.
double[5][10] a;
Run Code Online (Sandbox Code Playgroud)
MSDN中指定了另一种执行此操作的方法。
简而言之,您可以将字符数组显示为多种类型的字符串。如果您有一个数组声明为:
char *a = new char[10];
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令在监视窗口中将其打印为 unicode 字符串:
a,su
Run Code Online (Sandbox Code Playgroud)
请参阅 MSDN 页面上的表格,了解所有可能的不同转换,因为转换的数量相当多。许多不同的字符串变体、打印数组中单个项目的变体等。
小智 5
对于,
int **a; //row x col
Run Code Online (Sandbox Code Playgroud)
加上这个观看
(int(**)[col])a,row
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53583 次 |
| 最近记录: |