如何编写一个非常简单的Visual Studio调试器可视化器?

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

在“观察窗口”中。

如果我从“可视化器定义”中删除所有空格,它似乎可以工作!即:thizz::izz::MyType{preview([$e._ptr,s])} - mackenir
你应该将其添加为答案并标记为已解决,这样下一个遇到此问题的人就可以更轻松地看到它。 - Alex
2个回答

1

为了获得更加多功能的查看器,请尝试切换使用这个:

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

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

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

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


0

我无法确定为什么我的autoexp.dat中原始的“代码”无法工作,但我发现当所有空格都被删除时,相同的代码可以工作。

然后我尝试重新添加空格,并发现保留第一行上的初始开括号是使定义正常工作所必需的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接