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

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

Quando 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 qui, a seconda delle impostazioni o dell'edizione attiva. Per modificare le impostazioni, selezionare Importa/Esporta impostazioni nel menu Strumenti. Consulta Reimposta tutte le impostazioni. La finestra stack di chiamate è simile alla prospettiva debug in alcuni IDE come Eclipse.

Visualizzare lo stack di chiamate nel debugger

Durante il debug, nel menu Debug selezionare Windows > Stack di chiamate o premere ctrl+alt+C.

Screenshot che mostra la finestra Call Stack. Una freccia identifica il frame dello stack in cui si trova attualmente il puntatore di esecuzione. Per impostazione predefinita, le informazioni di questo stack frame vengono visualizzate nella sorgente, Variabili locali, Variabili automatiche, Osservazione, e nelle finestre Disassembly. Per modificare il contesto del debugger in un altro frame dello stack, passare a un altro frame dello stack.

Screenshot che mostra la finestra Call Stack.

Una freccia gialla identifica il frame dello stack in cui si trova il puntatore di esecuzione. Per impostazione predefinita, le informazioni di questo stack frame vengono visualizzate nell'origine, Variabili locali, Variabili automatiche, Espressione di controlloe finestre di disassemblaggio . Per modificare il contesto del debugger in un altro frame dello stack, passare a un altro frame nello stack.

È anche possibile visualizzare i frame dello stack di eccezioni nello stack di chiamate durante il processo di debug. Per ulteriori informazioni, vedere Visualizza lo stack delle chiamate nel 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 selezionare Mostra codice esterno.

Per visualizzare il codice esterno o non utente, usa il pulsante Mostra codice esterno della barra degli strumenti dello stack di chiamate oppure fai clic con il pulsante destro del mouse sulla finestra stack di chiamate e seleziona Mostra codice esterno.

Il codice non utente è qualsiasi codice che non viene visualizzato quando è abilitata la Just My Code. 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 dello stack di chiamate , fare clic con il pulsante destro del mouse sul frame dello stack di cui si desidera visualizzare il codice e i dati.

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

  2. Selezionare e Passa a Frame.

    Accanto al frame dello stack selezionato viene visualizzata una freccia verde con una coda riccia. Il puntatore di esecuzione rimane nel frame originale, ancora contrassegnato con la freccia gialla. Se si seleziona passaggio o Continua dal menu Debug, l'esecuzione continuerà nel frame originale e non nel frame selezionato.

Attivare il pulsante Visualizza per vedere 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 il cui codice sorgente si vuole visualizzare e selezionare Vai al codice sorgente.

Accedere a una funzione specifica dalla finestra dello Stack di chiamate

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

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

Vedi Imposta un punto di interruzione nella 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 a/Da 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 Show Call Stack on Code Map (CTRL + MAIUSC + `).

Per altre informazioni, vedere metodi map 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 il cui codice disassembly si vuole visualizzare e selezionare Vai a disassembly.

Modificare le informazioni facoltative visualizzate

Fare clic con il pulsante destro del mouse nella finestra stack di chiamate e imposta o deseleziona Mostra <le informazioni che desideri>.

Autodecompilare il codice esterno .NET

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 ulteriori informazioni, vedere Generazione del 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 attualmente non dispone 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 il simbolo (con estensione pdb) e i file 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 fotogramma verrà oscurato.

  2. Indicare Carica Simboli e quindi selezionare Server di Simboli Microsoft (se disponibile) o sfogliare al percorso del simbolo.

Per impostare il percorso del simbolo

  1. Nella finestra Call Stack, scegliere Impostazioni simboli dal menu di scelta rapida.

    Si aprirà la finestra di dialogo Opzioni e verrà visualizzata la pagina Simboli .

  2. Selezionare impostazioni simbolo .

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

    Nella casella file simbolo (con estensione pdb) viene visualizzato un cursore.

  4. Immettere un percorso di directory fino alla posizione del simbolo sul computer che si sta sottoponendo a 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 .