繁体   English   中英

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

[英]How do I write a very simple Visual Studio debugger visualizer?

我正在尝试为字符串类型编写一个基于'autoexp.dat'的可视化工具。 我已经缩减了我的野心,试图为一个包含以null结尾的字符串字段的非常简单的测试类型编写可视化工具:

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

在Watch窗口中。

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

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

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

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

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

我无法给出一个明确的原因,为什么我在autoexp.dat中的原始'代码'不起作用,但我发现当删除所有空格时,相同的代码都有效。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM