问题标签 [natvis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-c++ - 如何在 natvis 中显示模板参数类型名称?
我想为(C++)模板类扩展一个 natvis 可视化器。有没有办法显示第一个模板参数的类型名称?
boost::variant<int,bool> v; v=1;
展示1 (int)
或类似的东西会很棒
c++ - 犰狳的自定义 natvis 文件仅适用于 resharper
我为 Visual Studio (17.7.4) 创建了一个自定义可视化文件 (.natvis),以便能够查看 Armadillo 容器中的数据。
自定义可视化仅在将鼠标悬停在变量上并启用 ReSharper(2018.3.2) 时才有效。如果我打开 Locals 窗口或添加 Watch,则不会显示自定义可视化(启用或不启用 ReSharper)。
根据这篇文章 Is there a way to print an armadillo matrix or vector in Visual Studio Debug? natvis 文件正在工作。
arrays - Natvis 可视化器将成员指针类型视为数组
在 Visual Studio 2015 观察窗口中,可以通过添加逗号和数组长度来将指针视为数组,例如 d,10 将显示 10 个元素作为 double * d。
是否可以创建一个基于间接次数的 Natvis 类型条目,即。对于 d、d* 和 d** 以不同的方式?通常这些甚至是一种类型的成员,例如 struct s { double* d },但我想避免为所有这些类型编写自定义可视化工具。
这个问题被标记为 VS2015,但如果有的话,欢迎使用 vs2017 或 vs2019 的解决方案。
Edit1: 这是我正在寻找的一个简单示例:
- pv3 和 s.v3 应该像 v3 和
- ppm3 和 s.m3 应该像 m33 一样可视化
我知道将每个双指针都视为双 [3] 可能不是每个人都想要的,但在某些代码库中,比如我正在研究的代码库,这是 99% 的用例。
visual-studio - 将 natvis 与模板参数包一起使用
我有一个看起来大致像这样的数据结构
我正在尝试通过以下方式将其可视化
这是我到目前为止所拥有的:
显然,这扩展性很差。我只能复制粘贴每一列的代码并添加一个Condition
来启用或禁用它。我将得到支持的最大列数,之后可视化将停止显示列。
有什么方法可以更智能地显示这个吗?如果我可以使用类似$T$i
.
我真正想做的是这样的:
c++ - C++ 部分模板专业化和 Natvis
我正在尝试为部分专业化类型创建 Visual Studio 调试可视化工具。例如,假设我有这样的事情:
如果没有部分专业化,这将很容易:
有了完全的专业化,这也很容易:
但是我如何涵盖部分专业化?这甚至被支持吗?如果没有,是否有解决方法?
c++ - 使用 .natvis 文件在 VS Code 中可视化 C++ 对象
根据此链接,.natvis 文件可用于可视化本机对象。具体来说,我希望能够使用这个 .natvis 文件Eigen::Matrix
来检查对象。
但是,上面的链接不包含有关如何在 VS Code 中实际使用 .natvis 文件的任何信息。是否可以使用自定义 .natvis 文件?
这是我的launch.json文件供参考:
natvis - NatVis 显示枚举的子字符串
我们经常为我们的枚举使用前缀。
在 NatVis 中显示全名非常冗长。
是否可以删除枚举名称的前缀(又名返回枚举名称的子字符串)?
c++ - 在 natvis 中使用 std::type_info 进行强制转换
在我正在工作的代码库中,我们使用std::any
而不是void*
通过一些通用的非模板代码传递类。具体来说,我们使用 Visual Studio 2019、它的编译器和标准库。
为了可视化std::any
,微软已经给出了一个 natvis:
然而,这最终显示给我们(Small Object)
而不是std::string
我们存储在其中的内容。我已经设法用一些额外的行来扩展它以获取指向数据的指针:
但是,这会将数据显示为void*
,您必须手动将其转换为实际类型的指针std::string*
。但是,此std::any
实现/可视化还附带一个std::type_info
. (参见字段:类型)知道我们拥有哪种底层类型。
有没有办法使用它std::type_info
,以便(void*)
可以将其替换为实际存储类型的强制转换?
编辑: Visual Studio 为该类型提供的信息示例:{mydll.dll!class std::tuple<__int64,double,double,double> 'RTTI Type Descriptor'} {...}
当将地址显式转换为 std::type_info* 时,我可以_Data
在包含_DecoratedName
( .?AV?$tuple@_JNNN@std@@
) 和_UndecoratedName
( nullptr
) 的调试器中访问。不幸的是,我似乎不知道如何编写一个利用这些信息的演员表。
xml - 在实现 natvis 可视化工具时使用模式
为 AAA、BBB 等编写可视化工具时如何避免重复?我怀疑我需要在其中使用正则表达式和一个组,但我不知道确切的语法。X 在这里并不重要。