问题标签 [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 回答
86 浏览

c++ - 如何在 Visual Studio 跨平台 CMake 项目的调试器中可视化自定义类?

我目前正在使用 Visual Studio 和 CMake 进行跨平台开发。以前,我只会创建本机 Visual Studio 应用程序,并且可以使用 natvis 文件轻松创建自定义类的调试可视化。但是,我尝试将 natvis 文件添加到我的 CMake 项目的每一种方式都失败了。例如,我尝试通过 user12322620 调整此答案,但无济于事。

这是我的目录结构:

我的顶级 CMakeLists.txt 文件:

我的 dbe_lib CMakeLists.txt 文件:

我的 dbe_test CMakeLists.txt 文件:

我目前通过 ssh 瞄准 Windows 以及 WSL2 Ubuntu 和 RPi。我的 Visual Studio 版本是 2019,但我也在 Visual Studio 2022 RC3 上尝试过。

是否可以将像 natvis 文件这样的调试可视化文件添加到这样的 CMake 项目中?有没有跨平台的解决方案?我猜这是可能的,因为像 std::vector 这样的 STL 类无论目标平台如何都有很好的调试可视化工具。

0 投票
0 回答
53 浏览

c++ - 使用运行时字符串在 natvis 中指定对象类型

说我有一个结构

bar是某种类型擦除的东西,barTypeName是一个正确的 C++ 类型标识符,用于标识bar.

我想在 Visual Studio 调试器中可视化这一点,尤其是在 Watch 窗口中。没有涉及可以给我正确类型的模板。类型本身通常是 POD,调试器无法自动找出类型。

问题:在 natvis 中有什么方法可以告诉调试器的类型,bar以便它在 Watch 窗口中正确显示?

我偶然发现<MostDerivedType>natvis 架构,但据我所知,它没有记录,我不知道它是否符合我的要求。

<CustomVisualizer>如果它提供了一种处理此问题的方法而 natvis 没有,我很高兴在 C++ 中使用和实现它。