在visual studio 2015中使用.natvis文件自定义多维数组调试

customize multi-dimension array debugging in visual studio 2015 with .natvis file

本文关键字:自定义 文件 调试 数组 natvis studio visual 2015      更新时间:2023-10-16

我正在使用arma矩阵,我想看看调试期间的值。所以我添加了一个原生文件,如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="arma::Mat&lt;*&gt;">
    <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>

但是,它根本不起作用。

我越早意识到问题可能是

<Size> $i==0?n_rows:n_rows </Size>

所以我试着用下面的任何语句替换它,它工作

<size> $i==0?5:8 </Size>    
<size> $i==0?n_rows:8 </Size>
<Size> $i==0?5:n_cols</Size>

然而,如果我尝试以下任何语句,我还是一无所获

<size> $i==0?n_rows:n_cols </Size>
<size> $i==0?n_rows:n_rows </Size>

顺便说一下,我已经把Natvis诊断信息在选项中变成了"错误",但是错误列表中什么也没有。

感谢您的帮助

转换为整型为我解决了这个问题:

<Size> $i==0?(int)n_rows:(int)n_cols </Size>