即使是autoexp.dat中[Visualization]最简单的规则也行不通

时间:2012-03-04 20:27:54

标签: visual-studio visual-studio-2008 watch visualizer debuggervisualizer

我试图以比使用文本可视化器的数组数组更可读的方式可视化我的矩阵类。然而,即使是最简单的规则也行不通。这是我对autoexp.dat的规则:

; Custom visualizers for RTSG data types.
RTSG::Matrix44<float> {
  preview(
    #(
      "foo", "bar"
    )
  )
  stringview(
    #(
      "foo", "bar"
    )
  )
}

这是类定义:

template <class T> class Matrix44
{
public:
    T       x[4][4];

    // omitted methods, no other data members are declared
}

然而,VS仍会在观察窗口中显示如下:

{x=0x0283e530 }

并且没有放大镜来启动文本可视化工具。我做错了什么?

操作系统:Win 7 64位,VS:2008 v3.5 SP1

更新:我还注意到VS并不总是对autoexp.dat中的任何更改做出反应,但会在延迟或调试器重启多次后将其考虑在内。如大多数地方所述,只需要重新启动一次调试器,并且每次启动时调试器都会读取此文件时应考虑更改。在我的机器上似乎不是这种情况。

2 个答案:

答案 0 :(得分:3)

这是我的4x4矩阵类的最终可视化器:

RTSG::Matrix44<*> {
  stringview(
    #(
      "'",
      [$e.x[0][0]], ['\t'], [$e.x[0][1]], ['\t'], [$e.x[0][2]], ['\t'], [$e.x[0][3]], ['\n'],
      [$e.x[1][0]], ['\t'], [$e.x[1][1]], ['\t'], [$e.x[1][2]], ['\t'], [$e.x[1][3]], ['\n'],
      [$e.x[2][0]], ['\t'], [$e.x[2][1]], ['\t'], [$e.x[2][2]], ['\t'], [$e.x[2][3]], ['\n'],
      [$e.x[3][0]], ['\t'], [$e.x[3][1]], ['\t'], [$e.x[3][2]], ['\t'], [$e.x[3][3]],
      "'"
    )
  )
}

与文本可视化工具一起使用。生成许多​​单引号,但仍然优于列中的16个值。该矩阵使用列主要存储,行主要的翻转索引。

答案 1 :(得分:1)

您是否尝试过更通用的规则:

RTSG::Matrix44<*> {
  preview(
    #(
      "foo", "bar"
    )
  )
  stringview(
    #(
      "foo", "bar"
    )
  )
}

尝试将它也放在autoexp.dat文件的开头。

如果这个不起作用,你可以有效地说最简单的规则不起作用:p 干杯