NatVis 中的本机调试器对象
概述
本机调试器对象表示调试器环境的各种构造和行为。 示例调试器对象包括以下内容。
- 会话
- 线程/线程
- 流程/流程
- 堆栈帧/堆栈帧
- 局部变量
- 模块/模块
- 实用工具
- 状态
- 设置
可以使用 dx 命令和 LINQ 与调试器对象进行交互。 有关详细信息,请参阅 dx (Display Debugger 对象模型表达式) 和 将 LINQ 与调试器对象配合使用。
还可以使用 JavaScript 处理调试器对象。 有关此内容的详细信息,请参阅 JavaScript 扩展中的本机调试器对象。
本主题介绍如何创建自定义 NatVis 可视化工具以显示调试器对象。
NatVis 开发资源
有关使用 NatVis 的一般信息,请参阅这些资源。
自定义 NatVis 对象示例
创建具有 CDog 类实例的简单 C++ 应用程序。
class CDog
{
public:
CDog(){m_age = 8; m_weight = 30;}
long m_age;
long m_weight;
};
int main()
{
CDog MyDog;
printf_s("%d, %d\n", MyDog.m_age, MyDog.m_weight);
return 0;
}
创建一个名为 Dog.natvis 的文件,其中包含此 XML:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="https://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="CDog">
<DisplayString>{{Age = {m_age} years. Weight = {m_weight} pounds.}}</DisplayString>
</Type>
</AutoVisualizer>
将 Dog.natvis 复制到 Windows 调试工具安装目录中的可视化工具文件夹。 例如:
C:\Program Files\Debugging Tools for Windows (x64) \Visualizers
运行程序,并在 main 函数中中断。 执行一个步骤,以便初始化变量 MyDog
。 使用 ?? 显示MyDog
,再次使用 dx。
0:000> ??MyDog
class CDog
+0x000 m_age : 0n8
+0x004 m_weight : 0n30
0:000> *
0:000> dx -r1 MyDog
.....
MyDog : {Age = 8 years. Weight = 30 pounds.} [Type: CDog]