矩阵显示行
Matrix display row wise
我知道默认的 ArrayItems-Tag 可以处理矩阵,但我发现结果不够。
给出这个例子
#include <cstdlib>
#include <cstdio>
struct matrix {
int height;
int width;
double* values;
};
int main() {
double* values = (double*)malloc(5 * 2 * sizeof(double));
for (int i = 0; i < 10; ++i) values[i] = i * 2;
matrix m = { 5, 2, values };
return 0;
}
有了这个natvis
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="matrix">
<DisplayString>{{Shape [{height} x {width}]}}</DisplayString>
<Expand>
<CustomListItems>
<Variable Name="i" InitialValue="0" />
<Loop>
<Break Condition="i == height" />
<Item>(values + (i * width)), 2</Item>
<Exec>i++</Exec>
</Loop>
</CustomListItems>
</Expand>
</Type>
</AutoVisualizer>
结果是这个输出,几乎是完美的。
- 我希望地址不要显示
- 我希望我可以为元素提供自定义格式说明符(类似于 %.2f)
但我在 natvis 中作弊了。我写了 <Item>(values + (i * width)), 2</Item>
2 是行的宽度。但是,如果我写 width
而不是 2,它会输出 2 而不是行。它显然打印了 width
的值,这没有帮助。
有人知道我如何使这些行的大小可变吗?
尝试 [width] nag
:
<Item>(values + (i * width)), [width] nag</Item>
[size]
——扩展固定大小的数组,
na
- "no address" - 隐藏地址,
g
- 为了更好地查看浮点数据。
我知道默认的 ArrayItems-Tag 可以处理矩阵,但我发现结果不够。
给出这个例子
#include <cstdlib>
#include <cstdio>
struct matrix {
int height;
int width;
double* values;
};
int main() {
double* values = (double*)malloc(5 * 2 * sizeof(double));
for (int i = 0; i < 10; ++i) values[i] = i * 2;
matrix m = { 5, 2, values };
return 0;
}
有了这个natvis
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="matrix">
<DisplayString>{{Shape [{height} x {width}]}}</DisplayString>
<Expand>
<CustomListItems>
<Variable Name="i" InitialValue="0" />
<Loop>
<Break Condition="i == height" />
<Item>(values + (i * width)), 2</Item>
<Exec>i++</Exec>
</Loop>
</CustomListItems>
</Expand>
</Type>
</AutoVisualizer>
结果是这个输出,几乎是完美的。
- 我希望地址不要显示
- 我希望我可以为元素提供自定义格式说明符(类似于 %.2f)
但我在 natvis 中作弊了。我写了 <Item>(values + (i * width)), 2</Item>
2 是行的宽度。但是,如果我写 width
而不是 2,它会输出 2 而不是行。它显然打印了 width
的值,这没有帮助。
有人知道我如何使这些行的大小可变吗?
尝试 [width] nag
:
<Item>(values + (i * width)), [width] nag</Item>
[size]
——扩展固定大小的数组,na
- "no address" - 隐藏地址,g
- 为了更好地查看浮点数据。