如何在 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->id
或(*this).id
?成员访问的运算符优先级高于间接访问。我不确定它是否适用于 natvis。
也许 id=*this.id
应该是id=*id
。还有你如何安装最终文件?
@S.M.我认为this->id
需要对>
进行额外的转义。并且 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# 项目自定义代码分析字典?