Uso della finestra di osservazione - WinDbg (classica)

Nella finestra di monitoraggio vengono visualizzate informazioni sulle variabili globali, sulle variabili locali e sui registri. È possibile personalizzare questa finestra per visualizzare gli elementi monitorati.

Apertura della finestra di controllo

Per aprire o passare alla finestra Watch, nella finestra WinDbg, scegliere Watch dal menu Visualizza.

È anche possibile premere ALT+2 o fare clic sul pulsante Espressione di controllo (ALT+2) sulla barra degli strumenti: Screenshot del pulsante Espressione di controllo sulla barra degli strumenti.

ALT+MAIUSC+2 chiude la finestra Osservazione.

La schermata seguente mostra un esempio di finestra Osservazione.

Screenshot di una finestra di osservazione di esempio in WinDbg.

La finestra Osservazione può contenere quattro colonne. Le colonne Nome e Valore vengono sempre visualizzate e le colonne Tipo e Posizione sono facoltative. Per visualizzare le colonne Tipo e Posizione , fare clic rispettivamente sui pulsanti Typecast e Locations sulla barra degli strumenti.

Nella finestra di monitoraggio, è possibile eseguire le seguenti operazioni:

  • Per aggiungere una variabile alla finestra di controllo delle variabili, selezionare la prima cella vuota nella colonna Nome, digitare il nome della variabile e quindi premere INVIO. Separare il nome del modulo dalla variabile con un punto esclamativo (!). Se non si specifica un modulo, viene usato il modulo corrente. Per immettere un indirizzo nel campo Nome , l'indirizzo deve iniziare con una cifra decimale (se necessario, usare il prefisso 0x).

    Se il nome della variabile immesso è definito nell'ambito della funzione corrente, il relativo valore viene visualizzato nella colonna Valore . Se non è definita, nella colonna Valoreviene visualizzato "Errore: Impossibile ottenere il valore".

    Anche se una variabile non è definita, può essere utile aggiungerla alla finestra Espressione di controllo. Se il contatore del programma immette una funzione in cui viene definita una variabile di questo nome, il relativo valore viene visualizzato nella finestra in quel momento.

  • Per rimuovere una variabile dalla finestra Osserva, fare doppio-clic sul nome, premere CANC e quindi premere INVIO. È anche possibile sostituire un nome precedente con un nuovo nome facendo doppio clic sul nome precedente, digitando il nuovo nome e quindi premendo INVIO.

  • Se una variabile è una struttura di dati, accanto al nome viene visualizzata una casella di controllo. Per espandere e comprimere la visualizzazione dei membri della struttura, selezionare o deselezionare la casella di controllo.

  • I numeri interi di tipo int vengono visualizzati come valori decimali; I numeri interi di tipo UINT vengono visualizzati nel file radix corrente. Per modificare la radice corrente, usare il comando n (Imposta base numeri) nella finestra di comando del debugger.

  • Per modificare il valore di una variabile locale, fare doppio clic sulla cella Value . Immettere il nuovo valore o modificare il valore precedente. I comandi taglia, copia e incolla sono disponibili per la modifica. Il valore immesso può includere qualsiasi espressione C++. Dopo aver immesso un nuovo valore o modificato il valore precedente, è possibile premere INVIO per archiviare il nuovo valore o premere ESC per rimuoverlo. Se si invia un valore non valido, il valore precedente verrà nuovamente visualizzato dopo aver premuto INVIO.

    I numeri interi di tipo int vengono visualizzati come valori decimali; I numeri interi di tipo UINT vengono visualizzati nel file radix corrente. Per modificare la radice corrente, usare il comando n (Imposta base numeri) nella finestra di comando del debugger.

  • La colonna Tipo (se visualizzata nella finestra di controllo) mostra il tipo di dati corrente di ogni variabile. Ogni variabile viene visualizzata nel formato appropriato per il proprio tipo di dati. Le strutture di dati hanno i relativi nomi di tipo nella colonna Tipo . Altri tipi di variabile visualizzano "Enter new type" in questa colonna.

    Se si fa doppio clic su "Enter new type", è possibile eseguire il cast del tipo immettendo un nuovo tipo di dati. Questo cast modifica la visualizzazione corrente di questa variabile solo nella finestra Osservazione; non cambia nulla nel debugger o nel computer di destinazione. Inoltre, se si immette un nuovo valore nella colonna Valore , il testo immesso verrà analizzato in base al tipo effettivo del simbolo, anziché a qualsiasi nuovo tipo immesso nella colonna Tipo . Se si chiude e si riapre la finestra di controllo, si perderanno le modifiche al tipo di dati.

    È anche possibile immettere un comando di estensione nella colonna Tipo . Il debugger passerà l'indirizzo del simbolo a questa estensione e mostrerà l'output risultante in una serie di righe comprimibili sotto la riga corrente. Ad esempio, se il simbolo in questa riga è un indirizzo valido per un blocco di ambiente thread, è possibile immettere !teb nella colonna Tipo per eseguire l'estensione !teb nell'indirizzo di questo simbolo.

  • La colonna Posizione (se visualizzata nella finestra di controllo) mostra l'offset di ogni membro di una struttura dati.

  • Oltre alle variabili, puoi anche monitorare i seguenti elementi nella finestra di ispezione:

    • Registri. Quando aggiungi un registro alla finestra Controllo, anteponi al suo nome il simbolo [@] (@). A differenza delle variabili, non è possibile modificare i valori dei registri tramite la finestra di osservazione.
    • Vtable che contengono puntatori di funzione. Quando una tabella virtuale compare nella finestra di controllo, puoi esplorare le voci delle funzioni nella tabella. Se una tabella Vtable è contenuta in una classe base che punta a un'implementazione derivata, la notazione _vtcast_Class viene visualizzata per indicare i membri aggiunti a causa della classe derivata. Questi membri si espandono come il tipo di classe derivata.
    • Valori restituiti delle funzioni di estensione, ad esempio _EFN_GetPoolData.

