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. |
$ registernameor @ 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. |