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

标签 c++ debugging multidimensional-array visual-studio-2015 natvis

我正在使用 arma Matrix,我想在调试期间查看值。 所以我添加了一个 natvis 文件如下:

<?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 诊断消息设置为“错误”,但错误列表中什么也没有。

感谢您的帮助

最佳答案

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

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

关于c++ - 使用.natvis 文件在visual studio 2015 中自定义多维数组调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171957/

相关文章:

c++ - 单元测试拷贝构造函数和赋值运算符

debugging - 有谁知道一个非常好的 Windows 客户端/服务器 tcp/udp 终端实用程序?

macos - OSX Catalina 上的 gdb 8.3.1 "not in executable format: file format not recognized"

java - 在java数组中使用字符串

c - 如何在 C 语言中声明一个大小为 500 x 500 的二维数组?

java - 使用 for 循环用两个一维数组填充二维数组

c++ - 在 OSX 10.8.2 中覆盖 `new` 和 `delete` 时崩溃

STL - 在 C++ 中,当键是带字符串的结构时,如何在带有仿函数的映射上使用 find_if?

c++ - Rcpp 中 if-else 语句的问题

objective-c - LLDB 摘要字符串 - 如何使它们在 Xcode session 中持久存在