Собственные объекты отладчика в 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

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

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

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