Condividi tramite


Oggetti debugger nativi in NatVis

Panoramica

Gli oggetti debugger nativi rappresentano vari costrutti e comportamenti dell'ambiente debugger. Gli oggetti debugger di esempio includono quanto segue.

  • sessione
  • Thread/Thread
  • Processi/Processi
  • Frame stack /Stack Frame
  • Variabili locali
  • Moduli/Modulo
  • Utilità
  • State
  • Impostazioni

È possibile usare il comando dx e LINQ per interagire con gli oggetti debugger. Per altre informazioni, vedere dx (Display Debugger Object Model Expression) e Using LINQ With the debugger objects .

È anche possibile usare oggetti debugger usando JavaScript. Per altre informazioni su questo argomento, gli oggetti debugger nativi nelle estensioni JavaScript.

Questo argomento descrive come creare visualizzatori NatVis personalizzati per visualizzare gli oggetti debugger.

Risorse di sviluppo NatVis

Per informazioni generali sull'uso di NatVis, vedere queste risorse.

Creare visualizzazioni personalizzate di oggetti nativi

.nvload

.nvlist

.nvunload

.nvunloadall

Esempio di oggetto NatVis personalizzato

Creare un'applicazione C++ semplice con un'istanza della classe 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;
}

Creare un file denominato Dog.natvis contenente questo codice 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>

Copiare Dog.natvis nella cartella Visualizzatori nella directory di installazione per Gli strumenti di debug per Windows. Ad esempio:

C:\Programmi\Strumenti di debug per Windows (x64)\Visualizzatori

Eseguire il programma ed eseguire l'interruzione nella funzione principale. Eseguire un passaggio in modo che la variabile MyDog venga inizializzata. Visualizzare MyDog l'uso di ?? e di nuovo usando 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]

Vedi anche

dx (Visualizzazione espressione del modello a oggetti debugger)

Uso di LINQ Con gli oggetti debugger

Oggetti debugger nativi nelle estensioni JavaScript