Visualizzare il codice disassembly nel debugger di Visual Studio (C#, C++, Visual Basic, F#)

Nella finestra Disassembly viene visualizzato il codice assembly corrispondente alle istruzioni create dal compilatore. Se si esegue il debug di codice gestito, queste istruzioni di assembly corrispondono al codice nativo creato dal compilatore JIT (Just-in-Time), non al linguaggio MSIL (Microsoft Intermediate Language) creato dal compilatore di Visual Studio.

Nota

Per sfruttare al meglio la finestra Disassembly, comprendere o apprendere le nozioni di base della programmazione del linguaggio assembly. Il materiale di riferimento per i set di istruzioni Intel è disponibile nel secondo volume dei manuali dell'architettura. Questo materiale si applica in genere anche ai set di istruzioni AMD.

Questa funzionalità è disponibile solo se è abilitato il debug a livello di indirizzo. Non è disponibile per il debug di script o SQL.

Oltre alle istruzioni in linguaggio assembly, nella finestra Disassembly è possibile visualizzare le informazioni facoltative seguenti:

  • L'indirizzo di memoria in cui si trova ciascuna istruzione. Per le applicazioni native, si tratta dell'indirizzo di memoria effettivo. Per Visual Basic o C#, si tratta di un offset dall'inizio della funzione.

  • Codice sorgente dal quale deriva il codice assembly.

  • Byte di codice, ovvero le rappresentazioni in byte delle istruzioni MSIL o del computer effettivo.

  • Nomi di simboli per gli indirizzi di memoria.

  • Numeri di riga corrispondenti al codice sorgente.

Le istruzioni in linguaggio assembly sono costituite da mnemonic, abbreviazioni per i nomi delle istruzioni e simboli per variabili, registri e costanti. Ogni istruzione del linguaggio del computer è rappresentata da un mnemonico in linguaggio assembly seguito facoltativamente da uno o più simboli.

Il codice assembly si basa principalmente sui registri del processore o, per il codice gestito, i registri di Common Language Runtime. È possibile usare la finestra Disassembly insieme alla finestra Registri , che consente di esaminare il contenuto del registro.

Per visualizzare le istruzioni del codice computer nel formato numerico non elaborato, anziché come linguaggio di assembly, usare la finestra Memoria o selezionare Byte di codice dal menu di scelta rapida nella finestra Disassembly .

Usare la finestra Disassembly

Per abilitare la finestra Disassembly, in Strumenti>Opzioni>debug selezionare Abilita debug a livello di indirizzo.

Per aprire la finestra Disassembly durante il debug, selezionare Disassembly di Windows>o premere ALT+8.

Nota

È possibile che le finestre di dialogo e i comandi di menu visualizzati varino da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti . Per altre informazioni, vedere Reimpostare tutte le impostazioni.

Per attivare o disattivare le informazioni facoltative, fare clic con il pulsante destro del mouse nella finestra Disassembly e impostare o deselezionare le opzioni desiderate nel menu di scelta rapida.

Una freccia gialla nel margine sinistro contrassegna il punto di esecuzione corrente. Per il codice nativo, il punto di esecuzione corrisponde al contatore del programma della CPU. Questo indicatore mostra l'istruzione successiva che verrà eseguita dal programma.

Spostarsi verso l'alto o verso il basso in una pagina di memoria

Quando si visualizza il contenuto della memoria nella finestra Memoria o Disassembly, è possibile utilizzare la barra di scorrimento verticale per spostarsi verso l'alto o verso il basso nello spazio di memoria.

  1. Per spostarsi verso il basso, ossia verso un indirizzo di memoria superiore, fare clic sulla barra di scorrimento verticale sotto la casella di scorrimento.

  2. Per spostarsi verso l'alto, ossia verso un indirizzo di memoria inferiore, fare clic sulla barra di scorrimento verticale sopra la casella di scorrimento.

    La barra di scorrimento verticale presenta un funzionamento particolare. Poiché lo spazio degli indirizzi di un moderno computer è molto ampio, trascinando la casella di scorrimento su una posizione casuale sarebbe facile perderne la posizione. Per questa ragione, la casella di scorrimento è fluttuante e rimane sempre al centro della barra di scorrimento. Nelle applicazioni in codice nativo è possibile spostarsi verso l'alto o verso il basso dello spazio di memoria, ma non è consentito lo scorrimento casuale.

    Nelle applicazioni gestite, il disassembly è limitato a una sola funzione e lo scorrimento della finestra funziona in modo normale.

    Gli indirizzi più alti sono visualizzati nella parte inferiore della finestra. Per visualizzare un indirizzo superiore, spostarsi verso il basso, non verso l'alto.

Spostare verso l'alto o verso il basso un'istruzione

  • Fare clic sulla freccia all'estremità superiore o inferiore della barra di scorrimento verticale.