Bagikan melalui


Menggunakan peta kode untuk men-debug aplikasi Anda

Peta kode di Visual Studio dapat membantu Anda menghindari hilangnya basis kode besar, kode yang tidak dikenal, atau kode warisan. Misalnya, saat menelusuri kesalahan, Anda mungkin harus melihat kode di banyak file dan proyek. Gunakan peta kode untuk menavigasi sekeliling potongan kode dan memahami hubungan di antaranya. Dengan begitu, Anda tidak perlu melacak kode ini di kepala Anda, atau menggambar diagram terpisah. Jadi, ketika pekerjaan Anda terganggu, peta kode membantu menyegarkan memori Anda tentang kode yang sedang Anda kerjakan.

Code map - Map relationships in code

Panah hijau memperlihatkan di mana kursor Anda muncul di editor

Untuk detail perintah dan tindakan yang dapat Anda gunakan saat bekerja dengan peta kode, lihat Menelusuri dan menyusun ulang peta kode.

Pelajari selengkapnya tentang penelusuran kesalahan di Visual Studio dengan alat Debugger.

Catatan

Untuk membuat dan mengedit peta kode, Anda memerlukan edisi Visual Studio Enterprise. Dalam edisi Komunitas dan Profesional Visual Studio, Anda dapat membuka diagram yang dihasilkan di edisi Enterprise, tetapi Anda tidak dapat mengeditnya.

Memahami masalahnya

Misalkan ada bug dalam program gambar yang sedang Anda kerjakan. Untuk mereproduksi bug, Anda membuka solusi di Visual Studio dan menekan F5 untuk memulai penelusuran kesalahan.

Ketika Anda menggambar garis dan memilih Batalkan goresan terakhir saya, tidak ada yang terjadi sampai Anda menggambar baris berikutnya.

Code map - Repro bug

Jadi Anda mulai menyelidiki dengan mencari metode Undo. Anda menemukannya di kelas PaintCanvas.

Code map - Find code

Mulai pemetaan kode

Sekarang mulai pemetaan metode undo dan hubungannya. Dari editor kode, Anda menambahkan metode undo dan bidang yang dirujuknya ke peta kode baru. Saat Anda membuat peta baru, mungkin perlu waktu untuk mengindeks kode. Ini membantu operasi nanti berjalan lebih cepat.

Code map - Show method and related fields

Tip

Penyorotan hijau memperlihatkan item terakhir yang ditambahkan ke peta. Panah hijau menunjukkan posisi kursor Anda dalam kode. Panah di antara item mewakili hubungan yang berbeda. Anda bisa mendapatkan info lebih lanjut tentang item di peta dengan menggerakkan mouse di atasnya dan memeriksa tips alatnya.

Code map - Show tooltips

Untuk melihat definisi kode untuk setiap bidang, klik dua kali bidang pada peta atau pilih bidang dan tekan F12. Panah hijau berpindah antar item di peta. Kursor Anda di editor kode juga bergerak secara otomatis.

Screenshot of a code map window with the history field selected and a code editor window where all instances of history are highlighted.

Screenshot of a code map window with the paintObjects field selected and a code editor window where all instances of paintObjects are highlighted.

Tip

Anda juga dapat memindahkan panah hijau di peta dengan memindahkan kursor Anda di editor kode.

Memahami hubungan antara potongan kode

Sekarang Anda ingin tahu kode lain mana yang berinteraksi dengan bidang history dan paintObjects. Anda dapat menambahkan semua metode yang mereferensikan bidang ini ke peta. Anda dapat melakukan ini dari peta atau dari editor kode.

Code map - Find all references

Open a code map from the code editor

Catatan

Jika Anda menambahkan item dari proyek yang dibagikan di beberapa aplikasi, seperti Windows Phone atau Windows Store, item tersebut selalu muncul dengan proyek aplikasi yang saat ini aktif di peta. Jadi, jika Anda mengubah konteks ke proyek aplikasi lain, maka konteks pada peta juga berubah untuk item yang baru ditambahkan dari proyek bersama. Operasi yang Anda lakukan dengan item di peta hanya berlaku untuk item yang memiliki konteks yang sama.

Ubah tata letak untuk mengatur ulang alur hubungan dan membuat peta lebih mudah dibaca. Anda juga dapat memindahkan item di sekitar peta dengan menyeretnya.

