Debug aplikasi Anda dengan GitHub Copilot di Visual Studio

Dalam artikel ini, Anda akan mempelajari cara men-debug dengan lebih efisien menggunakan GitHub Copilot. Copilot dapat memberikan perbaikan kode bersama dengan analisis mendalam dan penjelasan tentang cara kerja kode. Ini membantu dengan usulan perbaikan pada bug, dan menjelaskan hal-hal seperti pengecualian. Copilot memahami tumpukan panggilan, bingkai, nama variabel, dan nilai. Akibatnya, Anda dapat berinteraksi dengan AI sadar debugger untuk mengajukan pertanyaan terperinci yang terkait dengan kode Anda dan untuk men-debug masalah secara umum.

Selain itu, Copilot memberikan dukungan yang lebih tepat untuk beberapa skenario yang ditargetkan, seperti Exception, dan semua skenario yang dijelaskan dalam skenario yang ditingkatkan oleh AI untuk debugging. Dalam sebagian besar dari skenario ini, cari tombol Ask Copilotcuplikan layar tombol Ask Copilot. atau tombol Analyze dengan Copilot. Dalam skenario ini, Copilot sudah mengetahui konteks untuk pertanyaan Anda.

Untuk informasi selengkapnya tentang Penyelesaian GitHub Copilot di Visual Studio, lihat Tentang Penyelesaian GitHub Copilot di Visual Studio.

Prasyarat

Untuk memulai, Anda memerlukan:

Skenario yang disempurnakan AI

Copilot memahami tumpukan panggilan, bingkai, nama variabel, dan nilai. Akibatnya, Anda dapat berinteraksi dengan AI sadar debugger untuk mengajukan pertanyaan terperinci yang terkait dengan kode Anda dan untuk men-debug masalah secara umum.

Selain itu, Copilot memberikan bantuan yang lebih tepat untuk beberapa skenario yang ditargetkan, seperti yang dijelaskan dalam tabel berikut.

Fitur atau skenario Tautan
Pengendali Debugger Lihat Resolusi bug berbasis agen dengan Agen Debugger dalam artikel ini. Alur kerja berbasis agen end-to-end yang mereproduksi bug, melakukan instrumentasi aplikasi Anda, dan memvalidasi perbaikan menggunakan data runtime secara langsung.
Analisis tumpukan panggilan Lihat Analisis tumpukan panggilan dengan Copilot. Dapatkan analisis dengan satu klik tentang apa yang dilakukan utas Anda, termasuk penjelasan mengenai aliran asinkron.
Pengecualian Lihat Debug sebuah pengecualian dengan Copilot dalam artikel ini. Bantuan terkait pengecualian mencakup bantuan terkait kesalahan deteksi kebuntuan.
Variabel Lihat Mendapatkan bantuan AI.
Analisis kueri LINQ Arahkan mouse ke kueri LINQ saat debugging di editor kode guna melihat nilai yang dihasilkan. Pilih tombol Analyze dengan Copilot untuk bantuan AI. Lihat Menampilkan nilai pengembalian kueri LINQ.
Kiat data Lihat Dapatkan bantuan AI dengan Tips Data.
Titik henti kondisional dan titik pelacakan Lihat Dapatkan saran dengan titik henti bersyarat dan titik pelacakan dalam artikel ini.
Tindakan Cepat (bola lampu) Lihat Mendapatkan bantuan AI dengan Tindakan Cepat.
Visualizer IEnumerable tabular Lihat Mendapatkan bantuan AI.
Deteksi otomatis dan format dalam Visualizer Teks Lihat Deteksi otomatis dan format. Copilot secara otomatis mengidentifikasi string yang dikodekan atau dikompresi dan mendekodenya dalam satu klik.
Nilai pengembalian dalam baris Lihat Menampilkan nilai pengembalian panggilan metode.
Nilai sebaris Lihat Menampilkan nilai sebaris.
Debugging banyak utas Lihat Dapatkan bantuan AI dengan tampilan Threads.
Pengujian unit Lihat Mendapatkan bantuan AI untuk men-debug pengujian
Memeriksa pengecualian dengan konteks repositori Lihat Mendapatkan bantuan AI dengan konteks repositori
Pemecahan Masalah Titik Jeda Lihat Mendapatkan bantuan AI.
Fitur atau skenario Tautan
Analisis tumpukan panggilan Lihat Analisis tumpukan panggilan dengan Copilot. Dapatkan analisis dengan satu klik tentang apa yang dilakukan utas Anda, termasuk penjelasan mengenai aliran asinkron.
Pengecualian Lihat Debug sebuah pengecualian dengan Copilot dalam artikel ini. Bantuan terkait pengecualian mencakup bantuan terkait kesalahan deteksi kebuntuan.
Variabel Lihat Mendapatkan bantuan AI.
Analisis kueri LINQ Arahkan mouse ke kueri LINQ saat debugging di editor kode guna melihat nilai yang dihasilkan. Pilih tombol Analyze dengan Copilot untuk bantuan AI. Lihat Menampilkan nilai pengembalian kueri LINQ.
Kiat data Lihat Dapatkan bantuan AI dengan Tips Data.
Titik henti kondisional dan titik pelacakan Lihat Dapatkan saran dengan titik henti bersyarat dan titik pelacakan dalam artikel ini.
Tindakan Cepat (bola lampu) Lihat Mendapatkan bantuan AI dengan Tindakan Cepat.
Visualizer IEnumerable tabular Lihat Mendapatkan bantuan AI.
Nilai pengembalian dalam baris Lihat Menampilkan nilai pengembalian panggilan metode.
Nilai sebaris Lihat Menampilkan nilai sebaris.
Debugging banyak utas Lihat Dapatkan bantuan AI dengan tampilan Threads.
Pengujian unit Lihat Mendapatkan bantuan AI untuk men-debug pengujian
Memeriksa pengecualian dengan konteks repositori Lihat Mendapatkan bantuan AI dengan konteks repositori
Pemecahan Masalah Titik Jeda Lihat Mendapatkan bantuan AI.

