问题标签 [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.

0 投票
2 回答
1310 浏览

visual-c++ - 如何在 natvis 中显示模板参数类型名称?

我想为(C++)模板类扩展一个 natvis 可视化器。有没有办法显示第一个模板参数的类型名称?

boost::variant<int,bool> v; v=1;展示1 (int)或类似的东西会很棒

0 投票
0 回答
594 浏览

c++ - Eigen::Map 的 Eigen.natvis 添加

我正在尝试添加到 Eigen.natvis,在此处找到,以便Eigen::Map也可以在 Visual Studio 调试器中读取对象,在此处找到 Eigen

这是我放在一起的:

我面临的主要问题是这条线(通过反复试验发现):

相反,如果我使用以下任何一种,那么它可以工作,但当然不正确(具体数字常量无关紧要):

我错过了什么?我怎样才能让它正确运行?此外, natvis forEigen::Matrix做了类似的事情,并且确实有效。

0 投票
1 回答
186 浏览

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 文件正在工作。

另一个相关链接。使用 .natvis 文件在 Visual Studio 2015 中自定义多维数组调试

0 投票
2 回答
929 浏览

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% 的用例。

丑陋的带注释的 vc 监视窗口快照

0 投票
1 回答
553 浏览

visual-studio - 将 natvis 与模板参数包一起使用

我有一个看起来大致像这样的数据结构

我正在尝试通过以下方式将其可视化

这是我到目前为止所拥有的:

显然,这扩展性很差。我只能复制粘贴每一列的代码并添加一个Condition来启用或禁用它。我将得到支持的最大列数,之后可视化将停止显示列。

有什么方法可以更智能地显示这个吗?如果我可以使用类似$T$i.

我真正想做的是这样的:

0 投票
1 回答
372 浏览

c++ - C++ 部分模板专业化和 Natvis

我正在尝试为部分专业化类型创建 Visual Studio 调试可视化工具。例如,假设我有这样的事情:

如果没有部分专业化,这将很容易:

有了完全的专业化,这也很容易:

但是我如何涵盖部分专业化?这甚至被支持吗?如果没有,是否有解决方法?

0 投票
1 回答
2926 浏览

c++ - 使用 .natvis 文件在 VS Code 中可视化 C++ 对象

根据此链接,.natvis 文件可用于可视化本机对象。具体来说,我希望能够使用这个 .natvis 文件Eigen::Matrix来检查对象。

但是,上面的链接不包含有关如何在 VS Code 中实际使用 .natvis 文件的任何信息。是否可以使用自定义 .natvis 文件?

这是我的launch.json文件供参考:

0 投票
2 回答
413 浏览

natvis - NatVis 显示枚举的子字符串

我们经常为我们的枚举使用前缀。

在 NatVis 中显示全名非常冗长。

是否可以删除枚举名称的前缀(又名返回枚举名称的子字符串)?

0 投票
2 回答
1161 浏览

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) 的调试器中访问。不幸的是,我似乎不知道如何编写一个利用这些信息的演员表。

0 投票
0 回答
81 浏览

xml - 在实现 natvis 可视化工具时使用模式

为 AAA、BBB 等编写可视化工具时如何避免重复?我怀疑我需要在其中使用正则表达式和一个组,但我不知道确切的语法。X 在这里并不重要。