Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo si apprenderà come eseguire il debug in modo più efficiente usando GitHub Copilot. Copilot può fornire correzioni del codice insieme ad analisi approfondite e spiegazioni sul funzionamento del codice. Consente di risolvere i bug proposti e spiega elementi come le eccezioni. Copilot comprende gli stack di chiamate, i frame, i nomi delle variabili e i valori. Di conseguenza, è possibile interagire con l'intelligenza artificiale compatibile con il debugger per porre domande dettagliate relative al codice e al debug dei problemi in generale.
Inoltre, Copilot fornisce informazioni più precise per alcuni scenari mirati, ad esempio eccezioni e tutti quelli descritti in scenari migliorati dall'IA per il debugging. Nella maggior parte di questi scenari, cercare il pulsante Chiedi a Copilot
o Analizza con il pulsante Copilot. In questi scenari, Copilot conosce già il contesto per le domande.
Per altre informazioni sui completamenti di GitHub Copilot in Visual Studio, vedere Informazioni sui completamenti GitHub Copilot in Visual Studio.
Prerequisiti
Per iniziare, è necessario:
Visual Studio 2022 version 17.8 o versione successiva
Accedere a Visual Studio utilizzando un account GitHub con accesso a Copilot
** È possibile usare GitHub Copilot gratuitamente. Iscriversi e sfruttare l'intelligenza artificiale per scrivere codice in modo più rapido ed efficiente.Nota
Se si verificano problemi di autenticazione dopo l'installazione dell'estensione, vedere Problemi di autenticazione con GitHub Copilot Chat.
Scenari avanzati dell'intelligenza artificiale
Copilot comprende gli stack di chiamate, i frame, i nomi delle variabili e i valori. Di conseguenza, è possibile interagire con l'intelligenza artificiale compatibile con il debugger per porre domande dettagliate relative al codice e al debug dei problemi in generale.
Inoltre, Copilot fornisce informazioni più precise per alcuni scenari di destinazione, ad esempio quelli descritti nella tabella seguente.
| Funzionalità o scenario | Collegamento |
|---|---|
| Agente debugger | Consultare la risoluzione dei bug con il Debugger Agent in questo articolo. Flusso di lavoro agente end-to-end che riproduce bug, instrumenta l'app e convalida le correzioni usando i dati di runtime in tempo reale. |
| Analisi dello stack di chiamate | Vedi Analizza lo stack di chiamate con Copilot. Ottieni un'analisi con un clic delle attività del thread, comprese le spiegazioni sul flusso asincrono. |
| Eccezioni | Consulta Debug un'eccezione con Copilot in questo articolo. L'aiuto per le eccezioni include aiuto per gli errori di rilevamento dei deadlock. |
| Variabili | Vedere Ottenere assistenza per l'intelligenza artificiale. |
| Analisi delle query LINQ | Passare il puntatore del mouse sulle query LINQ durante il debug nell'editor di codice per visualizzare il valore restituito. Selezionare il pulsante Analyze con Copilot per l'assistenza per intelligenza artificiale. Consulta i valori restituiti delle query LINQ. |
| Suggerimenti per i dati | Consulta Ottieni assistenza AI con suggerimenti sui dati. |
| Punti di interruzione condizionali e punti di traccia | Consulta Ottenere suggerimenti con punti di interruzione condizionali e punti di traccia in questo articolo. |
| Azioni rapide (lampadina) | Consulta Ottieni assistenza con azioni rapide per l'IA. |
| Visualizzatore tabulare IEnumerable | Vedere Ottenere assistenza per l'intelligenza artificiale. |
| Valori restituiti in linea | Vedere Visualizzare i valori restituiti delle chiamate ai metodi. |
| Valori inline | Consultare Visualizza i valori inline. |
| Debug multithreading | Consulta Ottieni assistenza con l'intelligenza artificiale nella visualizzazione dei thread. |
| Test unitario | Consulta Ottenere assistenza dall'intelligenza artificiale per il debug dei test |
| Esaminare le eccezioni con il contesto del repository | Consulta Ottieni assistenza AI nel contesto del repository |
| Risoluzione dei problemi relativi ai punti di interruzione | Vedere Ottenere assistenza per l'intelligenza artificiale. |
| Funzionalità o scenario | Collegamento |
|---|---|
| Analisi dello stack di chiamate | Vedi Analizzare lo stack delle chiamate con Copilot. Ottieni un'analisi con un clic delle attività del thread, comprese le spiegazioni sul flusso asincrono. |
| Eccezioni | Consulta Debug un'eccezione con Copilot in questo articolo. L'aiuto per le eccezioni include aiuto per gli errori di rilevamento dei deadlock. |
| Variabili | Vedere Ottenere assistenza per l'intelligenza artificiale. |
| Analisi delle query LINQ | Passare il puntatore del mouse sulle query LINQ durante il debug nell'editor di codice per visualizzare il valore restituito. Selezionare il pulsante Analyze con Copilot per l'assistenza per intelligenza artificiale. Consulta i valori restituiti delle query LINQ. |
| Suggerimenti per i dati | Consulta Ottieni assistenza AI con suggerimenti sui dati. |
| Punti di interruzione condizionali e punti di traccia | Consulta Ottenere suggerimenti con punti di interruzione condizionali e punti di traccia in questo articolo. |
| Azioni rapide (lampadina) | Consulta Ottieni assistenza con azioni rapide per l'IA. |
| Visualizzatore tabulare IEnumerable | Vedere Ottenere assistenza per l'intelligenza artificiale. |
| Valori restituiti in linea | Vedere Visualizzare i valori restituiti delle chiamate ai metodi. |
| Valori inline | Consultare Visualizza i valori inline. |
| Debug multithreading | Consulta Ottieni assistenza con l'intelligenza artificiale nella visualizzazione dei thread. |
| Test unitario | Consulta Ottenere assistenza dall'intelligenza artificiale per il debug dei test |
| Esaminare le eccezioni con il contesto del repository | Consulta Ottieni assistenza AI nel contesto del repository |
| Risoluzione dei problemi relativi ai punti di interruzione | Vedere Ottenere assistenza per l'intelligenza artificiale. |
Nella maggior parte di questi scenari si ottiene assistenza mirata usando il pulsante Chiedi a Copilot
o Analizza con Copilot. Copilot conosce già il contesto per le domande. Ad esempio, conosce lo stack di chiamate corrente, la riga di codice che si sta chiedendo e il nome dell'eccezione (se si è verificato), quindi non è necessario fornire il contesto in chat. Copilot fornisce anche suggerimenti per l'uso di punti di interruzione condizionali e punti di traccia.
Eseguire il debug con Copilot
L'esempio semplice seguente illustra come ottenere assistenza per l'intelligenza artificiale usando la visualizzazione Chat inline.
Nota
È anche possibile ottenere assistenza usando la finestra chat separata selezionando View > GitHub Copilot Chat. Per ulteriori informazioni, vedere Che cos'è l'estensione GitHub Copilot Chat per Visual Studio?.
Avviare una sessione di debug
In Visual Studio creare una nuova app console C#.
Nella finestra iniziale scegliere Crea un nuovo progetto. Digitare console nella casella di ricerca selezionare C# come lingua e quindi scegliere Console App per .NET. Scegliere Avanti. Digitare un nome di progetto come ConsoleApp_Copilot e selezionare Avanti.
Scegliere il framework di destinazione consigliato o .NET 10 e quindi scegliere Crea.
Se non viene visualizzato il modello di progetto Console App per .NET, passare a Tools>Get Tools and Features, che apre il programma di installazione di Visual Studio. Scegliere il workload .NET sviluppo desktop, quindi scegliere Modifica.
Visual Studio crea il progetto console visualizzato in Esplora soluzioni nel riquadro destro.
Sostituire il codice in Program.cs con il codice seguente:
using System; using System.Collections.Generic; public class Example { public static void Main(string[] args) { int value = Int32.Parse(args[0]); List<String> names = null; if (value > 0) names = new List<String>(); names.Add("Major Major Major"); } }Fare clic con il pulsante destro del mouse sull'istruzione seguente e scegliere punto di interruzione>Inserisci punto di interruzione.
int value = Int32.Parse(args[0]);Premere F5 oppure selezionare Avvia debug dal menu Debug.
L'app viene sospesa in corrispondenza del punto di interruzione. La finestra Auto mostra che la variabile args ha un valore di
string[0].
- Fare clic con il pulsante destro del mouse nel codice e scegliere Chat per aprire la visualizzazione Chat inline.
- Fare clic con il pulsante destro del mouse nel codice e scegliere Chiedi a Copilot per aprire la visualizzazione Chat inline.
Consiglio
In alternativa, è possibile fare clic con il pulsante destro del mouse su una variabile nella finestra Auto o Variabili locali oppure in una descrizione dati e scegliere Chiedi a Copilot. Questo fornisce a Copilot il nome e il contesto della variabile, quindi non è necessario fornire da soli il contesto nella chat.
Digitare la domanda seguente nella visualizzazione Chat inline:
Why does the args variable have a value of string[0]?
Quando si preme Invio, Copilot fornisce una risposta in base alla comprensione del codice. Si potrebbe ottenere una risposta diversa da quella mostrata qui.
Se Copilot ha una correzione suggerita per il tuo codice, te lo mostra. In caso contrario, è possibile chiedere Copilot un suggerimento di codice.
Consiglio
Nella chat inline usare il simbolo "#" e selezionare dall'elenco a discesa per distribuire informazioni specifiche a Copilot mentre vi si fa riferimento nella domanda. Ad esempio, se si seleziona una parte di codice e quindi si digita #, è possibile scegliere tale selezione dall'elenco a discesa #. È anche possibile usare il simbolo "#" per fare riferimento alle funzionalità dell'IDE visualizzate nell'elenco a discesa, ad esempio la finestra Variabili locali.
In questo esempio scorrere fino alla fine della risposta Copilot e selezionare la domanda di completamento alla fine della finestra chat inline, "Come posso gestire il caso quando non vengono passati argomenti al programma?"
Copilot mostra una correzione suggerita al codice.
Se si vuole applicare la correzione del codice, selezionare Tab.
Selezionare Alt+Delete in modo da poter continuare ad apprendere altre funzionalità di Copilot nella sezione successiva.
Quando si preme Invio, Copilot fornisce una risposta in base alla comprensione del codice. Si potrebbe ottenere una risposta diversa da quella mostrata qui.
Se Copilot ha una correzione suggerita per il tuo codice, te la mostra. In caso contrario, è possibile chiedere Copilot un suggerimento di codice.
Consiglio
Nella chat inline usare il simbolo "#" e selezionare dall'elenco a discesa per distribuire informazioni specifiche a Copilot mentre vi si fa riferimento nella domanda. Ad esempio, se si seleziona una parte di codice e quindi si digita #, è possibile scegliere tale selezione dall'elenco a discesa #. È anche possibile usare il simbolo "#" per fare riferimento alle funzionalità dell'IDE visualizzate nell'elenco a discesa, ad esempio la finestra Variabili locali.
In questo esempio scorrere fino alla fine della risposta Copilot e selezionare la domanda di completamento alla fine della finestra chat inline, "Come posso gestire il caso quando non vengono passati argomenti al programma?"
Copilot mostra una correzione suggerita al codice.
Per applicare la correzione del codice, scegliere Accetta.
Scegliere Cancel per continuare ad apprendere altre funzionalità di Copilot nella sezione successiva.
Eseguire il debug di un'eccezione con Copilot
L'esempio semplice seguente illustra come ottenere assistenza per l'intelligenza artificiale quando si verifica un'eccezione e come aggiornare rapidamente il codice in base alle correzioni suggerite dall'intelligenza artificiale.
Avviare una sessione di debug
Quando si è in pausa nel debugger usando la stessa app di esempio, premere F11 o Debug>Esegui Passo Dentro per eseguire l'istruzione corrente.
Si verifica un
IndexOutOfRangeExceptione l'app viene sospesa, mostrando l'eccezione.Per ottenere l'assistenza dell'intelligenza artificiale per gestire l'eccezione, passare alla sezione successiva.
Richiedere assistenza per l'intelligenza artificiale
Con l'applicazione sospesa sull'eccezione, selezionare il pulsante Analizza con Copilot.
Se non è già aperto, viene visualizzata la finestra Copilot Chat e fornisce una valutazione dell'errore e del motivo per cui si è verificato. In questo esempio, Copilot identifica una correzione del codice suggerita, un pulsante per copiare il codice e un pulsante Preview per la correzione del codice.
In caso di domande sull'eccezione, chiedere loro nella casella di testo Chiedi a Copilot.
Nella finestra di Copilot chat indicare Copilot che si vuole evitare l'errore.
Quando Copilot suggerisce una correzione nella finestra della chat, selezionare Apply.
Esaminare la correzione suggerita e selezionare Tab per applicare il suggerimento del codice.
Riavviare il debugger.
Questa volta non si verifica alcuna eccezione. È stato risolto!
Con l'applicazione sospesa quando si verifica un'eccezione, selezionare il pulsante Chiedi a Copilot.
Se non è già aperto, viene visualizzata la finestra Copilot Chat e fornisce una valutazione dell'errore e del motivo per cui si è verificato. In questo esempio, Copilot identifica una correzione del codice suggerita, un pulsante per copiare il codice e un pulsante Preview per la correzione del codice.
In caso di domande sull'eccezione, chiedere loro nella casella di testo Chiedi a Copilot.
Selezionare il pulsante Anteprima.
Visual Studio mostra un'anteprima del codice con la correzione suggerita.
Esaminare la correzione suggerita e scegliere Accetta per applicare il suggerimento del codice.
Riavviare il debugger.
Questa volta non si verifica alcuna eccezione. È stato risolto!
Risoluzione dei bug con il Debugger Agent
L'agente debugger fornisce un flusso di lavoro agente end-to-end che convalida i bug rispetto al comportamento di runtime reale anziché basarsi sull'analisi statica. L'esperienza illustra un ciclo agentico completo: comprensione e riproduzione del problema, strumentazione dell'applicazione, isolamento della causa radice e convalida della correzione tramite l'esecuzione in tempo reale.
È possibile iniziare da un problema in GitHub o Azure DevOps oppure descrivere il bug nel linguaggio naturale. L'agente del debugger esegue il mapping del problema al codice sorgente locale e illustra la risoluzione. È possibile interagire con l'agente durante il processo di debug per fornire più input, discutere la teoria o perfezionare la correzione in tempo reale.
Per usare l'agente del debugger:
- Aprire la finestra di Copilot Chat (View > GitHub Copilot Chat).
- Seleziona Debugger dal menu a tendina della modalità nell'angolo in basso a sinistra della finestra di chat.
- Specificare un collegamento al problema su GitHub o Azure DevOps oppure descrivere il bug in linguaggio naturale.
L'agente del debugger esegue i passaggi seguenti:
- Inserimento del contesto : connette il problema o la descrizione del bug al codice sorgente locale.
- Riproduttore autonomo : analizza il bug e, se mancano i passaggi di riproduzione, crea uno scenario minimo per attivare l'errore.
- Ipotesi e strumentazione - genera ipotesi di errore e strumenta l'app con punti di traccia e punti di interruzione condizionali per acquisire lo stato di runtime.
- Convalida del runtime : esegue la sessione di debug e analizza i dati di telemetria in tempo reale per isolare la causa radice.
- Correzione mirata : suggerisce una correzione precisa in corrispondenza del punto di errore esatto anziché un refactoring ampio.
- Convalida umana finale : eseguire di nuovo lo scenario e confermare la correzione nell'ambiente attivo insieme all'agente.
Quando si usa la modalità Agente in chat, è anche possibile passare all'agente debugger usando @debugger nell'input della chat. Per altre informazioni sull'agente debugger e altri agenti predefiniti, vedere Usare agenti predefiniti e personalizzati con GitHub Copilot.
Ricevi suggerimenti con punti di interruzione condizionali e punti di tracciamento
Copilot fornisce suggerimenti per i punti di interruzione condizionali e tracepoint specifici per il tuo codice.
In questo esempio vengono mostrati suggerimenti di intelligenza artificiale per un punto di interruzione condizionale. Per i punti di traccia, l'assistenza di intelligenza artificiale funziona allo stesso modo.
Rimuovere il punto di interruzione corrente facendo clic su di esso o facendo clic con il pulsante destro del mouse e scegliendo Elimina punto di interruzione.
Sostituire la riga di codice seguente:
names.Add("Major Major Major");con questo:
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }A sinistra dell'istruzione
names.Add("Name: " + item)fare clic con il pulsante destro del mouse nella barra e scegliere Inserisci punto di interruzione condizionale.Selezionare il campo dell'espressione e Copilot inizia a lavorare sui suggerimenti.
Quando vengono visualizzati i suggerimenti, scegliere uno, ad esempio
item == "Test". Modificare il suggerimento in modo che il nome siaFred.
Quando vengono visualizzati i suggerimenti, scegliere uno come
item == "John". Modificare il suggerimento in modo che il nome siaFred.
Per testare l'espressione condizionale:
Fare clic con il pulsante destro del mouse sul progetto ConsoleApp_Copilot in Esplora soluzioni e scegliere Proprietà.
Selezionare Debug>Generale>Aprire l'interfaccia utente dei profili di avvio del debug.
Nel campo argomenti della riga di comando immettere
5 Fred Joe, in tre righe separate.
Riavviare il debugger.
Quando il debugger viene sospeso nel punto di interruzione, controllare il valore di
iteme verificare che il valore corrente siaFred.