Dalam sebagian besar skenario ini, Anda mendapatkan bantuan yang ditargetkan dengan menggunakan Ask CopilotScreenshot tombol Ask Copilot. atau Analyze dengan tombol Copilot. Copilot sudah mengetahui konteks untuk pertanyaan Anda. Misalnya, ia mengetahui tumpukan panggilan saat ini, baris kode yang Anda tanyakan, dan nama pengecualian (jika terjadi), sehingga Anda tidak perlu memberikan konteks sendiri dalam obrolan. Copilot juga memberikan saran untuk penggunaan titik henti dan titik pelacakan bersyarat.

Debug menggunakan Copilot

Contoh sederhana berikut menunjukkan cara mendapatkan bantuan AI menggunakan tampilan Obrolan sebaris.

Nota

Anda juga bisa mendapatkan bantuan menggunakan jendela Obrolan terpisah dengan memilih Tampilkan > GitHub Copilot Chat. Untuk informasi selengkapnya, lihat Apa ekstensi Copilot Chat GitHub untuk Visual Studio?.

Memulai sesi debug

  1. Di Visual Studio, buat aplikasi Konsol C# baru.

    Pada jendela mulai, pilih Buat proyek baru. Ketik console di kotak pencarian, pilih C# sebagai bahasa, lalu pilih Konsole App untuk .NET. Pilih Berikutnya. Ketik nama proyek seperti ConsoleApp_Copilot dan pilih Berikutnya.

    Pilih kerangka kerja target yang direkomendasikan atau .NET 10, lalu pilih Buat.

    Jika Anda tidak melihat templat proyek Console App untuk .NET, buka Tools>Dapatkan Alat dan Fitur, yang membuka alat penginstal Visual Studio. Pilih beban proyek pengembangan .NET desktop, lalu pilih Ubah.

    Visual Studio membuat proyek konsol, yang muncul di Solution Explorer di panel kanan.

  2. Ganti kode di Program.cs dengan kode berikut:

    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");
        }
    }
    
  3. Klik kanan pernyataan berikut dan pilih Titik Henti >Sisipkan Titik Henti.

    int value = Int32.Parse(args[0]);
    
  4. Tekan F5 atau pilih Mulai Debugging dari menu Debug.

    Aplikasi berhenti sejenak di titik henti. Jendela Otomatis menunjukkan bahwa variabel args memiliki nilai string[0].

    Cuplikan layar jendela Otomatis.

  1. Klik kanan dalam kode dan pilih Obrolan untuk membuka tampilan Obrolan sebaris.
  1. Klik kanan dalam kode dan pilih Ask Copilot untuk membuka tampilan Obrolan sebaris.

