Condividi tramite


Visualizzare lo stack di chiamate e usare la finestra Stack di chiamate nel debugger

Tramite la finestra Stack di chiamate è possibile visualizzare le chiamate di funzione o di routine attualmente presenti nello stack. La finestra Stack di chiamate visualizza l'ordine in cui vengono chiamati metodi e funzioni. Lo stack di chiamate è un ottimo modo per esaminare e comprendere il flusso di esecuzione di un'app.

Quando i simboli di debug non sono disponibili per parte di uno stack di chiamate, la finestra Stack di chiamate potrebbe non essere in grado di visualizzare informazioni corrette per tale parte dello stack di chiamate, visualizzando invece:

[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]

Nota

Le finestre di dialogo e i comandi di menu visualizzati potrebbero essere diversi da quelli descritti nella presente Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Vedere Reimpostare tutte le impostazioni. La finestra Stack di chiamate è simile alla prospettiva di debug di alcuni IDE come Eclipse.

Visualizzare lo stack di chiamate nel debugger

Durante il debug, nel menu Debug selezionare Stack di chiamate di Windows > o premerealtCctrl++ .

Screenshot showing the Call Stack Window. Una freccia identifica il frame dello stack in cui si trova il puntatore di esecuzione. Per impostazione predefinita, le informazioni di questo stack frame vengono visualizzate nelle finestre di origine, Variabili locali, Auto, Espressioni di controllo e Disassembly . Per modificare il contesto del debugger in un altro frame nello stack, passare a un altro stack frame.

Screenshot showing the Call Stack Window.

Lo stack frame in cui è attualmente posizionato il puntatore di esecuzione è contraddistinto da una freccia gialla. Per impostazione predefinita, le informazioni di questo stack frame vengono visualizzate nelle finestre di origine, Variabili locali, Auto, Espressioni di controllo e Disassembly . Per modificare il contesto del debugger in un altro frame nello stack, passare a un altro stack frame.

È anche possibile visualizzare i frame dello stack di eccezioni nello stack di chiamate durante il debug. Per altre informazioni, vedere Visualizzare lo stack di chiamate nell'helper eccezioni.

Visualizzare il codice non utente nella finestra Stack di chiamate

Per visualizzare il codice esterno o non utente, fare clic con il pulsante destro del mouse sulla finestra Stack di chiamate e scegliere Mostra codice esterno.

Per visualizzare il codice esterno o non utente, attivare o disattivare il pulsante Mostra codice esterno dalla barra degli strumenti dello stack di chiamate oppure fare clic con il pulsante destro del mouse sulla finestra Stack di chiamate e selezionare Mostra codice esterno.

Il codice non utente è qualsiasi codice non visualizzato quando Just My Code è abilitato. Nel codice gestito, i frame di codice non utente sono nascosti per impostazione predefinita. Al posto dei frame di codice non utente viene visualizzata la notazione seguente:

[<External Code>]

Passare a un altro stack frame (modificare il contesto del debugger)

  1. Nella finestra Stack di chiamate fare clic con il pulsante destro del mouse sul frame dello stack il cui codice e i dati da visualizzare.

    In alternativa, è possibile fare doppio clic su un frame nella finestra Stack di chiamate per passare a tale frame.

  2. Selezionare Passa al frame.

    Accanto al frame dello stack selezionato viene visualizzata una freccia verde con una coda riccia. Il puntatore di esecuzione rimarrà nel frame originale, sempre contrassegnato dalla freccia gialla. Se si sceglie Esegui o Continua dal menu Debug, l'esecuzione continuerà nel frame originale, non nel frame selezionato.

Attivare o disattivare il pulsante Visualizza tutti i thread per visualizzare tutti i thread correlati nella finestra Stack parallelo.

È possibile cercare frame di stack di chiamate pertinenti digitando i termini di ricerca pertinenti nella casella di ricerca che si trova nell'angolo superiore sinistro della finestra dello stack di chiamate. I frame dello stack di chiamate pertinenti verranno evidenziati.

Visualizzare il codice sorgente per una funzione nello stack di chiamate

Nella finestra Stack di chiamate fare clic con il pulsante destro del mouse sulla funzione della quale si vuole esaminare il codice sorgente e selezionare Vai a codice sorgente.

Eseguire in una funzione specifica dalla finestra Stack di chiamate

Nella finestra Stack di chiamate selezionare la funzione, fare clic con il pulsante destro del mouse e quindi scegliere Esegui in cursore.

Impostare un punto di interruzione nel punto di uscita di una chiamata di funzione

Vedere Impostare un punto di interruzione in una funzione dello stack di chiamate.

Visualizzare le chiamate da o verso un altro thread

Fare clic con il pulsante destro del mouse sulla finestra Stack di chiamate e selezionare Includi chiamate da e verso altri thread.

Traccia visivamente lo stack di chiamate

In Visual Studio Enterprise (solo) è possibile visualizzare le mappe del codice per lo stack di chiamate durante il debug.

Nella finestra Stack di chiamate aprire il menu di scelta rapida. Scegliere Mostra stack di chiamate sulla mappa del codice (CTRL + MAIUSC). + `

Per altre informazioni, vedere Eseguire il mapping dei metodi nello stack di chiamate durante il debug.

Show Call Stack on Code Map

Visualizzare il codice disassembly per una funzione nello stack di chiamate (C#, C++, Visual Basic, F#)

Nella finestra Stack di chiamate fare clic con il pulsante destro del mouse sulla funzione della quale si desidera esaminare il codice del disassembly e selezionare Vai a disassembly.

Modificare le informazioni facoltative visualizzate

Fare clic con il pulsante destro del mouse nella finestra Stack di chiamate e impostare o deselezionare Mostra <le informazioni desiderate>.

Codice esterno .NET autodecompile

A partire da Visual Studio 2022 versione 17.7, è possibile modificare automaticamente il codice .NET facendo doppio clic su codice esterno nella finestra Stack di chiamate. Per altre informazioni, vedere Generare codice sorgente da assembly .NET durante il debug.

Caricare i simboli per un modulo (C#, C++, Visual Basic, F#)

Nella finestra Stack di chiamate è possibile caricare i simboli di debug per il codice che non dispone attualmente di simboli caricati. Questi simboli possono essere .NET o simboli di sistema scaricati dai server di simboli pubblici Microsoft o simboli in un percorso di simboli nel computer di cui si sta eseguendo il debug.

Vedere Specificare file di simboli (con estensione pdb) e di origine.

Per caricare i simboli

  1. Nella finestra Stack di chiamate fare clic con il pulsante destro del mouse sul frame dello stack per cui i simboli non vengono caricati. Il frame verrà disattivato (rappresentato in grigio).

  2. Scegliere Carica simboli e quindi selezionare Server simboli Microsoft (se disponibile) o passare al percorso del simbolo.

Per impostare il percorso dei simboli

  1. Nella finestra Stack di chiamate scegliere Impostazioni simboli nel menu di scelta rapida.

    Viene visualizzata la finestra di dialogo Opzioni con la pagina Simboli.

  2. Selezionare Simbolo Impostazioni.

  3. Nella finestra di dialogo Opzioni fare clic sull'icona della cartella.

    Viene visualizzato un cursore nella casella Percorsi dei file di simboli (pdb).

  4. Immettere un percorso di directory nel percorso del simbolo nel computer di cui si sta eseguendo il debug. Per il debug locale e remoto, si tratta di un percorso nel computer locale.

  5. Selezionare OK per chiudere la finestra di dialogo Opzioni .