Bagikan melalui


Gambaran umum debugger Visual Studio

Artikel ini memperkenalkan alat debugger yang disediakan oleh Visual Studio. Dalam konteks Visual Studio, saat Anda debug aplikasi Anda, biasanya berarti Anda menjalankan aplikasi dengan debugger yang terpasang (yaitu, dalam mode debugger). Ketika Anda melakukan ini, debugger menyediakan banyak cara untuk melihat apa yang dilakukan kode Anda saat berjalan. Anda dapat menelusuri kode dan melihat nilai yang disimpan dalam variabel, Anda dapat mengatur jam tangan pada variabel untuk melihat kapan nilai berubah, Anda dapat memeriksa jalur eksekusi kode Anda, dan sebagainya. Jika Anda baru memulai bekerja dengan proses debug, disarankan untuk membaca Debugging untuk pemula mutlak sebelum melalui artikel ini. Jika Anda mencoba melakukan tugas tertentu dan perlu mengetahui fitur apa yang akan digunakan, lihat Pencari fitur Debugger. Untuk mencoba debugging yang dibantu AI, lihat Debug dengan Copilot.

Fitur yang dijelaskan di sini berlaku untuk C#, C++, Visual Basic, JavaScript, dan bahasa lain yang didukung oleh Visual Studio (kecuali jika disebutkan).

Mengatur titik henti dan memulai debugger

Titik henti adalah fitur yang berguna saat Anda mengetahui baris kode atau bagian kode yang ingin Anda periksa secara rinci saat runtime. Untuk informasi selengkapnya tentang berbagai jenis titik henti, seperti titik henti kondisional dan titik henti fungsi, lihat Menggunakan titik henti.

Untuk men-debug, 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.

Anda mungkin belum memiliki titik henti yang diatur untuk digunakan untuk memeriksa kode aplikasi Anda. Setelah Anda mengatur titik henti, Anda siap untuk mulai melakukan debug. Titik henti adalah fitur paling mendasar dan penting dari debugging yang andal. Titik henti menunjukkan di mana 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 membuka file di editor kode, Anda dapat mengatur titik henti dengan mengklik margin di sebelah kiri baris kode.

Mengatur Titik HentiMengatur titik henti

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

Pengeditan kode langsung

Visual Studio 2022 mendukung pengeditan kode langsung saat debugging. Untuk informasi terperinci, lihat:

Kami menyediakan pintasan keyboard 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 terlampir, tekan F11 (Debug Melangkah Ke). F11 adalah perintah Step Into dan melanjutkan jalannya aplikasi satu pernyataan demi satu pernyataan. Saat Anda memulai aplikasi dengan F11, debugger akan berhenti pada pernyataan pertama yang dijalankan.

F11 Melangkah KeF11 Melangkah ke

Panah kuning mewakili pernyataan di mana debugger dijeda, yang juga menangguhkan eksekusi aplikasi pada titik yang sama (pernyataan ini belum dijalankan).

F11 adalah cara yang baik untuk memeriksa alur eksekusi secara terperinci. (Untuk bergerak lebih cepat melalui kode, kami juga menunjukkan beberapa opsi lain.) Secara default, debugger melompati kode nonpengguna (jika Anda ingin detail selengkapnya, lihat Hanya Kode Saya).

Nota

Dalam kode terkelola, Anda akan melihat dialog yang menanyakan apakah Anda ingin diberi tahu saat Anda secara otomatis melewati properti dan operator (perilaku default). Jika Anda ingin mengubah pengaturan nanti, nonaktifkan pengaturan Langkahi properti dan operator di panel Alat Opsi di bawah Semua PengaturanDebuggingUmum.

Nota

Dalam kode terkelola, Anda akan melihat dialog yang menanyakan apakah Anda ingin diberi tahu saat Anda secara otomatis melewati properti dan operator (perilaku default). Jika Anda ingin mengubah pengaturan nanti, nonaktifkan pengaturan Lewati properti dan operator dalam dialog Tools Options di bawah DebuggingGeneral.

Langkahkan melewati kode untuk melewati fungsi

Ketika Anda berada di baris kode yang merupakan panggilan fungsi atau metode, Anda dapat menekan F10 (Debug Langkah Lewati) alih-alih F11.

F10 memajukan debugger tanpa melangkah ke fungsi atau metode dalam kode aplikasi Anda (kode masih dijalankan). Dengan menekan F10, Anda dapat melewati kode yang tidak Anda minati. Dengan cara ini, Anda dapat dengan cepat mendapatkan kode yang lebih Anda minati. Untuk informasi lebih lanjut tentang penggunaan perintah langkah demi langkah, lihat Menavigasi kode di debugger.

Memajukan debugger dari fungsi saat ini