Saran

Atau, Anda dapat mengklik kanan variabel di jendela Autos atau Locals, atau dalam data tip, dan memilih Ask Copilot. Ini menyediakan Copilot dengan nama variabel dan konteks, sehingga Anda tidak perlu memberikan konteks sendiri dalam obrolan.

  1. Ketik pertanyaan berikut dalam tampilan Obrolan sebaris:

    Why does the args variable have a value of string[0]?
    

Screenshot dari Copilot Chat terintegrasi.

Saat Anda menekan Enter, Copilot memberikan jawaban berdasarkan pemahamannya tentang kode Anda. (Anda mungkin mendapatkan respons yang berbeda dari apa yang ditunjukkan di sini.)

Screenshot dari jawaban pertanyaan oleh Copilot.

Jika Copilot memiliki perbaikan yang disarankan untuk kode Anda, Copilot akan menunjukkannya kepada Anda. Jika tidak, Anda dapat meminta Copilot untuk saran kode.

Saran

Di obrolan langsung, gunakan simbol "#" dan pilih dari menu tarik-turun untuk menyerahkan informasi tertentu ke Copilot saat Anda merujuknya dalam pertanyaan Anda. Misalnya, jika Anda memilih sebagian kode, lalu mengetik #, Anda dapat memilih pilihan tersebut dari daftar drop-down #. Anda juga dapat menggunakan simbol "#" untuk mereferensikan fitur IDE yang muncul di daftar drop-down, seperti jendela Lokal.

  1. Dalam contoh ini, gulir ke akhir jawaban Copilot dan pilih pertanyaan tindak lanjut di akhir jendela Obrolan sebaris, "Bagaimana cara menangani kasus ketika tidak ada argumen yang diteruskan ke program?"

    Screenshot Copilot pertanyaan tindak lanjut.

    Copilot menunjukkan perbaikan yang disarankan untuk kode Anda.

    Screenshot perbaikan yang disarankan oleh Copilot.

    Jika Anda ingin menerapkan perbaikan kode, pilih Tab.

  2. Pilih Alt+Delete sehingga kami dapat terus mempelajari fitur Copilot lainnya di bagian berikutnya.

Screenshot dari Copilot Chat terintegrasi.

Saat Anda menekan Enter, Copilot memberikan jawaban berdasarkan pemahamannya tentang kode Anda. (Anda mungkin mendapatkan respons yang berbeda dari apa yang ditunjukkan di sini.)

Cuplikan layar dari jawaban pertanyaan oleh Copilot.

Jika Copilot memiliki perbaikan yang disarankan untuk kode Anda, Copilot akan menunjukkannya kepada Anda. Jika tidak, Anda dapat meminta Copilot untuk saran kode.

Saran

Di obrolan langsung, gunakan simbol "#" dan pilih dari menu tarik-turun untuk menyerahkan informasi tertentu ke Copilot saat Anda merujuknya dalam pertanyaan Anda. Misalnya, jika Anda memilih sebagian kode, lalu mengetik #, Anda dapat memilih pilihan tersebut dari daftar drop-down #. Anda juga dapat menggunakan simbol "#" untuk mereferensikan fitur IDE yang muncul di daftar drop-down, seperti jendela Lokal.

  1. Dalam contoh ini, gulir ke akhir jawaban Copilot dan pilih pertanyaan tindak lanjut di akhir jendela Obrolan sebaris, "Bagaimana cara menangani kasus ketika tidak ada argumen yang diteruskan ke program?"

    Screenshot Copilot pertanyaan tindak lanjut.

    Copilot menunjukkan perbaikan yang disarankan untuk kode Anda.

    Screenshot saran perbaikan dari Copilot.

    Jika Anda ingin menerapkan perbaikan kode, pilih Terima.

  2. Pilih Cancel sehingga kami dapat terus mempelajari fitur Copilot lainnya di bagian berikutnya.

