Собственные объекты отладчика в NatVis
Общие сведения
Собственные объекты отладчика представляют различные конструкции и поведения среды отладчика. Ниже приведены примеры объектов отладчика.
- Сеанс
- Потоки / Потоки
- Процессы / Процесс
- Кадры стека или кадр стека
- Локальные переменные
- Модули / Модуль
- Служебная программа
- Состояние
- Параметры
Для взаимодействия с объектами отладчика можно использовать команду dx и LINQ. Дополнительные сведения см. в разделах dx (отображение выражения объектной модели отладчика) и Использование LINQ с объектами отладчика.
Вы также можете работать с объектами отладчика с помощью JavaScript. Дополнительные сведения об этом см. в разделе Собственные объекты отладчика в расширениях JavaScript.
В этом разделе описывается создание пользовательских визуализаторов NatVis для отображения объектов отладчика.
Ресурсы для разработки NatVis
Общие сведения о работе с NatVis см. в этих ресурсах.
Создание пользовательских представлений собственных объектов
Пример пользовательского объекта NatVis
Создайте простое приложение C++, которое содержит экземпляр класса 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;
}
Создайте файл с именем 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]
См. также раздел
dx (отображение выражения объектной модели отладчика)