Terkadang, Anda mungkin ingin melanjutkan sesi penelusuran kesalahan tetapi memajukan debugger melalui seluruh fungsi saat ini.

Tekan Shift + F11 (atau Debug Langkah Keluar).

Perintah ini melanjutkan eksekusi aplikasi (dan memajukan debugger) hingga fungsi saat ini kembali.

Jalankan ke titik dalam kode Anda dengan cepat menggunakan mouse

Penggunaan tombol Run to Click serupa dengan menetapkan breakpoint sementara. Perintah ini juga berguna untuk berkeliling dengan cepat dalam wilayah kode aplikasi yang terlihat. Anda dapat menggunakan Run to Click pada file yang terbuka mana pun. Untuk detail selengkapnya tentang fitur ini dan fitur navigasi serupa, lihat Jalankan ke lokasi tertentu di kode Anda.

Saat berada di debugger, arahkan mouse ke atas baris kode hingga Jalankan ke Klik (Jalankan eksekusi ke sini) Screenshot tombol Jalankan ke Klik dari Visual Studio Debugger. Tombol menunjukkan bahwa eksekusi harus dijalankan ke baris tempat tombol ditempatkan. muncul di sebelah kanan.

Screenshot Visual Studio Debugger yang memperlihatkan tombol Jalankan ke Klik muncul tepat di sebelah kanan panggilan ke fungsi.

Saat berada di debugger, letakkan kursor ke baris kode hingga tombol Jalankan ke Klik (Menjalankan eksekusi hingga sini) Screenshot tombol Jalankan ke Klik dari Visual Studio Debugger. Tombol menunjukkan bahwa eksekusi harus berjalan ke baris tempat tombol ditempatkan. muncul di sebelah kiri.

Screenshot dari Visual Studio Debugger yang menunjukkan tombol

Nota

Tombol Jalankan ke Klik (Jalankan eksekusi ke sini) tersedia mulai Visual Studio 2017.

Klik tombol Jalankan hingga Klik (Jalankan eksekusi sampai di sini). Debugger melanjutkan ke baris kode tempat Anda mengklik.

Jalankan hingga posisi kursor

Saat Anda mengedit kode (daripada dijeda di debugger), klik kanan baris kode di aplikasi Anda dan pilih Jalankan ke Kursor (atau tekan CtrlF10). Perintah ini memulai penelusuran kesalahan dan mengatur titik henti sementara pada baris kode saat ini. Untuk detail selengkapnya tentang fitur ini dan fitur navigasi serupa, lihat Jalankan ke lokasi tertentu di kode Anda.

Cuplikan layar yang memperlihatkan opsi Jalankan Ke Kursor.Jalankan ke Kursor

Jalankan ke KursorJalankan ke Kursor

Jika Anda mengatur titik henti, debugger akan berhenti sejenak pada titik henti pertama yang ditemuinya.

Tekan F5 hingga Anda mencapai baris kode tempat Anda memilih Jalankan ke Kursor.

Perintah ini berguna saat Anda mengedit kode dan ingin dengan cepat mengatur titik henti sementara dan memulai debugger secara bersamaan.

Nota

Anda dapat menggunakan Menjalankan ke Kursor di jendela Tumpukan Panggilan saat Anda melakukan debugging.

Mulai ulang aplikasi Anda dengan cepat

Pilih tombol Mulai Ulang AplikasiMulai Ulang Aplikasi di bilah alat Debug (atau tekan Ctrl + Shift + F5).

Saat Anda menekan Hidupkan ulang, ini menghemat waktu versus menghentikan aplikasi dan memulai ulang debugger. Debugger berhenti pada titik henti pertama saat kode eksekusi mencapainya.

Jika Anda ingin menghentikan debugger dan kembali ke editor kode, Anda dapat menekan tombol berhenti merah Hentikan Penelusuran KesalahanHentikan Penelusuran Kesalahan alih-alih Mulai Ulang.

Memeriksa variabel dengan petunjuk data

Sekarang setelah Anda tahu sedikit jalan, Anda memiliki kesempatan yang baik untuk mulai memeriksa status aplikasi (variabel) Anda dengan debugger. Fitur yang memungkinkan Anda memeriksa variabel adalah beberapa fitur debugger yang paling berguna, dan ada berbagai cara untuk melakukannya. Seringkali, ketika Anda mencoba men-debug masalah, Anda mencoba mencari tahu apakah variabel menyimpan nilai yang Anda harapkan untuk mereka miliki dalam status aplikasi tertentu. Untuk informasi terperinci tentang penggunaan petunjuk data, lihat Melihat nilai data dalam petunjuk data.

Saat program dihentikan sementara di debugger, arahkan kursor ke objek dan Anda akan melihat nilainya atau nilai properti defaultnya.