Mengatasi pengecualian dengan Copilot

Contoh sederhana berikut menunjukkan cara mendapatkan bantuan AI saat Anda menemukan pengecualian dan cara memperbarui kode Anda dengan cepat berdasarkan perbaikan yang disarankan AI.

Memulai sesi debug

  • Saat dijeda di debugger menggunakan aplikasi sampel yang sama, tekan F11 atau Debug>Masuk untuk menjalankan pernyataan saat ini.

    IndexOutOfRangeException muncul dan aplikasi berhenti sementara, memperlihatkan pengecualian.

    Untuk mendapatkan bantuan AI untuk pengecualian, lanjutkan ke bagian berikutnya.

Minta bantuan AI

  1. Dengan aplikasi dijeda pada pengecualian, pilih tombol Analisis dengan Copilot.

    Screenshot tombol Ask Copilot dalam sebuah pengecualian.

    Jika belum terbuka, jendela Copilot Chat muncul dan memberikan penilaian kesalahan dan mengapa terjadi. Dalam contoh ini, Copilot mengidentifikasi perbaikan kode yang disarankan, tombol untuk menyalin kode, dan tombol Preview untuk perbaikan kode.

    Jika Anda memiliki pertanyaan tentang pengecualian, tanyakan di kotak teks Ask Copilot.

    Screenshot tombol Pratinjau di jendela Copilot Chat.

  2. Di jendela obrolan Copilot, beri tahu Copilot bahwa Anda ingin itu mencegah kesalahan.

  3. Saat Copilot menyarankan perbaikan di jendela obrolan, pilih Aplikasi.

  4. Tinjau perbaikan yang disarankan dan pilih Tab untuk menerapkan saran kode.

    Cuplikan layar pratinjau kode di Visual Studio.

  5. Mulai ulang debugger.

    Kali ini, tidak ada pengecualian yang terjadi. Sudah diperbaiki!

  1. Saat aplikasi dijeda pada pengecualian, pilih tombol Ask Copilot.

    Screenshot tombol Ask Copilot dalam sebuah pengecualian.

    Jika belum terbuka, jendela Copilot Chat muncul dan memberikan penilaian kesalahan dan mengapa terjadi. Dalam contoh ini, Copilot mengidentifikasi perbaikan kode yang disarankan, tombol untuk menyalin kode, dan tombol Preview untuk perbaikan kode.

    Jika Anda memiliki pertanyaan tentang pengecualian, tanyakan di kotak teks Ask Copilot.

  2. Pilih tombol Pratinjau.

    Screenshot tombol Pratinjau di jendela Copilot Chat.

    Visual Studio memperlihatkan pratinjau kode dengan perbaikan yang disarankan.

  3. Tinjau perbaikan yang disarankan dan pilih Terima untuk menerapkan saran kode.

    Cuplikan layar pratinjau kode di Visual Studio.

  4. Mulai ulang debugger.

    Kali ini, tidak ada pengecualian yang terjadi. Sudah diperbaiki!

Resolusi bug berbasis agen dengan Agen Debugger

Agen Debugger menyediakan alur kerja agenik end-to-end yang memvalidasi bug terhadap perilaku runtime nyata alih-alih mengandalkan analisis statis. Pengalaman ini memandu Anda melalui perulangan agenik lengkap: memahami dan mereproduksi masalah, melengkapi aplikasi, mengisolasi akar penyebab, dan memvalidasi perbaikan melalui eksekusi langsung.

