Eseguire il mapping dei metodi nello stack di chiamate durante il debug in Visual Studio

Creare una mappa del codice per tracciare visivamente lo stack di chiamate durante il debug. È possibile creare note sulla mappa per tenere traccia delle operazioni eseguite dal codice in modo da potersi concentrare sulla ricerca di bug.

Debug con stack di chiamate nelle mappe del codice

Sono necessari gli elementi seguenti:

Mappare lo stack di chiamate

  1. Avviare il debug. (Tastiera: F5)

  2. Dopo che l'app entra in modalità di interruzione o si entra in una funzione, scegliere Mappa codice. (Tastiera: CTRL + Shift + `)

    Scegliere Mappa del Codice per iniziare il mapping dello stack delle chiamate

    Lo stack di chiamate corrente viene visualizzato in arancione su una nuova mappa del codice:

    Vedere stack di chiamate sulla mappa del codice

    La mappa verrà aggiornata automaticamente durante il debug. Vedere Aggiornare la mappa con lo stack di chiamate successivo.

Prendere note sul codice

Aggiungere commenti per tenere traccia di ciò che accade nel codice. Per aggiungere una nuova riga in un commento, premere MAIUSC + Invio.

Aggiungere un commento allo stack di chiamate nella mappa del codice

Aggiornare la mappa con lo stack di chiamate successivo

Esegui l'app fino al punto di interruzione successivo o entra in una funzione. La mappa aggiunge un nuovo stack di chiamate.

Aggiornare la mappa del codice con lo stack di chiamate successivo

Aggiungere codice correlato alla mappa

Ora hai una mappa, cosa succede? Se si usa C# o Visual Basic, aggiungere elementi, ad esempio campi, proprietà e altri metodi, per tenere traccia di ciò che accade nel codice.

Fare doppio clic su un metodo per visualizzarne la definizione di codice oppure usare il menu di scelta rapida per il metodo . (Tastiera: selezionare il metodo sulla mappa e premere F12)

Passare alla definizione del codice per un metodo sulla mappa del codice

Aggiungere gli elementi da tenere traccia sulla mappa.

Visualizzare i campi di un metodo nella mappa del codice dello stack delle chiamate

Annotazioni

Per impostazione predefinita, l'aggiunta di elementi alla mappa aggiunge anche i nodi del gruppo padre, ad esempio la classe, lo spazio dei nomi e l'assembly. Sebbene ciò sia utile, è possibile mantenere la mappa semplice disattivando questa funzionalità usando il pulsante Includi genitori sulla barra degli strumenti della mappa o premendo CTRL quando si aggiungono elementi.

Campi correlati a un metodo sulla mappa del codice dello stack di chiamate

Qui è possibile vedere facilmente quali metodi usano gli stessi campi. Gli elementi aggiunti più di recente vengono visualizzati in verde.

Continuare a compilare la mappa per visualizzare altro codice.

Vedere i metodi che usano un campo: mappa del codice dello stack di chiamate

Metodi che usano un campo nella mappa del codice dello stack di chiamate

Trovare bug usando la mappa

La visualizzazione del codice consente di trovare i bug più velocemente. Si supponga, ad esempio, di analizzare un bug in un programma di disegno. Quando si disegna una linea e si tenta di annullarlo, non succede nulla finché non si disegna un'altra linea.

È quindi possibile impostare i punti di interruzione nei clearmetodi , undoe Repaint , avviare il debug e compilare una mappa simile alla seguente:

Aggiungi un altro stack di chiamate alla mappa del codice

Notate che tutti i gesti dell'utente sulla mappa chiamano Repaint, ad eccezione di undo. Questo potrebbe spiegare perché undo non funziona immediatamente.

Dopo aver corretto il bug e aver continuato a eseguire il programma, la mappa aggiunge la nuova chiamata da undo a Repaint:

Aggiungere una nuova chiamata al metodo allo stack di chiamate nella mappa del codice

Domande e risposte

  • Non tutte le chiamate vengono visualizzate sulla mappa. Why?

    Per impostazione predefinita, sulla mappa viene visualizzato solo il codice personalizzato. Per visualizzare il codice esterno, attivarlo nella finestra Stack di chiamate :

    Visualizzare il codice esterno usando la finestra Stack di chiamate

    o disattiva Abilita Just My Code nelle opzioni di debug di Visual Studio:

    Mostra codice esterno tramite la finestra di dialogo Opzioni

  • La modifica della mappa influisce sul codice?

    La modifica della mappa non influisce sul codice in alcun modo. È possibile rinominare, spostare o rimuovere elementi sulla mappa.

  • Cosa significa questo messaggio: "Il diagramma può essere basato su una versione precedente del codice"?

    Il codice potrebbe essere stato modificato dopo l'ultimo aggiornamento della mappa. Ad esempio, una chiamata sulla mappa potrebbe non esistere più nel codice. Chiudere il messaggio, quindi provare a ricompilare la soluzione prima di aggiornare nuovamente la mappa.

  • Come si controlla il layout della mappa?

    Aprire il menu Layout sulla barra degli strumenti della mappa:

    • Modificare il layout predefinito.

    • Per interrompere la riorganizzazione automatica della mappa, disattivare Layout automatico durante il debug.

    • Per riorganizzare la mappa il meno possibile quando si aggiungono elementi, disattivare Il layout incrementale.

  • Posso condividere la mappa con altri utenti?

    È possibile esportare la mappa, inviarla ad altri utenti se si dispone di Microsoft Outlook o salvarla nella soluzione in modo da poterla archiviare nel controllo del codice sorgente.

    Condividere la mappa del codice dello stack di chiamate con altri utenti

  • Come si impedisce alla mappa di aggiungere automaticamente nuovi stack di chiamate?

    Scegli Pulsante - Mostra automaticamente lo stack di chiamate sulla mappa del codice sulla barra degli strumenti della mappa. Per aggiungere manualmente lo stack di chiamate corrente alla mappa, premere CTRL + MAIUSC + `.

    La mappa continuerà a evidenziare gli stack di chiamate esistenti sulla mappa durante il debug.

  • Cosa significano le icone e le frecce degli elementi?

    Per ottenere ulteriori informazioni su un elemento, spostare il puntatore del mouse su di esso e consultare la descrizione comando dell'elemento. È anche possibile esaminare legenda per scoprire cosa significa ogni icona.

    Cosa significano le icone sulla mappa del codice dello stack di chiamate?

    See:

  • Eseguire il mapping dello stack di chiamate

  • Prendere note sul codice

  • Aggiornare la mappa con lo stack di chiamate successivo

  • Aggiungere codice correlato alla mappa

  • Trovare bug usando la mappa