Screenshot of a code map window with the Layout menu open and the Left to Rgiht command selected.

Tip

Secara default, Tata Letak Bertambah Bertahap diaktifkan. Ini mengatur ulang peta sesedikitan mungkin saat Anda menambahkan item baru. Untuk mengatur ulang seluruh peta setiap kali Anda menambahkan item baru, nonaktifkan Tata Letak Bertambah Bertahap.

Screenshot of a code map window with the relationshiop arrows between the fields pointing from left to right.

Mari kita periksa metode ini. Pada peta, klik dua kali metode PaintCanvas, atau pilih metode ini dan tekan F12. Anda mempelajari bahwa metode ini membuat history dan paintObjects sebagai daftar kosong.

Screenshot of a code map window with the PaintCanvas method selected and a code snippet image showing the PainCanvas method name highlighted.

Sekarang ulangi langkah yang sama untuk memeriksa definisi metode clear. Anda mempelajari bahwa clear melakukan beberapa tugas dengan paintObjects dan history. Kemudian memanggil metode Repaint.

Screenshot of a code map window with the Clear method selected and a code snippet image showing the code for the Clear method.

Sekarang periksa definisi metode addPaintObject. Ini juga melakukan beberapa tugas dengan history dan paintObjects. Ini juga memanggil Repaint.

Screenshot of a code map window with the addPaintObject method selected and a code snippet image showing the code for the addPaintObject method.

Temukan masalah dengan memeriksa peta

Tampaknya semua metode yang memodifikasi history dan paintObjects memanggil Repaint. Namun metode undo ini tidak memanggil Repaint, meskipun undo memodifikasi bidang yang sama. Jadi Anda pikir Anda dapat memperbaiki masalah ini dengan memanggil Repaint dari undo.

Code map - Find missing method call

Jika Anda tidak memiliki peta untuk menunjukkan kepada Anda panggilan yang hilang ini, mungkin lebih sulit untuk menemukan masalah ini, terutama dengan kode yang lebih kompleks.

Bagikan penemuan Anda dan langkah berikutnya

Sebelum Anda atau orang lain memperbaiki bug ini, Anda dapat membuat catatan di peta tentang masalah dan cara memperbaikinya.

Code map - Comment and flag items for followup

Misalnya, Anda dapat menambahkan komentar ke peta dan menandai item menggunakan warna.

Code map - Commented and flagged items

Jika Microsoft Outlook terinstal, Anda dapat mengirim peta melalui email ke orang lain. Anda juga dapat mengekspor peta sebagai gambar atau format lain.

Code map - Share, export, mail

Perbaiki masalah dan tunjukkan apa yang Anda lakukan

Untuk memperbaiki bug ini, Anda menambahkan panggilan Repaint ke undo.

Code map - Add missing method call

Untuk mengonfirmasi perbaikan, Anda menghidupkan ulang sesi penelusuran kesalahan dan mencoba mereprodusi bug. Sekarang memilih Batalkan stroke terakhir saya bekerja seperti yang Anda harapkan dan mengonfirmasi Anda membuat perbaikan yang benar.

Code map - Confirm code fix

Anda dapat memperbarui peta untuk menampilkan perbaikan yang Anda buat.

Code map - Update map with missing method call

Peta Anda sekarang menampilkan tautan antara batalkan dan Gambar Ulang.

Code map - Updated map with method call

Catatan

Saat memperbarui peta, Anda mungkin melihat pesan yang mengatakan indeks kode yang digunakan untuk membuat peta Anda diperbarui. Ini berarti seseorang mengubah kode, yang menyebabkan peta Anda tidak cocok dengan kode saat ini. Ini tidak menghentikan Anda memperbarui peta, tetapi Anda mungkin harus membuat ulang peta untuk mengonfirmasi bahwa peta cocok dengan kode tersebut.

Sekarang Anda sudah selesai dengan penyelidikan Anda. Anda berhasil menemukan dan memperbaiki masalah dengan memetakan kode. Anda juga memiliki peta yang membantu Anda menavigasi di sekitar kode, mengingat apa yang Anda pelajari, dan menunjukkan langkah-langkah yang Anda ambil untuk memperbaiki masalah.