我想知道是否有任何方法可以在Visual Studio的调试部分显示向量/矩阵条目值(特别是VS2012)。
这个问题与发布于:
的问题非常相似Is there a way to print an Armadillo matrix in gdb?
然而,我没有设法弄清楚这种方法是否也适用于VS.
感谢。
答案 0 :(得分:4)
这个.natvis
XML代码在visual studio 2013中运行良好。我在visual studio 2013中添加了@Claes Rolen XML,这对我来说效果不佳。
诀窍是使用<IndexListItems>
来显示犰狳矩阵
声明并初始化代码
mat tMat(3, 3);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
tMat(i, j) = i + j;
}
.Natvis文件
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="arma::Col<*>">
<DisplayString>{{ Size = {n_elem} }}</DisplayString>
<Expand>
<Item Name="[size]">n_elem</Item>
<ArrayItems>
<Size>n_elem </Size>
<ValuePointer>mem</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="arma::Mat<*>">
<DisplayString>{{ {n_rows} x {n_cols} = {n_elem} }}</DisplayString>
<Expand>
<IndexListItems>
<Size>n_cols</Size>
<ValueNode >
mem+($i*n_rows),[n_rows]
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="arma::subview_col<*>">
<DisplayString>{{ {n_rows} }}</DisplayString>
<Expand>
<ArrayItems>
<Size>n_rows</Size>
<ValuePointer>colmem</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
调试器中的结果图像:
答案 1 :(得分:1)
您可以在Visual Studio中使用可视化工具,不知道从哪个版本,但在Visual Studio 2015中,您可以向项目添加mousemove.zoomRect ?
文件。
arma.natvis:
.natvis
这将显示基本<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="arma::Col<*>">
<DisplayString>{{ Size = {n_elem} }}</DisplayString>
<Expand>
<Item Name="[size]">n_elem</Item>
<ArrayItems>
<Size>n_elem </Size>
<ValuePointer>mem</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="arma::Mat<*>">
<DisplayString>{{ Size = {n_rows} x {n_cols} }}</DisplayString>
<Expand>
<Item Name="[size]">n_elem</Item>
<ArrayItems>
<Direction>Backward</Direction>
<Rank>2</Rank>
<Size>$i==0 ? n_rows : n_cols</Size>
<ValuePointer>mem</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
类型的可读数据。