Condividi tramite


Oggetti debugger nativi in NatVis

Informazioni generali

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

  • Sessione
  • Thread/Thread
  • Processi/Processo
  • Frame dello Stack/Frame dello Stack
  • Variabili locali
  • Moduli/Modulo
  • Utilità
  • stato
  • 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, vedere Oggetti debugger nativi nelle estensioni JavaScript.

In questo argomento viene descritto 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 una semplice applicazione C++ 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 il codice XML seguente:

<?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 Visualizers nella directory di installazione per Strumenti di debug per Windows. Per esempio:

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

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

Vedere anche

dx (Display Debugger Object Model Expression)

Uso di LINQ Con gli oggetti debugger

oggetti debugger nativi nelle estensioni JavaScript