Anda dapat memulai dari masalah di GitHub atau Azure DevOps, atau menjelaskan bug dalam bahasa alami. Agen Debugger memetakan masalah ke kode sumber lokal Anda dan memandu Anda melalui resolusi. Anda dapat berinteraksi dengan agen selama proses penelusuran kesalahan untuk memberikan lebih banyak input, mendiskusikan teori Anda, atau menyempurnakan solusi secara real time.

Untuk menggunakan Agen Debugger:

  1. Buka jendela Copilot Chat (View > GitHub Copilot Chat).
  2. Pilih Debugger dari dropdown mode di sudut kiri bawah jendela obrolan.
  3. Berikan tautan masalah GitHub atau Azure DevOps, atau jelaskan bug dalam bahasa alami.

Screenshot memperlihatkan pemilih agen dengan agen kustom di Visual Studio.

Agen Debugger bekerja melalui langkah-langkah berikut:

  • Injeksi konteks - Menyambungkan masalah atau deskripsi bug ke kode sumber lokal Anda.
  • Pemroduksi otonom - Bug dianalisis dan, jika tahapan reproduksi hilang, dibuat skenario minimal untuk menyebabkan kegagalan.
  • Hipotesis dan instrumentasi - Menghasilkan hipotesis kegagalan dan menginstrumentasi aplikasi Anda dengan titik jejak dan titik henti kondisional untuk menangkap keadaan runtime.
  • Validasi Runtime - Menjalankan sesi debugging dan menganalisis telemetri secara real-time untuk mengisolasi penyebab utama.
  • Koreksi yang ditargetkan - Menyarankan perbaikan tepat pada titik kegagalan daripada melakukan refaktor secara luas.
  • Validasi akhir manusia - Anda menjalankan kembali skenario dan mengonfirmasi perbaikan tersebut bersama agen di lingkungan langsung.

Saat berada dalam mode Agen dalam obrolan, Anda juga dapat beralih ke agen Debugger dengan menggunakan @debugger di input obrolan. Untuk informasi selengkapnya tentang Agen Debugger dan agen bawaan lainnya, lihat Gunakan agen bawaan dan kustom dengan GitHub Copilot.

Dapatkan saran dengan titik henti bersyarat dan titik pelacakan bersyarat

Copilot memberi Anda saran untuk titik henti kondisional dan tracepoint yang khusus untuk kode Anda.

Dalam contoh ini, kami menunjukkan saran AI untuk titik henti bersyarat. Untuk titik jejak, bantuan AI bekerja dengan cara yang sama.

  1. Hapus titik henti saat ini dengan mengkliknya atau klik kanan dan pilih Hapus Titik Henti.

  2. Ganti baris kode berikut:

    names.Add("Major Major Major");
    

    dengan ini:

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. Di sebelah kiri pernyataan names.Add("Name: " + item), klik kanan di tepi editor dan pilih Sisipkan Titik Henti Bersyarat.

  4. Pilih bidang ekspresi dan Copilot mulai mengerjakan saran.

    Screenshot dari Copilot yang sedang mengerjakan saran titik henti bersyarat.

  1. Saat saran muncul, pilih salah satunya, seperti item == "Test". Sunting usulan agar namanya Fred.

    Tangkapan layar dari rekomendasi Copilot untuk breakpoint bersyarat.

  1. Saat saran muncul, pilih saran seperti item == "John". Sunting usulan agar namanya Fred.

    Screenshot dari saran Copilot untuk breakpoint bersyarat.

  1. Untuk menguji ekspresi kondisional.

    1. Klik kanan proyek ConsoleApp_Copilot di Solution Explorer dan pilih Properti.

    2. Pilih Debug>General>Buka antarmuka profil peluncuran debug.

    3. Di bidang argumen baris perintah , masukkan 5 Fred Joepada tiga baris terpisah.

      Tangkapan layar saat memasukkan argumen baris perintah ke dalam proyek.

    4. Mulai ulang debugger.

    Saat debugger berhenti sejenak di titik henti, periksa nilai item dan verifikasi bahwa nilai saat ini Fred.