Menavigasi melalui kode dengan menggunakan debugger Visual Studio
Artikel
Debugger Visual Studio dapat membantu Anda menavigasi melalui kode untuk memeriksa status aplikasi dan menunjukkan alur eksekusinya, yang juga dikenal sebagai kode melangkah. Anda dapat menggunakan pintasan keyboard, perintah debug, titik henti, dan fitur lainnya untuk mendapatkan kode yang ingin Anda periksa dengan cepat. Dengan lebih terbiasa dengan perintah navigasi debugger dan pintasan, Anda dapat menemukan dan mengatasi masalah aplikasi dengan lebih cepat dan lebih mudah. Untuk daftar pintasan keyboard yang paling umum terkait dengan navigasi kode dan penelusuran kesalahan, lihat bagian Debug di Pintasan keyboard.
Beberapa perintah navigasi memulai aplikasi Anda dan secara otomatis melampirkan debugger. Aplikasi Anda dijeda pada baris kode tertentu berdasarkan perintah yang Anda gunakan untuk memulai navigasi, dan Anda memasuki mode pemutusan (yaitu, aplikasi Anda dijeda di debugger).
Dalam mode jeda, eksekusi aplikasi ditangguhkan sementara fungsi, variabel, dan objek tetap dalam memori. Ketika debugger berada dalam mode jeda, Anda dapat menjelajahi kode Anda. Ada dua cara yang sangat umum untuk memasukkan mode istirahat dengan cepat:
Misalnya, di editor kode di Visual Studio, Anda dapat menggunakan perintah Run To Cursor untuk memulai aplikasi dengan debugger terpasang dan masuk ke mode jeda. Kemudian Anda dapat menggunakan perintah langkah untuk menavigasi kode.
Perintah langkah kode dapat digunakan untuk memulai aplikasi Anda, tetapi lebih umum digunakan setelah Anda memasukkan mode jeda.
Menavigasi kode saat dalam mode jeda
Beberapa perintah navigasi sebagian besar digunakan saat dalam mode jeda (yaitu, saat Anda dijeda di debugger).
Perintah penjejakan kode umumnya digunakan dalam mode jeda.
Beberapa perintah seperti Jalankan untuk mengklik hanya dapat digunakan saat dalam mode istirahat.
Mode debugging dan jeda
Saat berada dalam mode jeda, Anda dapat menggunakan berbagai perintah untuk menavigasi melalui kode Anda. Anda dapat memeriksa nilai variabel untuk mencari pelanggaran atau bug. Untuk beberapa jenis proyek, Anda juga dapat melakukan penyesuaian pada aplikasi saat Anda berada dalam mode istirahat.
Sebagian besar jendela debugger, seperti modul dan jendela Watch, hanya tersedia saat debugger dilampirkan ke aplikasi Anda. Beberapa fitur debugger, seperti melihat nilai variabel di jendela Locals atau mengevaluasi ekspresi di jendela Watch, hanya tersedia saat debugger dijeda (yaitu, dalam mode jeda).
Catatan
Jika Anda memasuki kode yang tidak memiliki file sumber atau simbol (.pdb) yang dimuat, debugger menampilkan halaman File Sumber Tidak Ditemukan atau Simbol Tidak Ditemukan yang dapat membantu Anda menemukan dan memuat file. Lihat Tentukan simbol (.pdb) dan file sumber. Jika Anda tidak dapat memuat file simbol atau file sumber, Anda masih dapat men-debug instruksi assembly di jendela Pembongkaran.
Penelusuran Kode
Penelusuran kode mengacu pada menjalankan kode aplikasi Anda satu per satu, dengan debugger terpasang. Perintah langkah debugger membantu Anda mengamati efek dari setiap pernyataan dan mencari tahu lebih lanjut tentang alur eksekusinya.
Melangkah ke dalam kode
Untuk berhenti pada setiap pernyataan saat Anda menelusuri kesalahan, gunakan Debug>Masuk ke, atau pilih F11.
Debugger melangkah melalui perintah kode, bukan baris fisik. Misalnya, klausa if dapat ditulis pada satu baris:
int x = 42;
string s = "Not answered";
if( int x == 42) s = "Answered!";
Dim x As Integer = 42
Dim s As String = "Not answered"
If x = 42 Then s = "Answered!"
Tetapi ketika Anda melangkah ke baris ini, debugger memperlakukan kondisi sebagai satu langkah dan konsekuensinya sebagai langkah lain. Dalam contoh sebelumnya, kondisinya benar.
Pada panggilan fungsi berlapis, Langkah Ke langkah-langkah ke dalam fungsi yang paling berlapis. Misalnya, jika Anda menggunakan Step Into pada panggilan seperti Func1(Func2()), debugger melangkah ke fungsi Func2.
Anda mungkin tidak peduli terhadap suatu fungsi saat melakukan debugging. Atau Anda mungkin tahu beberapa kode berfungsi, seperti kode pustaka yang diuji dengan baik. Anda dapat menggunakan perintah berikut untuk melewati kode saat Anda melakukan penelusuran kode. Fungsi-fungsi tersebut masih berjalan, tetapi debugger melewatkannya.
Perintah keyboard
Perintah Menu Debug
Deskripsi
F10
Melangkahi
Jika baris saat ini berisi panggilan fungsi, Step Over menjalankan kode lalu menangguhkan eksekusi pada baris pertama kode setelah fungsi yang disebut kembali.
Shift+F11
Melangkah Keluar
Step Out terus menjalankan kode dan menangguhkan eksekusi saat fungsi saat ini kembali. Debugger melewati fungsi saat ini.
Pergi ke lokasi atau fungsi tertentu
Anda mungkin lebih suka langsung menuju lokasi atau fungsi tertentu ketika Anda tahu dengan tepat kode apa yang ingin Anda periksa atau jika Anda tahu di mana Anda ingin memulai debugging.
Mengatur titik henti adalah yang terbaik jika Anda merasa ingin menggunakan kembali titik henti.
Metode lain adalah untuk kenyamanan, dan mirip dengan mengatur titik henti sementara.
Jalankan ke titik henti dalam kode
Untuk mengatur titik henti sederhana dalam kode Anda, pilih margin paling kiri di samping baris kode tempat Anda ingin menangguhkan eksekusi. Anda juga dapat memilih baris lalu memilih F9, pilih Debug>Ganti Titik Henti, atau klik kanan dan pilih Titik Henti>Sisipkan Titik Henti. Titik henti muncul sebagai titik merah di margin kiri di samping baris kode. Debugger menangguhkan eksekusi tepat sebelum baris berjalan.
Titik henti di Visual Studio menyediakan serangkaian fungsionalitas yang kaya, seperti titik henti kondisional dan titik pelacakan. Untuk detailnya, lihat Menggunakan titik henti.
Jalankan ke titik henti fungsi
Anda dapat mengatur debugger untuk dijalankan hingga mencapai fungsi yang ditentukan. Anda dapat menentukan fungsi berdasarkan nama, atau Anda dapat memilihnya dari tumpukan panggilan.
Untuk menentukan titik henti fungsi berdasarkan nama:
Pilih Debug>Titik Henti Baru>Titik Henti Fungsi.
Dalam dialog Titik Henti Fungsi Baru, masukkan nama fungsi dan pilih bahasanya:
Pilih OK.
Jika fungsi di-overload atau berada di lebih dari satu namespace, Anda dapat memilih yang Anda inginkan di jendela Titik Henti:
Untuk memilih titik henti fungsi dari tumpukan panggilan:
Saat melakukan debug, buka jendela Call Stack dengan memilih Debug>Windows>Call Stack.
Pada jendela Call Stack , klik kanan pada fungsi dan pilih Jalankan Ke Kursor, atau pilih Ctrl+F10.
Untuk menjalankan kode ke lokasi kursor, pada kode sumber atau jendela Call Stack, pilih baris yang ingin Anda hentikan, kemudian klik kanan dan pilih Jalankan ke Kursor, atau pilih Ctrl+F10. Memilih Jalankan Ke Kursor mirip dengan mengatur titik henti sementara .
Paksa untuk menjalankan ke lokasi kursor
Untuk menjalankan ke posisi kursor, dalam kode sumber atau jendela Call Stack, pilih baris di mana Anda ingin berhenti, lalu klik kanan dan pilih Paksa Jalankan hingga Kursor. Memilih Paksa Jalankan Ke Kursor akan melewati titik henti dan pengecualian kesempatan pertama hingga debugger mencapai baris kode tempat kursor berada.
Jalankan untuk mengklik
Saat debugger dijeda, Anda dapat menggerakkan kursor mouse ke pernyataan dalam kode sumber atau jendela Pembongkaran dan memilih panah hijau Jalankan eksekusi hingga di sini. Menggunakan Run to Click mirip dengan menetapkan breakpoint sementara .
Catatan
Jalankan ke Klik tersedia mulai dari Visual Studio 2017.
Paksa jalankan dengan mengklik
Saat debugger dijeda, Anda dapat menggerakkan mouse ke atas pernyataan dalam kode sumber sambil menekan tombol Shift, kemudian pilih Jalankan paksa eksekusi hingga di sini (ditandai dengan panah hijau ganda). Saat Anda memilih opsi ini, aplikasi menghubungkan debugger Visual Studio dan berhenti sejenak di lokasi kursor. Setiap titik henti dan pengecualian kesempatan pertama yang ditemukan selama eksekusi untuk sementara dinonaktifkan.
Catatan
Paksa Jalankan ke Klik tersedia mulai dari Visual Studio 2022.
Memecah kode secara manual
Untuk memasuki baris kode berikutnya yang tersedia di aplikasi yang sedang berjalan, pilih Debug>Break All, atau pilih Ctrl+Alt+Break.
Debug kode non-pengguna
Secara default, debugger mencoba men-debug hanya kode aplikasi Anda dengan mengaktifkan pengaturan yang disebut Just My Code. Untuk detail tentang cara kerja fitur ini untuk berbagai jenis dan bahasa proyek, dan bagaimana Anda dapat menyesuaikannya, lihat Just My Code.
Untuk melihat kode kerangka kerja, kode pustaka pihak ketiga, atau panggilan sistem saat penelusuran kesalahan, Anda dapat menonaktifkan Just My Code. Di Tools (atau Debug) >Opsi>Debugging , kosongkan kotak centang Aktifkan Just My Code. Ketika Just My Code dinonaktifkan, kode non-pengguna muncul di jendela debugger, dan debugger dapat masuk ke kode non-pengguna.
Catatan
Just My Code tidak didukung untuk proyek perangkat keras.
Kode debug sistem
Jika Anda telah memuat simbol penelusuran kesalahan untuk kode sistem Microsoft dan menonaktifkan Just My Code, Anda dapat memasuki panggilan sistem sama seperti panggilan lainnya.
Mulai dari Visual Studio 2022 versi 17.7, Anda dapat mendekompilasi otomatis kode .NET saat melangkah ke kode eksternal tanpa perlu memuat simbol debugging secara manual. Untuk informasi selengkapnya, lihat Membuat kode sumber dari rakitan .NET saat debugging.
Untuk memuat simbol untuk komponen sistem tertentu:
Saat Anda melakukan debug, buka jendela Modul dengan memilih Debug>Jendela>Modul atau dengan menekan Ctrl+Alt+U.
Di jendela Modul, Anda dapat mengetahui modul mana yang memiliki simbol yang dimuat di kolom Status Simbol. Klik kanan modul yang ingin Anda muat simbolnya lalu pilih Muat Simbol.
Mendalami properti dan operator dalam kode terkelola
Debugger secara default melewati properti dan operator dalam kode terkelola. Dalam kebanyakan kasus, perilaku ini memberikan pengalaman pemecahan kesalahan yang lebih baik. Untuk mengaktifkan langkah ke properti atau operator, pilih Debug>Opsi. Pada halaman Debugging> Umum, kosongkan kotak centang Langkah atas properti dan operator (Hanya terkelola).
Memindahkan penunjuk untuk mengubah alur eksekusi
Anda dapat mengubah perintah berikutnya yang akan dieksekusi dengan memindahkan penunjuk eksekusi kuning. Anda dapat menggunakan fitur ini saat dalam mode istirahat.
Pelajari cara men-debug aplikasi .NET Anda secara efisien dengan menggunakan Visual Studio untuk memperbaiki bug Anda dengan cepat. Gunakan debugger interaktif dalam Visual Studio untuk menganalisis dan memperbaiki aplikasi C# Anda.