4

我正在尝试为字符串类型编写基于“autoexp.dat”的可视化工具。我已经缩减了尝试为包含以空字符结尾的字符串字段的非常简单的测试类型编写可视化工具的雄心:

namespace thizz { namespace izz {
        class MyType {
            const char* _ptr;
        public:
            MyType(const char* ptr) : _ptr(ptr) {}
        };
    }
}

这是我对可视化器的尝试,但它对 Visual Studio (2010) 如何显示这种类型的实例没有影响:

thizz::izz::MyType
{
 preview ([$e._ptr,s])
}

(位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\autoexp.dat中 [Visualizers] 部分的顶部)。

观察这种类型的一个实例:

thizz::izz::MyType t("testing testing");

只是显示

t | {_ptr=0x0f56a6fc "testing testing" } | thizz::izz::MyType

在监视窗口中。

4

2 回答 2

1

要获得更多功能的查看器,请尝试更改为使用它:

thizz::izz::MyType {
preview ( #( [$e._ptr,s] ) )
stringview ( #( [$e._ptr,sb] ) )
}

这也将给出放大镜图标,如果您有更长的字符串,它将打开一个更大的文本视图窗口。它还将为您提供呈现为 HTML 或 XML 的选项。

请注意,除了对空格敏感的文件格式外,我还发现您不能在字符串中使用冒号,否则会产生解析错误。

调试器可视化器非常强大,尽管语法可能非常令人困惑。作为一般建议,我建议首先在本[AutoExpand]节中创建一些条目以总结您最感兴趣的数据类型,然后如果您有自定义容器,然后复制和调整示例vectorlist等,这将为您带来最大的回报为您的时间投资。

于 2012-04-26T14:54:18.370 回答
0

我无法给出为什么我在 autoexp.dat 中的原始“代码”不起作用的明确原因,但我发现删除所有空格后相同的代码起作用。

然后我尝试重新添加空格,并发现在第一行保留初始大括号对于保持定义正常工作是必要的。

于 2012-04-26T10:49:47.247 回答