Condividi tramite


Accesso alla memoria per indirizzo virtuale

Per accedere agli indirizzi di memoria o agli intervalli di indirizzi, è possibile usare diversi comandi. Visual Studio e WinDbg forniscono elementi dell'interfaccia utente (nonché comandi) che è possibile usare per visualizzare e modificare la memoria. Per altre informazioni, vedere Visualizzazione e modifica della memoria in WinDbg (versione classica).

I comandi seguenti possono leggere o scrivere memoria in un'ampia gamma di formati. Questi formati includono byte esadecimali, parole (parole, parole doppie e quad-words), interi (numeri interi brevi, lunghi e quad e interi senza segno), numeri a virgola mobile (10 byte, 16 byte, 32 byte e numeri reali a 64 byte) e caratteri ASCII.

  • Il comando d* (Display Memory) visualizza il contenuto di un indirizzo o un intervallo di memoria specificato.

  • Il comando e* (Enter Values) scrive un valore nell'indirizzo di memoria specificato.

È possibile usare i comandi seguenti per gestire tipi di dati più specializzati:

  • Il comando dt (Tipo di visualizzazione) trova un'ampia gamma di tipi di dati e visualizza le strutture di dati create dall'applicazione di cui viene eseguito il debug. Questo comando è altamente versatile e ha molte varianti e opzioni.

  • Il comando ds, dS (Display String) visualizza una struttura di dati STRING, ANSI_STRING o UNICODE_STRING.

  • Le tracce del comando dl (Visualizza elenco collegato) e visualizzano un elenco collegato.

  • Il comando d*s (Visualizza parole e simboli) trova parole doppie o quad-words che potrebbero contenere informazioni sui simboli e quindi visualizza i dati e le informazioni sul simbolo.

  • Il comando !address extension visualizza informazioni sulle proprietà della memoria che si trova in un indirizzo specifico.

È possibile usare i comandi seguenti per modificare gli intervalli di memoria:

  • Il comando m (Sposta memoria) sposta il contenuto di un intervallo di memoria in un altro.

  • Il comando f (Fill Memory) scrive un criterio in un intervallo di memoria, ripetendolo fino a quando l'intervallo non è pieno.

  • Il comando c (Confronta memoria) confronta il contenuto di due intervalli di memoria.

  • Il comando s (Search Memory) cerca un criterio specificato all'interno di un intervallo di memoria o cerca eventuali caratteri ASCII o Unicode presenti in un intervallo di memoria.

  • Il comando holdmem (Hold and Compare Memory) confronta un intervallo di memoria con un altro.

Nella maggior parte dei casi, questi comandi interpretano i relativi parametri nel radix corrente. Pertanto, è necessario aggiungere 0x prima degli indirizzi esadecimali se il radix corrente non è 16. Tuttavia, l'output di visualizzazione di questi comandi è in genere in formato esadecimale, indipendentemente dal radix corrente. Per altre informazioni sull'output, vedere i singoli argomenti relativi ai comandi. Nella finestra Memoria vengono visualizzati numeri interi e numeri reali in formato decimale e vengono visualizzati altri formati in formato esadecimale.

Per modificare il radix predefinito, usare il comando n (Set Number Base). Per convertire rapidamente i numeri da una base a un'altra, usare ? (Espressione di valutazione) comando o il comando .formats (Mostra formati numero).

Quando si esegue il debug in modalità utente, il significato degli indirizzi virtuali è determinato dal processo corrente. Quando si esegue il debug in modalità kernel, il significato degli indirizzi virtuali può essere controllato dal debugger. Per altre informazioni, vedere Contesto del processo.