A differenza della finestra Variabili locali, la finestra Controllo non è influenzata dalle modifiche apportate al contesto del registro. Nella finestra di controllo è possibile visualizzare e modificare solo le variabili definite nell'ambito del contatore del programma corrente.

Se si apre una nuova area di lavoro, il contenuto della finestra di controllo viene rimosso e sostituito con quello nella nuova area di lavoro.

Barra degli strumenti e menu di scelta rapida

La finestra Osservazione include una barra degli strumenti che contiene due pulsanti (Typecast e Posizioni) e un menu di scelta rapida con comandi aggiuntivi. Per accedere al menu, fare clic con il pulsante destro del mouse sulla barra del titolo della finestra o fare clic sull'icona accanto all'angolo superiore destro della finestra: Screenshot dell'icona del pulsante per accedere al menu di scelta rapida della finestra di controllo Watch.

La barra degli strumenti e il menu contengono i pulsanti e i comandi seguenti:

  • (Barra degli strumenti e menu) Typecast attiva e disattiva la visualizzazione della colonna Tipo .

  • (Barra degli strumenti e menu) Le posizioni attivano e disattivano la visualizzazione della colonna Posizione .

  • (solo menu) Visualizza i valori a 16 bit come Unicode visualizza le stringhe Unicode in questa finestra. Questo comando attiva e disattiva un'impostazione globale che influisce sulla finestra Variabili locali, sulla finestra Osserva e sull'output dal comando del debugger. Questo comando equivale a usare il comando .enable_unicode (Abilita visualizzazione Unicode).

  • (solo menu) Visualizza sempre i numeri nel formato radix predefinito fa sì che i numeri interi vengano visualizzati nel formato radix predefinito anziché sempre visualizzarli in formato decimale. Questo comando attiva e disattiva un'impostazione globale che influisce sulla finestra Variabili locali, sulla finestra Osserva e sull'output dei comandi del debugger. Questo comando equivale a usare il comando .force_radix_output (Usare Radix per integer).

    Nota Il comando Visualizza sempre i numeri nel comando radix predefinito non influisce sui numeri interi lunghi. I numeri interi lunghi vengono visualizzati in formato decimale, a meno che non venga usato il comando .enable_long_status (Abilita visualizzazione intero lungo). Il comando .enable_long_status influisce sulla visualizzazione nella finestra Variabili locali, nella finestra di controllo e nella finestra dell'output del comando del debugger. Non esiste alcun equivalente per questo comando nel menu nella finestra di monitoraggio.

  • (solo menu) Aprire la finestra memoria per il valore selezionato apre una nuova finestra Memoria ancorata che visualizza la memoria a partire dall'indirizzo dell'espressione selezionata.

  • (solo menu) Richiamare dt per il valore di memoria selezionato esegue il comando dt (Tipo di visualizzazione) con il simbolo selezionato come parametro. Il risultato viene visualizzato nella finestra Di comando del debugger. L'opzione -n viene usata automaticamente per distinguere il simbolo da un indirizzo esadecimale. Non vengono usate altre opzioni. Si noti che il contenuto prodotto usando questa selezione di menu è identico al contenuto prodotto durante l'esecuzione del comando dt dalla riga di comando, ma il formato è leggermente diverso.

  • (solo menu) La barra degli strumenti attiva e disattiva la barra degli strumenti.

  • (solo menu) Dock o Undock fa sì che la finestra entri o lasci lo stato ancorato.

  • (solo menu) Passare a un nuovo dock chiude la finestra Watch e la apre in un nuovo dock.

  • (solo menu) Imposta come destinazione per il tipo di finestra non è disponibile per la Watch window. Questa opzione è disponibile solo per le finestre Origine o Memoria .

  • (solo menu) Sempre flottante fa sì che la finestra rimanga fluttuante anche se viene trascinata in una posizione di docking.

  • (Solo menu) Lo spostamento con frame causa lo spostamento della finestra quando il frame WinDbg viene spostato, anche se la finestra è sganciata.

  • (solo menu) La Guida apre questo argomento nella documentazione relativa agli strumenti di debug per Windows.

  • (solo menu) Chiudi chiude questa finestra.

Vedere anche

Per altre informazioni sul controllo delle variabili e sulla descrizione di altri comandi correlati alla memoria, vedere Lettura e scrittura di memoria. Per altre informazioni sui registri e sulla relativa manipolazione, vedere Visualizzazione e modifica dei registri in WinDbg (versione classica).