Поделиться через


Собственные объекты отладчика в NatVis

Обзор

Собственные объекты отладчика представляют различные конструкции и поведение среды отладчика. Ниже приведены примеры объектов отладчика.

  • Сессия
  • Потоки / поток
  • Процессы / Процесс
  • Кадры стека и кадр стека
  • Локальные переменные
  • Модули / модуль
  • Полезность
  • Государство
  • Настройки

Для взаимодействия с объектами отладчика можно использовать команду dx и LINQ. Дополнительные сведения см. в разделе DX (Выражение объектной модели отладчика) и использование LINQ с объектами отладчика.

Вы также можете работать с объектами отладчика с помощью JavaScript. Дополнительные сведения об этом см. в расширениях JavaScript в машинном отладчике.

В этом разделе описывается, как создавать пользовательские визуализаторы NatVis для отображения объектов отладчика.

Ресурсы разработки NatVis

Дополнительные сведения о работе с NatVis см. в этих ресурсах.

Создание пользовательских представлений собственных объектов

.nvload

.nvlist

.nvunload

.nvunloadall

Пример пользовательского объекта 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

Запустите программу и войдите в основную функцию. Выполните шаг, чтобы переменная 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 (выражение объектной модели отладчика)

Использование LINQ С объектами отладчика

собственные объекты отладчика в расширениях JavaScript