Menampilkan Tip DataMenampilkan Tip Data

Jika variabel memiliki properti, Anda dapat memperluas objek untuk melihat semua propertinya.

Seringkali, saat debugging, Anda menginginkan cara cepat untuk memeriksa nilai properti pada objek, dan data tips adalah cara yang baik untuk melakukannya.

Memeriksa variabel dengan jendela Otomatis dan Lokal

Di jendela Autos, Anda akan melihat variabel bersama dengan nilainya saat ini dan jenisnya. Jendela Autos menunjukkan semua variabel yang digunakan pada baris saat ini atau baris sebelumnya (Di C++, jendela menunjukkan variabel dalam tiga baris kode sebelumnya. Periksa dokumentasi untuk perilaku khusus bahasa). Untuk informasi selengkapnya tentang menggunakan jendela ini, lihat Memeriksa variabel di jendela Otomatis dan Lokal.

Ketika melakukan debugging, lihat jendela Autos di bagian bawah editor kode.

Cuplikan layar yang memperlihatkan jendela Otomatis.Jendela otomatis

Jendela Otomatisjendela Otomatis

Nota

Di JavaScript, jendela Variabel Lokal didukung tetapi bukan jendela Autos.

Selanjutnya, lihat jendela lokal. Jendela Lokal menunjukkan variabel-variabel yang saat ini berada dalam cakupan.

Cuplikan layar yang memperlihatkan jendela Lokal.Jendela lokal

Jendela Jendela Variabel LokalJendela Variabel Lokal

Dalam contoh ini, objek dan objek berada dalam cakupan. Untuk informasi selengkapnya, lihat Memeriksa Variabel di Jendela Otomatis dan Lokal.

Mengatur arloji

Anda dapat menggunakan jendela Watch untuk menentukan variabel (atau ekspresi) yang ingin Anda pantau. Untuk informasi selengkapnya, lihat Set a Watch menggunakan Watch dan QuickWatch Windows.

Saat menelusuri kesalahan, klik kanan objek dan pilih Tambahkan Watch.

Cuplikan layar yang memperlihatkan jendela Watch. Jendela Watch.

jendela jendela arlojijendela arloji

Dalam contoh ini, Anda memiliki pemantauan yang diatur pada objek, dan Anda dapat melihat perubahan nilainya saat Anda menggunakan 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 Call Stack menunjukkan urutan di mana metode dan fungsi dipanggil. Baris atas menunjukkan fungsi saat ini. Baris kedua menunjukkan fungsi atau properti tempatnya dipanggil, dan sebagainya. Tumpukan panggilan adalah cara yang baik untuk memeriksa dan memahami alur eksekusi aplikasi. Untuk informasi terperinci, lihat Cara: Memeriksa Call Stack.

Nota

Jendela Call Stack mirip dengan perspektif Debug dalam beberapa IDE seperti Eclipse.

Pilih jendela Call Stack saat Anda melakukan debugging, yang secara bawaan terbuka di panel kanan bawah.

Cuplikan layar yang memperlihatkan jendela Call Stack.Memeriksa tumpukan panggilan

Periksa Tumpukan PanggilanPeriksa Tumpukan Panggilan

Anda dapat mengeklik dua kali baris kode untuk melihat langsung kode sumber tersebut, dan ini juga mengubah cakupan yang sedang diperiksa oleh debugger. Ini tidak memajukan debugger.

Anda juga dapat menggunakan menu klik kanan dari jendela Call Stack untuk melakukan hal lain. Misalnya, Anda dapat menyisipkan titik henti ke dalam fungsi tertentu, memulai ulang aplikasi menggunakan Jalankan ke Kursor, dan memeriksa kode sumber.

Memeriksa pengecualian

Saat aplikasi Anda melemparkan pengecualian, debugger membawa Anda ke baris kode yang melemparkan pengecualian. Untuk informasi mendetail, lihat Memeriksa pengecualian dengan menggunakan Pembantu Pengecualian.

Pembantu PengecualianPembantu Pengecualian

Dalam contoh ini, Pembantu Pengecualian menunjukkan pengecualian serta pesan kesalahan yang memberi tahu bahwa referensi objek tidak terhubung dengan instans objek. Dan itu memberi tahu kita bahwa nilai string adalah null ketika Anda mencoba memanggil metode .

Pembantu Pengecualian adalah fitur hebat yang dapat membantu Anda men-debug kesalahan. Anda juga dapat melakukan hal seperti melihat detail kesalahan dan menambahkan pemantauan dari Exception Helper. Atau, jika diperlukan, Anda dapat mengubah kondisi untuk melemparkan pengecualian tertentu. Untuk informasi selengkapnya tentang cara menangani pengecualian dalam kode Anda, lihat Teknik debugging dan alat.

