问题标签 [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.
c++ - 如何获得 std::pair在 Visual Studio 的调试器中显示为正确的字符串段?
如何std::pair<char *, char *>
在 Visual Studio 中显示为正确的字符串段,而不是显示为指向空终止字符串的两个指针?
c++ - 如何在 VS2015 中为指针类型添加自定义可视化?
我正在尝试通过在 VS2015 中创建一个 .natvis 文件来为 C++ 类的指针(比如 Element)编写一个自定义可视化工具。
id
当我将鼠标悬停在指针变量上时,我希望调试器向我显示元素成员的值。我怎样才能做到这一点?到目前为止,我已经尝试了以下方法,但它似乎不起作用。
visual-studio - 使用 Visual Studio Professional 2017 的 natvisreload:语法错误
我正在尝试使用 Visual Studio Professional 2017 进行转储分析,但是当.natvisreload
在监视窗口中输入命令时,我得到syntax error
并且output window
. (这似乎意味着命令不理解)
为了让我了解真正的问题,我想知道我可以在中启动的另一个命令的示例Watch window
:是否有人知道另一个命令,以点开头,我可以在Watch window
(为了区分问题是否与特定命令.natvisreload
或一般命令有关Watch window
)?
visual-c++ - 具有多个基类的 Natvis
我在一个进行大量继承的框架中工作,我发现一个基类的 Natvis 会干扰另一个基类。
这是一个愚蠢的例子:
有了这个 natvis:
...我明白了: https ://i.stack.imgur.com/0dMNu.png
MainBaseItem 的扩展显示良好,但 ExtraBaseItem 的扩展无处可见。
在我的实际情况中,MainBase 等效项的 natvis 非常重要,因此我无法通过添加Inheritable="false"来解决问题。为派生类本身添加专门的 natvis 也是不切实际的——派生类有数千个。鉴于这些无益的限制,我能做些什么来让 ExtraBaseItem 出现吗?
visual-studio - 如何调试Windbg?(如何获取有关 Windbg 正在做什么的信息)
大多数人都知道,Windbg 可以用于调试程序,但现在我想做相反的事情:我想调试我在 Windbg 中所做的事情,让我告诉你为什么:
我发现了一个有趣的原生可视化工具,其中包含以下条目:
这些条目确保 CMap 对象以一种很好的方式显示,一个在另一个之下。与另一个内部条目一起,这会在 Visual Studio 监视窗口中产生以下结果:
当我尝试在 Windbg 中做同样的事情(使用dx
命令)时,这会提供类似的信息,但它在条目号 49 处结束:
(通过单击条目,我可以获得更多信息,这些信息由提到的其他本机可视化器条目正确呈现)
我想知道CMap
条目显示在 49 处停止的原因。我已经知道我可以通过单击...
(将-c 100
, -c 200
, ... 添加到dx
命令)来获得更多条目,但如果我可以获得更多信息(比如Visual Studio 的输出窗口,选项“调试、输出窗口、常规输出设置、Natvis 诊断消息”设置为“详细”),我将能够诊断和解决我的问题。
有人知道怎么做这个吗?
提前致谢
visual-studio - 原生可视化器能否根据其集合的参数名称修改项目的显示?
在我的公司,开发人员经常使用CMapStringToStr
对象,并且对于特定参数,指针总是具有相同的类型,例如
我已经制作了一个本地可视化器,用于CMapStringToPtr
以合理的可读方式扩展 ,正如您在这段摘录中看到的那样:
我想要识别m_mapUsers
和m_mapOthers
条目,以获得如下结果:
这可能吗?
visual-studio - Visual Studio NatvisFile 将前导零添加到 DisplayString
我想通过 Nativis 文件在 Visual Studio 2017 中调整我的 Visualizer。有一个自己的类date
,它应该在调试器中显示得更好。
我当前的代码在调试器中显示类似这样的日期:
但是,我想有前导零。所以像这样:
有没有办法做到这一点?
c++ - Visual Studio natvis 文件:映射迭代器运算符 * 重载
我在一个项目中有一个定制的地图类/容器,其中包括一个迭代器。迭代器定义了 (*) 运算符以返回指向地图元素的键。我使用 natvis 文件以我想要的方式显示自定义地图以及迭代器,它可以工作。问题是当我在监视窗口中输入以下内容时:
我得到:
在 natvis 文件中做什么来克服这个问题?
c++ - 如何避免原生可视化器中的递归?
我正在调试一个 C++ 程序,其中包含相当多的CPtrArray
对象。
使用定制的 heap_stat 脚本,我知道CPtrArray
对象的指针值,其中包含很多条目。
使用本机可视化器,我确实可以看到每个CPtrArray
对象中的条目数量,因此我对应的 natvis 条目:
问题是:这显示了元素的数量,但没有显示指针值。我想很容易地解决这个问题,使用以下 natvis 条目:
然而,这向我显示了指针值,但还有更多::-)
有谁知道我怎样才能避免这种递归?
在第一次评论和回答后编辑
我已将我的 heap_stat 脚本修改如下:
因此,我CPtrArray
在 heap_stat 报告中获得了(和其他)对象的大小:
我有COLUMN
对象,它们有一个CPtrArray
属性,我想知道哪个对应于那个特定的CPtrArray
对象,因此我COLUMN
在我的监视窗口中添加了所有对象:
正如您所看到的,递归给了我大量的信息(并且大大降低了我的分析性能),因此我想避免它,而不需要扩展每个COLUMN
对象来查看所需的信息。
一些后续的编辑
由于这个问题看起来像是 Natvis 处理中的一个错误,我决定在 MSDN 网站上写一篇重复的帖子。该帖子最近被标记为“Triaged”,我希望这意味着 MSDN 开发人员考虑到了它。
提前致谢
c++ - 如何使用 shared_ptr 在类型擦除类中显示底层数据
好的,所以我有一个非常简单的类,它使用类型擦除,使用共享指针。
这里没有问题,但是由于它的工作方式,调试器显示了从 Prop 到 std::shared_ptr(PropContent) 再到 PropModel 的完整链,最后是包含实际数据的底层模板化 prop。
我想做的是编写一个 natvis 规则来显示底层数据,而不是整个链。不幸的是,我得到的最远的是取消引用指针,这让我只剩下它指向的 PropConcept 结构。
所以当然,我的问题是,我如何遍历“树”以到达 PropModel 结构的“道具”成员?类本身是否需要调整,或者它是否只是纯 natvis 都没关系——只要类型擦除仍然存在,我不必扩展 4 个项目来获取数据。
提前感谢您的帮助。