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

vscode-debugger - VSCode 在 Natvis 中访问本地创建的变量

我有以下 natvis 代码,用于在调试器中可视化我的 q23_t 类(较大的 natvis 文件的一部分)。我无法让 natvis 显示 ibit23 的值,它是本地定义的变量。我收到以下错误:
-var-create:无法创建变量对象
我想知道如何声明一个局部变量并为我的项目访问它。非常感谢。

0 投票
1 回答
243 浏览

visual-studio-code - 在 VSCode/Natvis 中使用 CustomListItems

我正在使用 Natvis 在 VSCode 中为我的自定义类开发一些调试可视化。使用 CustomListItems 和一个简单的例子,我无法让它工作。基本上,我认为下面的代码应该显示 16 个项目,所有项目的值为 1,但我只得到类的基本类型..

我得到什么:

噘嘴:16 x q23 数组
>[原始视图]:0x56594b40 <xin>

花了很多时间尝试各种事情,所以我将问题减少到这个基本级别并且无法让它工作。

0 投票
0 回答
105 浏览

c++ - Qt4.natvis 在 Centos 7 上的 VSCode 中不起作用

我正在使用 VSCode 通过 SSH 在 Centos 7 上使用 Qt4 进行开发。我的 launch.json 内容如下:

当悬停在名为 stmt 的 QString 上时,弹出窗口中会显示一些信息,例如字符串大小,但没有关于实际文本内容的信息。在监视窗口中也是如此。主可视化器文本为“-var-create:无法创建变量对象”

当我悬停时,gdb 会生成以下错误消息流。

有多个“-var-create”错误和“可视化表达式需要显式刷新”错误的实例。

0 投票
1 回答
45 浏览

visual-c++ - 如何将单个字符的 natvis 限制为仅 VisualStudio 中的字符

当创建一个

在 .natvis 文件中,字符显示为 fe

82'R'

我正在寻找一种将其显示为的方法

'R'

例如没有号码。

0 投票
0 回答
62 浏览

visual-studio - Natvis 与复杂类型名称不匹配

我有以下 .natvis 文件用于可视化哈希表的元素。

我(还)不关心复杂的可视化逻辑,而只是关心名称匹配。这个 natvis 为 typevbl::Hash_Table<Handle, Entity*, null>而不是为 type加载vbl::Hash_Table<Physics_Body*, long, function (Physics_Body* b) @system => hash32((*b)::entity::handle::raw_handle::bitfield)>。输出窗口显示 natvis 完全编译第一个,但甚至不考虑第二个。

第二种类型的签名完全疯狂,我知道,但不幸的是我必须使用它并且无法弄清楚为什么它不匹配。我认为名称匹配系统可能匹配得很好,因此>将匹配大于=>而不是在末尾,但由于嵌套模板没有问题,所以情况并非如此。

如何更正<Type Name="vbl::Hash_Table&lt;*&gt;">以匹配两个类型签名?

0 投票
0 回答
102 浏览

c++ - 如何将 natvis 中的视图类型从标准容器传播到它们的项目?

可以为 natvis 文件中指定的类型定义不同的视图,但是我不知道如何在不修改或重写容器 natvis 的情况下通过标准容器传播这些视图。

我有以下测试 C++ - 代码:

以及以下类型的可视化工具S

并且正在寻找一种方法来g在 Visual Studio 的监视窗口中为容器选择视图,以便容器的所有项目s都与视图一起显示g

这是我尝试过的,但是当直接在监视窗口中输入项目时,g 视图仅适用于类型 S。对于长数组,这种方法是不可行的:

在此处输入图像描述

0 投票
0 回答
92 浏览

visual-studio - 如何在 Visual Studio 调试器中漂亮地显示带有远程 gdb 的对象(可能通过适当的 natvis 文件)?

我有一个用于显示复杂结构和对象(例如 nlohmann json 或 STL)的 natvis 文件,它在调试 x64 编译代码时效果很好。但是,一旦我将平台切换到 ARM64(2020 年 1 月的带有 aarch64-poky-linux 的 yocto-sdk-5.4)并通过交叉编译器编译并通过目标上的远程 gdb 进行调试,我就无法查看所有此类对象,例如 nlohmann json 节点或 STL 字符串。

我想知道远程 gdb 是否有一个特殊的 natvis 文件,或者必须调整什么文件才能让 Visual Studio 漂亮地显示这些对象的结构。你有想法或解决方案吗?

注意:如果我查看这些对象,我可以看到子元素 _M_p 和 _M_t,这让我认为 gdb 没有启用漂亮打印。不幸的是,我在互联网上找到的所有解决方案(打开漂亮的打印)都适用于 Visual Studio Code,但我有 MSVC 2017。

0 投票
1 回答
90 浏览

visual-studio-code - VSCode natvis 处理某些变量,但不处理相同模板类型的其他变量

在此处输入图像描述

在 Android 的 NDK 上使用上述 std::vectors。如果我为 std::__ndk1::vector_base 定义 natvis 如下

我得到以下

在此处输入图像描述

为什么 natvis 定义有效unsigned char但无效unsigned long

0 投票
0 回答
105 浏览

c++ - 自定义类型的 Natvis C++ 格式

我一直在尝试为派生变量创建 VS2019 C++ 的 natvis 文件。我已经从 NDK 构建了库,尽管我认为这无关紧要。

这是一个屏幕截图:

调试时

你能给我一些关于如何至少开始可视化它的提示吗?到目前为止,我的尝试效果为零。我承认我发现阅读模板样式变量很困难。

我目前的尝试:它源自 std::string (看一下片段)。

我的尝试是:

0 投票
0 回答
36 浏览

c++ - 是否可以在 .nativs 文件中输入 VSCode 映射 [IDs, Strings] 并在调试时输出关联的字符串?

我在应用程序中有很多寄存器 ID,为了调试应用程序,我需要知道寄存器的名称而不仅仅是 ID。

是否可以在 .natvis 文件中维护地图并使用漂亮的打印将 ID 转换为注册名称(字符串)?

示例:0x1234,“foo” 0x1122,“bar”