Perluas simpul Pengaturan Pengecualian untuk melihat opsi lebih lanjut tentang cara menangani jenis pengecualian ini, tetapi Anda tidak perlu mengubah apa pun untuk tur ini!

Saran

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat men-debug pengecualian. Cukup cari Analisis dengan CopilotScreenshot tombol Analisis dengan Copilot.. Untuk informasi selengkapnya, lihat Debug dengan Copilot.

Saran

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat mendebug pengecualian. Cukup cari tombol Ask CopilotScreenshot dari tombol Ask Copilot.. Untuk informasi selengkapnya, lihat Debug dengan Copilot.

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat melakukan debugging. Untuk informasi selengkapnya, lihat Debug dengan Copilot. Saat melakukan debugging, Anda juga dapat mencari tombol Analisis dengan CopilotScreenshot tombol Analisis dengan Copilot. Dalam skenario ini, Copilot sudah mengetahui konteks untuk pertanyaan Anda, sehingga Anda tidak perlu memberikan konteks sendiri dalam obrolan Copilot.

Dapatkan bantuan AI

Jika Anda memiliki Copilot, Anda bisa mendapatkan bantuan AI saat sedang melakukan debugging. Untuk informasi selengkapnya, lihat Debug dengan Copilot. Saat debugging, Anda juga dapat mencari tombol Ask CopilotScreenshot tombol Ask Copilot.. 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 Anda untuk dibangun dalam 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 debugging adalah khusus untuk setiap jenis proyek. Misalnya, Anda dapat menentukan argumen untuk diteruskan ke aplikasi saat memulainya. Anda dapat mengakses properti khusus proyek dengan mengklik kanan proyek di Penjelajah Solusi dan memilih Properti. Properti debugging biasanya muncul di tab Build atau Debug, tergantung pada jenis proyek tertentu.

Mulai Visual Studio 2022, tab Debug untuk proyek .NET menyediakan tautan ke antarmuka pengguna profil peluncuran debug, tempat Anda dapat mengatur properti terkait debug.

Cuplikan layar yang memperlihatkan properti proyek.Properti proyek

Mulai Visual Studio 2022, tab Debug untuk proyek .NET menyediakan tautan ke antarmuka pengguna profil peluncuran debug, tempat Anda dapat mengatur properti terkait debug.

properti proyekproperti proyek

Debug aplikasi ASP.NET langsung di Azure App Service

Untuk debug di Azure App Service, lihat Debug aplikasi Azure.

Untuk Visual Studio Enterprise (hanya), Snapshot Debugger mengambil cuplikan aplikasi Anda yang sedang dalam produksi saat kode yang Anda minati dieksekusi. Untuk menginstruksikan debugger untuk mengambil rekam jepret, Anda mengatur snappoint dan titik log 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 rekam jepret tersedia untuk aplikasi ASP.NET yang berjalan di Azure App Service. ASP.NET aplikasi harus berjalan pada .NET Framework 4.6.1 atau yang lebih baru, dan aplikasi ASP.NET Core harus berjalan pada .NET Core 2.0 atau yang lebih baru pada Windows.

Untuk informasi selengkapnya, lihat cara melakukan debug aplikasi ASP.NET secara langsung menggunakan Snapshot Debugger.

Melihat rekam jepret dengan intelliTrace step-back (Visual Studio Enterprise)

langkah mundur IntelliTrace secara otomatis mengambil rekam jepret aplikasi Anda di setiap titik henti dan peristiwa langkah debugger. Rekam jepret yang direkam memungkinkan Anda kembali ke titik henti atau langkah sebelumnya dan melihat status aplikasi seperti di masa lalu. Langkah mundur IntelliTrace dapat menghemat waktu Anda saat Anda ingin melihat status aplikasi sebelumnya tetapi tidak ingin memulai ulang penelusuran kesalahan atau membuat ulang status aplikasi yang diinginkan.

Anda dapat menavigasi dan melihat rekam jepret dengan menggunakan Langkah Mundur dan tombol Langkah Maju di toolbar Debug. Tombol ini menavigasi peristiwa yang muncul di tab Peristiwa di jendela Alat Diagnostik.

Untuk informasi selengkapnya, lihat halaman Memeriksa status aplikasi sebelumnya menggunakan intelliTrace.

Pemecahan masalah kinerja

Jika aplikasi Anda berjalan terlalu lambat atau menggunakan terlalu banyak memori, Anda mungkin perlu menguji aplikasi 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 melihat sekilas banyak fitur debugger. Anda mungkin ingin melihat lebih mendalam salah satu fitur ini, seperti titik henti.

Pelajari cara menggunakan titik henti