问题标签 [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.
qt - 如何在 Visual Studio 2015 上调试时查看 Qt5 QString 内容
我正在使用 Visual Studio 2015 和 Qt5。
我已经在 Vislaualizers 文件夹中添加了 qt5.natvis。我在工具 > 选项 > 调试 > 常规菜单中设置了“使用本机兼容模式”选项。
即使这样,调试时 QString 值也不会正确显示。Locals/Autos/Watch 窗口上仅显示内存方向。任何想法?
我已经为本机诊断消息设置了详细选项,这就是我得到的:
c++ - Visual Studio natvis 语句的局部变量
我目前正在为 natvis 中的日期类型编写可视化工具。date 类型以通常的 unix 方式存储自 1970 年以来的秒数,但如果不使用临时变量,则从中派生年、月和月中的日期会非常冗长。我希望能够存储工作变量,以便以理智的方式评估可视化器。这可能吗?
我到达的解决方案如下所示:
请注意“USING_DEBUG_TIMER_DOE”部分。是这样计算的:
用于可视化这些的 natvis 是:
visual-studio - NATVIS 重新解释类型或别名类型
natvis 有没有办法将类型重新解释为已经 natvis 定义的类型?还是别名呢?
例如,我想做这种“技巧”(在我的上下文中真的很有必要,即使这对你来说听起来很奇怪,这是 JIT 符号生成的问题)
但它不能显示展开项,它只是显示一个字符串作为值(考虑到“DisplayString”角色,这似乎是合乎逻辑的)。
我也尝试过一个SmartPointer
技巧,它做得更好,但事实证明,当涉及基类时它不起作用(它只显示 SmartPointer 类型并完全忽略继承)
visual-studio - 为什么这个 std::map 不能在 Visual C++ 的监视窗口中以可用的方式显示?
我无法在监视窗口中查看某些 std::map。查看 .natvis 文件,std::map 有多种实现。有没有办法选择一个或另一个?
地图 s 不能被观看(关于 std::_Tree<> 正在显示的东西)。奇怪的是可以引用第一个元素。
visual-studio - 视觉工作室调试可视化器(natvis)是否可以执行地图查找?
所以我有一个类型,它被用作地图的键。键本身不是特别可读的(例如 128 位 guid),但该键引用的映射中的值是。
是否有可能在不修改代码的情况下(我已经看到用于添加额外数据纯粹用于调试可视化工具的方法),为我的键类型向 natvis 添加类型定义,在映射中搜索关联的条目用我的钥匙?
c# - 如何从 Debugger.GetExpression 获取 DisplayString 字段?
背景
我正在用 C# 编写一个 Visual Studio 扩展,它在调试另一个应用程序时在即时窗口中执行代码。该表达式返回一个值,该值可以是 int、字符串文字、类等。我正在调试的应用程序是用 C++ 编写的。
编码
要执行即时窗口命令,我使用这行代码:
并检索我使用的结果:
和:
这是我正在调试的应用程序中的 myFunc() :
问题
当我在即时窗口中手动运行表达式时,返回的对象将被转储,正如我在观察窗口中看到的那样(参见此处)。我设法找到了所有孩子的名字,但是缺少这些值(请参见此处)。
我想要的是实现 DisplayString ( { size=5 }
),但我还没有发现任何有用的东西。
如何从 Debugger.GetExpression 获取 DisplayString 字段?
编辑:我不必使用这个 API。如果您知道另一种可以返回此刺痛的方法,请提出建议。一种想法可能是检索即时窗口的完整输出字符串(见右侧),然后对其进行解析。
EDIT2:看这个视频可以更好地解释这个问题
visual-studio - C++/WinRT natvis 在全新安装中不起作用
我该如何解决这个问题?
我将这个问题中的 natvis 示例与 C++/WinRT 控制台模板结合起来,并成功地使 natvisMatrix2d
可以工作,但不能用于Uri
.
我不确定 cppwinrt 预计会生成哪些 natvis 文件(.natvis 或 .pdb)以及它们的位置。
下面是 Natvis 调试输出。它显示只有我的自定义 Natvis 文件 (\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis) 和系统范围的 Natvis 文件 (%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers) 正在加载。
Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\atlmfc.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\concurrency.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\cpp_rest.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\ObjectiveC.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis。Natvis: 解析 natvis xml 文件: C: \Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\Windows.Data.Json.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.geolocation.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.sensors.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.media.natvis。Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.natvis。Natvis: 解析 natvis xml 文件: C: \Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\winrt.natvis。Natvis:解析 natvis xml 文件:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis。Natvis:忽略来自 ConsoleApplication2.pdb 的 NatvisFile.natvis;加载的项目中已存在同名文件。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(17,6):在类型上下文“Matrix2d”中成功解析表达式“0”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(18,6):在类型上下文“Matrix2d”中成功解析表达式“i < m_numRows”。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1063,6):在类型上下文“std::vector<int,std::allocator >”中成功解析表达式“_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst”。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1062,6):成功解析表达式'_Mypair._Myval2._Mylast - _Mypair._Myval2。 _Myfirst' 在类型上下文 'std::vector<int,std::allocator >' 中。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1064,29):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1066,52): 成功解析表达式' 类型上下文'std::vector<int,std::allocator >'中的容量()'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1067,53):在类型上下文“std::vector”中成功解析表达式“_Mypair” <int,std::分配器>'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1069,15):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1070,23):在类型上下文中成功解析表达式 '_Mypair._Myval2._Myfirst' std::vector<int,std::allocator >'。纳特维斯:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,23):在类型上下文 'Matrix2d' 中成功解析表达式 '&m_elements[i * m_numCols],[m_numCols]na'。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,8):在类型上下文“Matrix2d”中成功解析表达式“i”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文 'Matrix2d' 中成功解析表达式 '++i'。成功解析类型上下文“Matrix2d”中的表达式“i”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文“Matrix2d”中成功解析表达式“++i”。成功解析类型上下文“Matrix2d”中的表达式“i”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文“Matrix2d”中成功解析表达式“++i”。
这是全新安装的 Windows 10 和 VS19 (16.8.2)。
c++ - 如何使用 natvis Visual Studio C++ 调试器可视化器为单一类型进行多个列表扩展
我正在尝试为以块形式存储值的容器制作调试器可视化工具。我想为值和块进行列表扩展,但据我所知,单一类型只能有一个列表扩展。可能有多Expand
个子节点,ArrayItems
但它们都产生单个列表。是的,我可以为容器进行块扩展,然后为每个块进行值扩展。但我想要两个具有如下扩展的容器子节点:
有没有办法使用 natvis xml 来做到这一点?