【问题标题】:Visual Studio .natvis file, array of class visualizationVisual Studio .natvis 文件,类可视化数组
【发布时间】:2015-01-09 01:30:00
【问题描述】:

我的类基本上如下所示,我想在 Visual Debugger 中使其更具可读性:

template <typename T, precision P = defaultp>
struct tvec4
{
    T x, y, z, w;
};

template <typename T, precision P = defaultp>
struct tmat4x4
{
    typedef tvec4<T, P> col_type;

private:
    col_type value[4];
};

这是矢量的 natvis 文件的样子:

<Type Name="glm::tvec4&lt;*&gt;">
    <DisplayString>{x}, {y}, {z}, {w}</DisplayString>
    <Expand>
        <Item Name="x">x</Item>
        <Item Name="y">y</Item>
        <Item Name="z">z</Item>
        <Item Name="w">w</Item>
    </Expand>
</Type>

哪个工作正常。但是,对于矩阵类,我无法让任何工作。

尝试1:

<Type Name="glm::tmat4&lt;*&gt;">
    <DisplayString>{{value[0]}, {value[1]}, {value[2]}, {value[3]}}</DisplayString>
    <Expand>
        <Item Name="[0]">value[0]</Item>
        <Item Name="[1]">value[1]</Item>
        <Item Name="[2]">value[2]</Item>
        <Item Name="[3]">value[3]</Item>
    </Expand>
</Type>

尝试2:

<Type Name="glm::tmat4&lt;*&gt;">
    <DisplayString>{size = {4 x 4}}</DisplayString>
    <Expand>
        <Item Name="[size]">4</Item>
        <Item Name="[capacity]">4</Item>
        <ArrayItems>
            <Size>4</Size>
            <ValuePointer>value</ValuePointer>
        </ArrayItems>
    </Expand>
</Type>

知道我做错了什么吗?

谢谢! 克里斯托夫

【问题讨论】:

    标签: visual-studio natvis


    【解决方案1】:

    您应该尝试打开诊断。这里解释: https://code.msdn.microsoft.com/Writing-type-visualizers-2eae77a2

    在下面创建注册表项:

    [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\Debugger]
       "EnableNatvisDiagnostics"=dword:00000001
    

    【讨论】:

      【解决方案2】:

      这是一个老问题,所以我假设你现在有一个解决方案,但以防万一其他人有类似的问题,这取决于你在描述中使用了花括号:

      <DisplayString>{{value[0]}, {value[1]}, {value[2]}, {value[3]}}</DisplayString>
      

      单大括号 {} 表示内容应该由调试器解释,但如果您真的希望大括号作为描述的一部分,那么您需要使用双大括号:

      {{Text here {variable_name_here}}}
      

      所以在你的情况下,这将是正确的显示字符串:

      <DisplayString>{{{value[0]}, {value[1]}, {value[2]}, {value[3]}}}</DisplayString>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 2013-07-22
        • 2017-03-03
        • 2016-07-09
        • 2012-11-24
        • 2020-02-25
        相关资源
        最近更新 更多