Condividi tramite


Pseudovariabili nel debugger di Visual Studio

Le pseudo variabili sono termini usati per visualizzare determinate informazioni in una finestra delle variabili o nella finestra di dialogo Controllo immediato. È possibile immettere una pseudo variabile in modo analogo all'immissione di una variabile normale. Tuttavia, le pseudo variabili non sono variabili e non corrispondono a nomi di variabili presenti nel programma.

Esempio

Si supponga di scrivere un'applicazione in codice nativo e di voler visualizzare il numero di handle allocati nell'applicazione. Nella finestra Espressioni di controllo, è possibile immettere la seguente pseudo variabile nella colonna Nome, quindi premere Invio per valutarla:

$handles

Nel codice nativo è possibile usare gli pseudovariabili illustrati nella tabella seguente:

Pseudo variabile Funzione
$err Visualizza l'ultimo set di valori di errore con la funzione SetLastError. Il valore visualizzato rappresenta ciò che viene restituito dalla funzione GetLastError.

Usare $err,hr per vedere il formato decodificato di questo valore. Ad esempio, se l'ultimo errore era 3, $err,hr visualizza ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Consente di visualizzare il numero di handle allocati nell'applicazione.
$vframe Consente di visualizzare l'indirizzo dello stack frame corrente.
$tid Consente di visualizzare l'ID del thread corrente.
$env Visualizza il blocco di ambiente nel visualizzatore stringhe.
$cmdline Visualizza la stringa della riga di comando che ha avviato il programma.
$pid Indica l'ID del processo.
$registername

or

@registername
Visualizza i contenuti del registro registername.

In genere, è possibile visualizzare il contenuto del registro immettendone semplicemente il nome. È necessario usare questa sintassi unicamente quando il nome del registro esegue l'overload di un nome di variabile. Se il nome del registro è uguale a un nome di variabile nell'ambito corrente, il debugger lo interpreta come nome di variabile. In questo caso, è opportuno usare $registername o @registername.
$clk Consente di visualizzare il tempo in cicli di orologio.
$user Consente di visualizzare una struttura con le informazioni sull'account in cui viene eseguita l'applicazione. Per motivi di sicurezza non vengono visualizzate informazioni sulla password.
$exceptionstack Visualizza la traccia dello stack dell'eccezione corrente di Windows Runtime. $ exceptionstack funziona solo nelle app UWP. $ exceptionstack non è supportato per le eccezioni C++ e SEH
$returnvalue Visualizza il valore restituito di un metodo.

In C# è possibile usare gli pseudovariabili illustrati nella tabella seguente:

Pseudo variabile Funzione
$exception Visualizza informazioni sull'ultima eccezione. Se non si è verificata alcuna eccezione, la valutazione di $exception produce un messaggio di errore.

Quando l'Assistente eccezioni è disabilitato, $exception viene aggiunto automaticamente alla finestra Variabili locali quando si verifica un'eccezione.
$user Consente di visualizzare una struttura con le informazioni sull'account in cui viene eseguita l'applicazione. Per motivi di sicurezza non vengono visualizzate informazioni sulla password.
$returnvalue Visualizza il valore restituito di un metodo .NET.
$threadSmallObjectHeapBytes Visualizza il numero totale di byte allocati nell'heap di oggetti di piccole dimensioni dal thread corrente. (.NET 6+)
$threadUserOldHeapBytes Visualizza il numero totale di byte allocati nell'heap precedente dell'utente dal thread corrente. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+)

In Visual Basic, è possibile usare le pseudo variabili riportate nella tabella seguente:

Pseudo variabile Funzione
$exception Visualizza informazioni sull'ultima eccezione. Se non si è verificata alcuna eccezione, la valutazione di $exception produce un messaggio di errore.
$delete oppure $$delete Elimina una variabile implicita creata nella finestra Immediata. La sintassi è $delete, variabile o$delete, variabile.
$objectids oppure $listobjectids Visualizza tutti gli ID oggetto attivi come figli dell'espressione specificata. La sintassi è $objectid, espressione o$listobjectids, espressione.
$N # Visualizza l'oggetto con ID dell'oggetto uguale a N.
$dynamic Visualizza il nodo Visualizzazione dinamica speciale per un oggetto che implementa IDynamicMetaObjectProvider. Interfaccia. La sintassi è $dynamic, object. Questa funzionalità si applica solo al codice che usa .NET Framework versione 4 o successiva.