问题标签 [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 投票
3 回答
1991 浏览

c++ - 使用 natvis 的循环双链表可视化

我想为双链表编写一个natvis 可视化工具。该列表没有存储计数节点,并且简单的方法效果不佳,因为扩展永远不会停止(next 永远不会为空,列表的最后一项指向列表根)。

我希望我能够添加一个 Condition 属性,将 NextPointer 与列表头进行比较,但是由于 NextPoint 在节点的上下文中进行评估,我不知道将其与什么进行比较:

这是使用 skip 指令的以前(2010)可视化工具的样子,因为#list 会自动处理

#list可以防止无限遍历,并且可以优雅地处理循环列表。此外,您可以使用skip:表达式来表示不应报告的哨点节点。虽然名字暗示该节点将被跳过,但它实际上会导致遍历停止,所以如果你的哨兵节点是第一个,你应该在它之后开始遍历。

我如何在 natvis 中向调试器解释它一旦再次到达根元素就应该停止扩展列表?

0 投票
8 回答
2986 浏览

c++ - 我正在寻找一种在 VS2012 中通过 NatVis 显示 UUID 的正确方法

我正在寻找一种在 VS2012 中通过 NatVis 显示 UUID 的正确方法。我自己的 uuid 类型在内部使用 UUID big-endian,因此转换为 (GUID*) 不起作用,因为 GUID 在 Windows 中使用 little-endian。所以我总是看到一个误传的uuid。

此外,Natvis 中的任何格式说明符看起来都不好看,因为在使用十六进制表示法时我无法摆脱输出中的 0x。有任何想法吗?

0 投票
3 回答
4446 浏览

c++ - User defined natvis files in Visual Studio 2012

I'm trying to use new debug visualizers in my project, but something happened to Visual Studio and it does not pick up my natvis files anymore. I tried copying them to %USERPROFILE%\My Documents\Visual Studio 2012\Visualizers as well as to \Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers but it still fails.

It did work a week ago, but something has broken since then.

I tried repairing Visual Studio but it didn't help.

I tried enabling EnableNatvisDiagnostics in the registry but I didn't get any diagnostic messages in the Output window.

The preinstalled natvis files were working fine though. So I tried to remove one of the preinstalled natvis files: stl.natvis from Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers but Visual Studio was still showing vector as if it had access to stl.natvis file. Does anybody know how to fix this? Is there any other location where Visual Studio loads natvis files from? Maybe there is a registry key for that?

PS. I tried using ProcessMonitor to find out the location from which Visual Studio loads natvis files, but I couldn't find any references in ProcessMonitors logs.

0 投票
1 回答
1099 浏览

visual-studio-2012 - VS 2012 natvis:可以在 xml 中定义类吗?

我目前正在尝试为工作中的大型项目创建一个 natvis XML 文件。我们有一个指向类型的指针,调试器对此一无所知(使用 typedef 隐藏信息,作者的想法很愚蠢,但目前无法更改......)。

原来的结构和这个类似(调试器对这些类型一无所知,他只看到指针):

我的目标是通过 natvis XML 文件使该结构的成员可见。对于普通成员来说,这很容易,使用 Items 和指针算法。例子:

我也知道如何定义已知类型的数组:

有没有办法定义一个(对于调试器)未知类型的数组?或者我可以以某种方式声明 XML 文件中的类型吗?

0 投票
6 回答
6006 浏览

c++ - 我可以控制在调试器窗口中显示的浮点数和双精度变量的位数吗?

在 Visual Studio 2012 中,我正在寻找一种方法来自定义 Autos、Locals 和 Watch 窗口中浮点类型的默认显示。我熟悉 Native Visualizer (Natvis) 实用程序,但没有看到任何调试器格式化工具来完成此操作。同样,我不知道有任何方法可以覆盖任何原始类型的默认显示(除了启用十六进制)。

目标是为与点、几何向量等对应的类型创建具有较少扩展位数的显示字符串,但在扩展类型时仍会显示所有精度。因此,例如,我可能有一个点类型的变量,(0.000, 1.234, 2.429)而不是m_x = 0.00000000, m_y = 1.234245213...在 Autos 窗口的中间列中显示。

我查看了此页面上的格式说明符,但没有看到控制浮点精度的方法。

0 投票
1 回答
1245 浏览

visual-studio-2012 - NatVis:允许 typedefs 吗?

我有一个类型定义为:

我最终打算使用 NatVis 在我们已加载到内存中的全局字符串表中显示相应的值。

所以我定义了一个新的 NatVis 进行测试(这是我的第一次):

我已经在注册表中打开了 NatVis 调试,我可以看到我的 .natvis 文件正在被调试器加载并成功解析。

我也关闭了“编辑并继续”。

但是,当我调试代码并检查 StringChecksum 时,我看不到任何区别,它显示的是整数。我希望它会显示类似“StringChecksum 3433”的内容。

NatVis 是否可以使用从普通 typedef 定义的类型?我见过的所有例子都在使用类。如果是这样,有什么想法可能是错的吗?

0 投票
1 回答
816 浏览

visual-studio-2013 - 在 natvis 可视化器的第一个扩展级别上扩展模板类型的成员

VS2013 中的默认可视化shared_ptr器有这个(很多很多东西被修剪掉了!):

这意味着在调试器中您必须展开shared_ptr然后展开[ptr]“成员”以查看指向对象的成员。指向 int 的指针的层次结构看起来像(忽略原始视图、分配器和删除器):

我想写一个替代品,将所有指向对象的成员向上一层,以位于[ptr]当前所在的层次结构中。这将看起来像:

是否有一些语法允许这样做?我应该注意,我正在寻找通用语法来支持显示模板参数的所有成员,而不是只能使用的东西shared_ptr-shared_ptr只是一个方便的例子。

0 投票
1 回答
1174 浏览

visual-studio - 用于 BITMAPINFOHEADER 的 VS Image Watch 扩展 natvis?

Visual Studio 的 Image Watch 扩展 ( http://goo.gl/TWre0X ) 允许您在调试时查看内存中的位图。非常有用,但是我一直试图定义一个 natvis 文件以允许查看 DIB 或 BITMAPINFOHEADER 甚至只是 BITMAPINFO 对象。

这是我目前拥有的:

问题显然是“[数据]”部分,试图计算像素数据的偏移量。$ 是试图理解 natvis 文件真正在做什么的弱尝试。

Image Watch 的文档和用户定义类型的一些示例 natvis 文件(BITMAPINFOHEADER 如何属于用户定义,不知道为什么):http: //goo.gl/zt2uCh

是否有人已经有一个 natvis 文件来处理和显示 Image Watch 的 BITMAPINFOHEADER 类型?或者有一个关于如何让这个工作的建议。谢谢。

0 投票
1 回答
624 浏览

c++ - 在 natvis 文件中使用宏?

我刚刚了解.natvis了 Visual Studio 中的文件,并且一直在为我的 Ruby C++ 扩展项目设置一些文件。http://msdn.microsoft.com/en-us/library/jj620914.aspx

但是,然后我尝试在条件语句中使用 Ruby 宏之一,然后出现错误:

我正在尝试的规则是:

在我的项目中,我将 Ruby 的VALUE类型包装在小型 C++ 包装类中,用于常见类型,例如String,HashArray。我已经能够为这些设置 natvis 规则。但是每当我想使用 Ruby 系统中的一些宏时,我总是会出错。

natvis不能在文件中使用宏吗?

0 投票
0 回答
225 浏览

visual-c++ - VS2012调试可视化问题

我正在使用 natvis 系统来简化我的自定义类型的调试。

我有一个简单的数组类型,我希望使其可扩展......

我已使用 EnableNatvisDebugger=0x0000001 reg 键启用 natvis 解析器调试

当我运行程序并将鼠标悬停在调试器中的数组上时,我得到以下输出

不幸的是,可视化器似乎仅在将鼠标悬停在项目上并将它们固定在代码窗口中时才起作用。它在任何监视窗口中都不起作用。此外,子项目扩展也根本不起作用。

我正在运行以下版本的 VS2012

我已禁用“编辑并继续”,并关闭了对托管 C++ 兼容性的支持。我可能应该提到,STL 的可视化也没有工作。

我有点难过。