如何在 VS2015 中为指针类型添加自定义可视化?

Posted

技术标签:

【中文标题】如何在 VS2015 中为指针类型添加自定义可视化?【英文标题】:How to add custom visualization for pointer types in VS2015? 【发布时间】:2018-03-26 07:03:14 【问题描述】:

我正在尝试通过在 VS2015 中创建一个 .natvis 文件来为 C++ 类(例如 Element)的指针编写 custom visualizer。

class Element

   int id;
   ......
;

int main()

   Element* pElem = GetElement();  // Visualise this pointer!


当我将鼠标悬停在 pointer 变量上时,我希望调试器向我显示元素的成员 id 的值。我怎样才能做到这一点?到目前为止,我已经尝试了以下方法,但它似乎不起作用。

<?xml version="1.0" encoding="utf-8"?>

<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <!-- VC 2015 -->

  <Type Name="Element*">
    <DisplayString> id=*this.id </DisplayString>
  </Type>

</AutoVisualizer>

【问题讨论】:

为什么不this-&gt;id(*this).id?成员访问的运算符优先级高于间接访问。我不确定它是否适用于 natvis。 也许 id=*this.id 应该是id=*id 。还有你如何安装最终文件? @S.M.我认为this-&gt;id 需要对&gt; 进行额外的转义。并且 this 不是必需的,因为表达式是在对象的上下文中评估的。 @VTT :为了安装 natvis 脚本,我将文件放在 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger\Visualizers" 下。这些是在启动时自动加载的。您也可以拥有项目特定的可视化工具。 【参考方案1】:

您不需要添加*。并且在访问当前上下文的成员时不需要*this.(另请参阅有关运算符优先级的 cmets)。

<Type Name="Element">
  <DisplayString> id=id </DisplayString>
</Type>

【讨论】:

以上是关于如何在 VS2015 中为指针类型添加自定义可视化?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 的选项菜单中为 chromecast 添加自定义投射按钮?

Python matplotlib可视化:自定义轴标签格式化函数(在轴刻度上添加自定义的数值以及符号形式)使用自定义函数在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)

Python matplotlib可视化:在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)水平条形图(horizontal bar)

如何在 VS2010 Professional 中为 C# 项目自定义代码分析字典?

drupal - 如何在视图模块中为每种网格格式添加自定义 CSS?

在 VS2017 中为 html 属性和元素添加智能感知