Tampilan pertama di Debugger Visual Studio
Topik ini memperkenalkan alat debugger yang disediakan oleh Visual Studio. Dalam konteks Visual Studio, saat Anda mendebug aplikasi Anda, biasanya itu berarti bahwa Anda sedang menjalankan aplikasi dengan debugger yang dilampirkan (yaitu, dalam mode debugger). Saat Anda melakukan ini, debugger menyediakan banyak cara untuk melihat apa yang dilakukan kode Anda saat berjalan. Anda dapat menelusuri kode Anda dan melihat nilai yang disimpan dalam variabel, Anda dapat mengatur jam pada variabel untuk melihat kapan nilai berubah, Anda dapat memeriksa jalur eksekusi kode Anda, dkk. Jika ini merupakan pertama kalinya Anda mencoba mendebug kode, Anda mungkin ingin membaca Penelusuran kesalahan untuk pemula absolut sebelum membahas topik ini. Jika Anda mencoba melakukan tugas tertentu dan perlu mengetahui fitur apa yang akan digunakan, lihat Pencari fitur Debugger. Untuk mencoba penelusuran kesalahan yang dibantu AI, lihat Debug dengan Copilot.
Fitur yang dijelaskan di sini berlaku untuk C#, C++, Visual Basic, JavaScript, dan bahasa komputer lainnya yang didukung oleh Visual Studio (kecuali jika disebutkan).
Mengatur titik henti dan memulai debugger
Titik henti adalah fitur yang berguna ketika Anda mengetahui baris kode atau bagian kode yang ingin Anda periksa secara detail saat runtime. Untuk informasi selengkapnya tentang berbagai jenis titik henti, seperti titik henti kondisional dan titik henti fungsi, lihat Menggunakan titik henti.
Untuk mendebug, Anda perlu memulai aplikasi dengan debugger yang dilampirkan ke proses aplikasi. Untuk melakukan ini:
- Tekan F5 (Debug > Mulai Debugging), yang merupakan metode yang paling umum.
Namun, saat ini Anda mungkin belum mengatur titik henti apa pun untuk memeriksa kode aplikasi Anda, jadi kami akan melakukannya terlebih dahulu dan kemudian mulai mendebug. Titik henti adalah fitur paling dasar dan esensial dari penelusuran kesalahan yang andal. Titik henti menunjukkan tempat Visual Studio harus menangguhkan kode yang sedang berjalan sehingga Anda dapat melihat nilai variabel, atau perilaku memori, atau apakah cabang kode sedang dijalankan atau tidak.
Jika Anda memiliki file yang terbuka di penyunting kode, Anda dapat mengatur titik henti dengan mengklik margin di sebelah kiri baris kode.
Tekan F5 (Debug > Mulai Debugging) atau tombol Mulai Debugging di Toolbar Debug, dan debugger berjalan ke titik henti pertama yang ditemuinya. Jika aplikasi belum berjalan, F5 memulai debugger dan berhenti di titik henti pertama.
Menavigasi kode di debugger menggunakan perintah langkah
Kami menyediakan pintasan papan ketik untuk sebagian besar perintah karena membuat navigasi kode aplikasi Anda lebih cepat. (Perintah yang setara seperti perintah menu ditampilkan dalam tanda kurung.) Untuk detail selengkapnya tentang menggunakan perintah langkah, lihat Menavigasi kode di debugger.
Untuk memulai aplikasi Anda dengan debugger yang dilampirkan, tekan F11 (Debug > Langkah Ke). F11 adalah perintah Langkah Ke dan memajukan eksekusi aplikasi satu pernyataan di satu waktu. Saat Anda memulai aplikasi dengan F11, debugger akan berhenti pada pernyataan pertama yang dijalankan.
Panah kuning mewakili pernyataan saat debugger dijeda, yang juga menangguhkan eksekusi aplikasi pada titik yang sama (pernyataan ini belum dieksekusi).
F11 adalah cara yang efisien untuk memeriksa alur eksekusi secara detail. (Untuk bergerak lebih cepat melalui kode, kami juga menunjukkan kepada Anda beberapa opsi lain.) Secara default, debugger melompati kode non-pengguna (jika Anda ingin detail lebih lanjut, lihat Hanya Kode Saya).
Catatan
Dalam kode terkelola, Anda akan melihat kotak dialog yang menanyakan apakah Anda ingin diberi tahu saat Anda secara otomatis melompati properti dan operator (perilaku default). Jika Anda ingin mengubah pengaturan nanti, nonaktifkan pengaturan Melompati properti dan operator di menu Alat > Opsi di bawah Penelusuran kesalahan.
Melompati kode untuk melewati fungsi
Saat Anda berada di baris kode yang merupakan panggilan fungsi atau metode, Anda dapat menekan F10 (Debug > Melompati ) alih-alih F11.
F10 melanjutkan debugger tanpa masuk ke fungsi atau metode dalam kode aplikasi Anda (kode tetap dijalankan). Dengan menekan F10, Anda dapat melompati kode yang tidak Anda minati. Dengan cara ini, Anda dapat dengan cepat mendapatkan kode yang lebih Anda minati. Untuk detail selengkapnya tentang menggunakan perintah langkah, lihat Menavigasi kode di debugger.
Jalankan ke titik dalam kode Anda dengan cepat menggunakan mouse
Menggunakan tombol Jalankan untuk Mengklik mirip dengan mengatur titik henti sementara. Perintah ini juga berguna untuk berkeliling dengan cepat dalam wilayah kode aplikasi yang terlihat. Anda dapat menggunakan Jalankan untuk Mengeklik di file mana pun yang terbuka. Untuk detail selengkapnya tentang fitur ini dan fitur navigasi yang serupa, lihat Menjalankan ke lokasi tertentu dalam kode Anda.
Saat berada di debugger, arahkan mouse ke atas baris kode hingga tombol Jalankan ke Klik (Jalankan eksekusi ke sini) muncul di sebelah kiri.
Catatan
Tombol Jalankan untuk Mengklik (Jalankan eksekusi ke sini) tersedia mulai di Visual Studio 2017.
Klik tombol Jalankan untuk Mengklik (Jalankan eksekusi ke sini). Debugger maju ke baris kode tempat Anda mengklik.
Memajukan debugger dari fungsi saat ini
Terkadang, Anda mungkin ingin melanjutkan sesi penelusuran kesalahan Anda tetapi memajukan debugger sepenuhnya melalui fungsi saat ini.
Tekan Shift + F11 (atau Debug > Melangkah Keluar).
Perintah ini melanjutkan eksekusi aplikasi (dan memajukan debugger) hingga fungsi saat ini kembali.
Jalankan ke kursor
Saat Anda mengedit kode (daripada dijeda di debugger), klik kanan baris kode di aplikasi Anda dan pilih Jalankan ke Kursor (atau tekan Ctrl + F10). Perintah ini memulai penelusuran kesalahan dan menetapkan titik henti sementara pada baris kode saat ini. Untuk detail selengkapnya tentang fitur ini dan fitur navigasi yang serupa, lihat Menjalankan ke lokasi tertentu dalam kode Anda.
Jika Anda telah mengatur titik henti sementara, debugger akan menjeda sejenak pada titik henti sementara pertama yang ditemuinya.
Tekan F5 hingga Anda mencapai baris kode tempat Anda memilih Jalankan ke Kursor.
Perintah ini berguna ketika Anda sedang mengedit kode dan ingin dengan cepat mengatur titik henti sementara dan memulai debugger pada waktu yang sama.
Catatan
Anda dapat menggunakan Jalankan ke Kursor di jendela Tumpukan Panggilan saat Anda melakukan penelusuran kesalahan.
Menghidupkan ulang aplikasi Anda dengan cepat
Klik tombol Mulai Ulang di Toolbar Debug (atau tekan Ctrl + Shift + F5).
Saat Anda menekan Hidupkan ulang, ini menghemat waktu dibandingkan menghentikan aplikasi dan menghidupkan ulang debugger. Debugger berhenti pada titik henti pertama yang terkena kode eksekusi.
Jika Anda ingin menghentikan debugger dan kembali ke editor kode, Anda dapat menekan tombol berhenti merah alih-alih Menghidupkan ulang.
Pengeditan kode langsung
Visual Studio 2022 mendukung pengeditan kode langsung saat penelusuran kesalahan. Untuk informasi lebih lanjut, lihat:
Edit kode Anda dan lanjutkan penelusuran kesalahan (C#, VB, C++, XAML)
Di sebagian besar bahasa komputer yang didukung oleh Visual Studio, Anda dapat mengedit kode Anda di tengah sesi penelusuran kesalahan dan melanjutkan penelusuran kesalahan. Untuk menggunakan fitur ini, klik kode Anda dengan kursor saat berhenti di debugger, edit, dan tekan F5, F10, atau F11 untuk melanjutkan penelusuran kesalahan. Untuk informasi lebih lanjut tentang penggunaan fitur ini dan pembatasan fitur, lihat Edit dan Lanjutkan.
Untuk memodifikasi kode XAML selama sesi penelusuran kesalahan, lihat Menulis dan men-debug kode XAML yang sedang berjalan dengan XAML Hot Reload.
Memeriksa variabel dengan tips data
Sekarang setelah Anda mengetahui sedikit jalan keluar, Anda memiliki peluang bagus untuk mulai memeriksa status (variabel) aplikasi Anda dengan debugger. Fitur yang memungkinkan Anda untuk memeriksa variabel adalah beberapa fitur debugger yang paling berguna, dan ada berbagai cara untuk melakukannya. Seringkali, saat Anda mencoba mendebug masalah, Anda mencoba mencari tahu apakah variabel menyimpan nilai yang Anda harapkan ada dalam status aplikasi tertentu. Untuk informasi lebih lanjut tentang menggunakan tips data, lihat Melihat nilai data di tips data.
Saat dijeda di debugger, arahkan kursor ke objek dengan mouse dan Anda akan melihat nilainya, atau nilai properti defaultnya.
Jika variabel memiliki properti, Anda dapat memperluas objek untuk melihat semua propertinya.
Seringkali, saat penelusuran kesalahan, Anda menginginkan cara cepat untuk memeriksa nilai properti pada objek, dan tips data adalah cara yang baik untuk melakukannya.
Memeriksa variabel dengan jendela Otomatis and Lokal
Di jendela Otomatis, Anda melihat variabel bersama dengan nilai saat ini dan jenisnya. Jendela Otomatis menampilkan semua variabel yang digunakan pada baris saat ini atau baris sebelumnya (Dalam C++, jendela menampilkan variabel dalam tiga baris kode sebelumnya. Periksa dokumentasi untuk perilaku khusus bahasa). Untuk informasi lebih lanjut tentang menggunakan jendela ini, lihat Memeriksa variabel di jendela Otomatis dan Lokal.
Saat penelusuran kesalahan, lihat jendela Otomatis di bagian bawah editor kode.
Catatan
Dalam JavaScript, jendela Lokal didukung tetapi tidak mendukung jendela Otomatis.
Selanjutnya, lihat jendela Lokal. Jendela Lokal menunjukkan variabel yang saat ini berada dalam cakupan.
Dalam contoh ini, objek this
dan objek f
berada dalam cakupan. Untuk info selengkapnya, lihat Memeriksa Variabel di Windows Otomatis dan Lokal.
Melihat nilai pengembalian panggilan metode
Dalam kode .NET dan C++, Anda dapat memeriksa nilai pengembalian di jendela Otomatis saat Anda melangkahi atau keluar dari panggilan metode, yang dapat berguna ketika nilai pengembalian tidak disimpan dalam variabel lokal. Untuk informasi selengkapnya, lihat Menampilkan nilai pengembalian panggilan metode.
Mulai dari Visual Studio 2022 versi 17.12 Pratinjau 3, Anda juga dapat melihat nilai pengembalian panggilan metode sebaris dan bukan hanya di jendela Otomatis.
Mengatur jam
Anda dapat menggunakan jendela Watch untuk menentukan variabel (atau ekspresi) yang ingin Anda pantau. Untuk informasi lebih lanjut, lihat Mengatur Jam menggunakan Jam dan QuickWatch Windows.
Saat penelusuran kesalahan, klik kanan objek dan pilih Tambahkan Watch.
Dalam contoh ini, Anda memiliki jam yang diatur pada objek, dan Anda dapat melihat nilainya berubah saat Anda menelusuri debugger. Tidak seperti jendela variabel lainnya, jendela Watch selalu menampilkan variabel yang Anda tonton (berwarna abu-abu saat berada di luar cakupan).
Memeriksa tumpukan panggilan
Jendela Tumpukan Panggilan menunjukkan urutan metode dan fungsi yang dipanggil. Baris atas menunjukkan fungsi saat ini. Baris kedua menunjukkan fungsi atau properti yang dipanggil, dan seterusnya. Tumpukan panggilan adalah cara yang tepat untuk memeriksa dan memahami alur eksekusi aplikasi. Untuk informasi lebih lanjut, lihat Cara: Memeriksa Tumpukan Panggilan.
Catatan
Jendela Tumpukan Panggilan mirip dengan perspektif Debug di beberapa IDE seperti Eclipse.
Klik jendela Tumpukan Panggilan saat Anda melakukan penelusuran kesalahan, yang secara default terbuka di panel kanan bawah.
Anda dapat mengklik dua kali baris kode untuk melihat kode sumber itu dan juga mengubah cakupan saat ini yang sedang diperiksa oleh debugger. Ini tidak memajukan debugger.
Anda juga dapat menggunakan menu klik kanan dari jendela Tumpukan Panggilan untuk melakukan tindakan lain. Misalnya, Anda dapat menyisipkan titik henti ke dalam fungsi tertentu, menghidupkan ulang aplikasi menggunakan Jalankan ke Kursor, dan untuk memeriksa kode sumber.
Memeriksa pengecualian
Saat aplikasi Anda memberikan pengecualian, debugger akan membawa Anda ke baris kode yang memberikan pengecualian tersebut. Untuk informasi lebih lanjut, lihat Memeriksa pengecualian menggunakan Pembantu Pengecualian.
Dalam contoh ini, Pembantu Pengecualian menampilkan System.NullReferenceException
pengecualian dan pesan galat yang menyatakan bahwa referensi objek tidak diatur ke instans objek. Dan, ini memberi tahu kami bahwa nilai string adalah nol saat Anda mencoba memanggil metode Trim
.
Dalam contoh ini, Pembantu Pengecualian menampilkan System.Argument
pengecualian dan pesan galat yang menyatakan bahwa jalur tersebut bukanlah bentuk resmi. Jadi, kita tahu kesalahan yang terjadi pada metode atau argumen fungsi.
Dalam contoh ini, panggilan DirectoryInfo
memberikan kesalahan pada string kosong yang disimpan dalam variabel value
.
Pembantu Pengecualian adalah fitur hebat yang dapat membantu Anda mendebug kesalahan. Anda juga dapat melakukan hal-hal seperti melihat detail kesalahan dan menambahkan jam dari Pembantu Pengecualian. Atau, jika perlu, Anda dapat mengubah kondisi untuk memberikan pengecualian tertentu. Untuk informasi lebih lanjut tentang cara menangani pengecualian dalam kode Anda, lihat Teknik dan alat penelusuran kesalahan.
Perluas node Pengaturan Pengecualian untuk melihat opsi lainnya tentang cara menangani jenis pengecualian ini, tetapi Anda tidak perlu mengubah apa pun untuk tur ini!
Tip
Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat menelusuri kesalahan pengecualian. Cukup cari tombol TanyaKan Salinan. Untuk informasi selengkapnya, lihat Debug dengan Copilot.
Dapatkan bantuan AI
Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat menelusuri kesalahan. Untuk informasi selengkapnya, lihat Debug dengan Copilot. Saat menelusuri kesalahan, Anda juga dapat mencari tombol Minta Salinan. Dalam skenario ini, Copilot sudah mengetahui konteks untuk pertanyaan Anda, sehingga Anda tidak perlu memberikan konteks sendiri dalam obrolan Copilot.
Mengonfigurasi penelusuran kesalahan
Anda dapat mengonfigurasi proyek untuk dibuat sebagai Konfigurasi Debug atau Rilis, mengonfigurasi properti proyek untuk penelusuran kesalahan, atau mengonfigurasi pengaturan umum untuk penelusuran kesalahan. Selain itu, Anda dapat mengonfigurasi debugger untuk menampilkan informasi kustom menggunakan fitur seperti atribut DebuggerDisplay atau, untuk C/C++, kerangka kerja NatVis.
Properti penelusuran kesalahan khusus untuk setiap jenis proyek. Misalnya, Anda dapat menentukan argumen untuk diteruskan ke aplikasi saat Anda memulainya. Anda dapat mengakses properti khusus proyek dengan mengeklik kanan proyek di Penjelajah Solusi dan memilih Properti. Properti penelusuran kesalahan biasanya muncul di tab Build atau Debug, bergantung pada jenis proyek tertentu.
Mulai di Visual Studio 2022, tab Debug untuk proyek .NET menyediakan link ke antarmuka pengguna profil peluncuran debug, tempat Anda dapat mengatur properti terkait debug.
Mendebug aplikasi ASP.NET langsung di Azure App Service
Untuk men-debug di Azure App Service, lihat Men-debug aplikasi Azure.
Untuk Visual Studio Enterprise (hanya), Snapshot Debugger mengambil rekam jepret aplikasi dalam produksi Anda saat kode yang Anda minati dijalankan. Untuk menginstruksikan debugger untuk mengambil snapshot, Anda mengatur snappoints dan logpoints dalam kode Anda. Debugger memungkinkan Anda melihat dengan tepat apa yang salah, tanpa memengaruhi lalu lintas aplikasi produksi Anda. Snapshot Debugger dapat membantu Anda secara dramatis mengurangi waktu yang diperlukan untuk menyelesaikan masalah yang terjadi di lingkungan produksi.
Koleksi snapshot tersedia untuk aplikasi ASP.NET yang berjalan di Azure App Service. Aplikasi ASP.NET harus berjalan di .NET Framework 4.6.1 atau lebih baru, dan aplikasi ASP.NET Core harus berjalan di .NET Core 2.0 atau lebih baru di Windows.
Untuk informasi selengkapnya, lihat Mendebug aplikasi ASP.NET langsung menggunakan Snapshot Debugger.
Lihat snapshot dengan langkah mundur IntelliTrace (Visual Studio Enterprise)
Langkah mundur IntelliTrace secara otomatis mengambil snapshot aplikasi Anda di setiap peristiwa titik henti dan langkah debugger. Snapshot yang direkam memungkinkan Anda untuk kembali ke titik henti atau langkah sebelumnya dan menampilkan status aplikasi seperti saat sebelumnya. Langkah mundur IntelliTrace dapat menghemat waktu Anda saat Anda ingin melihat status aplikasi sebelumnya tetapi tidak ingin menghidupkan ulang penelusuran kesalahan atau membuat ulang status aplikasi yang diinginkan.
Anda dapat menavigasi dan melihat snapshot dengan menggunakan tombol Langkah Mundur dan Langkah Maju di toolbar Debug. Tombol-tombol ini mengalihkan peristiwa yang muncul di tab Peristiwa di jendela Alat Diagnostik.
Untuk informasi selengkapnya, lihat halaman Periksa status aplikasi sebelumnya menggunakan IntelliTrace.
Masalah performa debug
Jika aplikasi Anda berjalan terlalu lambat atau menggunakan terlalu banyak memori, Anda mungkin perlu menguji aplikasi Anda dengan alat pembuatan profil sejak dini. Untuk informasi selengkapnya tentang alat pembuatan profil seperti alat Penggunaan CPU dan Penganalisis Memori, lihat Pertama-tama lihat alat pembuatan profil.
Konten terkait
Dalam tutorial ini, Anda telah melihat secara sekilas beberapa fitur debugger. Anda mungkin ingin melihat secara lebih mendalam pada salah satu fitur ini, seperti titik henti.