Objetos de depurador nativos en NatVis
Información general
Los objetos del depurador nativo representan diversas construcciones y comportamientos del entorno del depurador. Los objetos de depurador de ejemplo incluyen lo siguiente.
- Sesión
- Subprocesos o subprocesos
- Procesos y procesos
- Marcos de pila/Marco de pila
- Variables locales
- Módulos o módulos
- Utilidad
- State
- Configuración
Puede usar el comando dx y LINQ para interactuar con los objetos del depurador. Para obtener más información, vea dx (Display Debugger Object Model Expression) y Using LINQ With the debugger objects(Usar LINQ Con los objetos del depurador).
También puede trabajar con objetos del depurador mediante JavaScript. Para obtener más información sobre esto, vea Objetos de depurador nativo en extensiones de JavaScript.
En este tema se describe cómo crear visualizadores NatVis personalizados para mostrar objetos del depurador.
Recursos de desarrollo de NatVis
Consulte estos recursos para obtener información general sobre cómo trabajar con NatVis.
Creación de vistas personalizadas de objetos nativos
Ejemplo de objeto NatVis personalizado
Cree una aplicación de C++ sencilla que tenga una instancia de la clase CDog.
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;
}
Cree un archivo denominado Dog.natvis que contenga este 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>
Copie Dog.natvis en la carpeta Visualizadores del directorio de instalación para Herramientas de depuración para Windows. Por ejemplo:
C:\Archivos de programa\Herramientas de depuración para Windows (x64)\Visualizadores
Ejecute el programa y interrumpa en la función principal. Realice un paso para que la variable MyDog
se inicialice. Muestra MyDog
con ?? y otra vez con 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]
Consulte también
dx (Mostrar expresión del modelo de objetos del depurador)