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.

Mengatur Titik Henti

Mengatur Titik Henti

Tekan F5 (Debug > Mulai Debugging) atau tombol Mulai Penelusuran Kesalahan. 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.

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.

F11 Melangkah Ke

F11 Melangkah Ke

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 Cuplikan layar tombol Jalankan ke Klik dari Visual Studio Debugger. Tombol menunjukkan bahwa eksekusi harus berjalan ke baris tempat tombol ditempatkan. Jalankan ke Klik (Jalankan eksekusi ke sini) muncul di sebelah kiri.

Cuplikan layar Visual Studio Debugger memperlihatkan tombol Jalankan ke Klik muncul tepat di sebelah kiri panggilan ke fungsi.

Cuplikan layar Visual Studio Debugger memperlihatkan tombol Jalankan ke Klik muncul tepat di sebelah kiri panggilan ke fungsi.

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.

Run to Cursor

Run to Cursor

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 UlangMulai ulang Aplikasi 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 Hentikan Penelusuran Kesalahan 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.

Mengedit dan melanjutkan penelusuran kesalahan

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.

Menampilkan Tip Data

Menampilkan Tip Data

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.

Jendela Otomatis

Jendela Otomatis

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.

Jendela Lokal

Jendela Lokal

Dalam contoh ini, objek this dan objek f berada dalam cakupan. Untuk info selengkapnya, lihat Memeriksa Variabel di Windows Otomatis dan Lokal.

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.

Jendela Pengawas

Jendela Pengawas

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.

Memeriksa Tumpukan Panggilan

Memeriksa Tumpukan Panggilan

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.

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.

Pembantu Pengecualian

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 SalinanCuplikan layar tombol Minta Salinan.. Untuk informasi selengkapnya, lihat Debug dengan 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.

Properti proyek

Properti proyek

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.

Luncurkan debugger rekam jepret

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.

Tombol Mundur dan Maju

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.

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.