Tracing kembali
Back tracing adalah menemukan titik akhir ke peristiwa yang terkait dengan fitur (lihat di bawah). Sesampai di sana, breakpoint ditempatkan di debugger. Fitur ini dipicu dan ketika debugger berhenti. Tumpukan panggilan ditinjau untuk melacak jejak jalur panggilan. Saat berjalan menumpuk tumpukan panggilan Anda dapat membuat catatan pada negara variabel, atau menempatkan breakpoints baru untuk memeriksa acara lagi.
Fitur ini terpicu lagi dan debugger berhenti di breakpoints baru. Anda kemudian dapat mengulangi pelacakan kembali atau melakukan pelacakan maju sampai tujuan ditemukan.
Pro kontra
- Itu selalu lebih mudah untuk berjalan tumpukan panggilan dan melihat bagaimana Anda sampai di suatu tempat.
- Mungkin ada jutaan kondisi yang perlu benar sebelum mencapai titik akhir. Jika Anda tahu titik akhirnya Anda telah menghemat banyak pekerjaan.
- Jika fitur ini rusak. Anda mungkin tidak pernah mencapai titik akhir, dan waktu bisa terbuang sia-sia untuk mencari tahu mengapa.
Penemuan Titik Akhir
Untuk men-debug fitur Anda harus tahu di mana dalam kode sumber tujuan akhir tercapai. Hanya dari titik ini Anda dapat melacak kembali untuk melihat bagaimana kode sampai di sana. Sebuah contoh; Untuk memahami bagaimana membatalkan dilakukan. Anda tahu di mana dalam kode semuanya dibatalkan, tetapi Anda tidak tahu bagaimana hal-hal itu sampai di sana . Ini akan menjadi kandidat untuk penelusuran balik untuk mengetahui cara kerja fitur.
Tracing Maju
Tracing ke depan adalah menemukan titik awal untuk peristiwa yang terkait dengan fitur (lihat di bawah). Sesampai di sana, pesan logging dimasukkan ke dalam kode sumber atau breakpoints diatur. Proses ini diulangi saat Anda berkembang lebih jauh dari titik awal hingga Anda menemukan tujuan untuk fitur tersebut.
Pro kontra
- Ini adalah titik awal termudah untuk menemukan fitur.
- Kompleksitas kode mengurangi efektivitas pelacakan maju. Semakin banyak kondisi dalam kode, semakin besar peluang Anda untuk pergi ke arah yang salah.
- Forward tracing seringkali menghasilkan pengaturan breakpoint yang akan dipicu oleh peristiwa yang tidak terkait. Mengganggu proses debugging dan mengganggu pencarian Anda.
Mulai Point Discovery
Anda dapat menggunakan kata kunci, pengidentifikasi antarmuka pengguna (ID tombol, nama jendela) atau mudah menemukan pendengar acara yang terkait dengan fitur tersebut. Misalnya, Anda dapat memulai dengan tombol yang digunakan untuk memicu fitur undo .
Proses Eliminasi
Anda dapat menganggap ini sebagai titik tengah dibandingkan dengan posisi titik awal dan titik akhir . Anda melakukan proses eliminasi ketika Anda sudah tahu sepotong kode digunakan dalam suatu fitur, tetapi itu bukan awal atau akhir dari fitur.
Arah yang Anda ambil dari titik tengah tergantung pada jumlah entri dan keluar. Jika potongan kode digunakan di banyak tempat, maka melacak kembali dari posisi ini bisa sangat memakan waktu karena mereka semua harus diperiksa. Anda kemudian menggunakan proses eliminasi untuk mengurangi daftar ini. Alternatif, Anda dapat melakukan jejak maju dari titik ini, tetapi sekali lagi jika kode memotong cabang ke banyak tempat ini juga bisa menjadi masalah.
Anda harus mengurangi arah posisi dengan tidak mengikuti jalur yang jelas tidak akan dieksekusi untuk fitur ini. Bergerak melewati kode ini dan hanya menempatkan breakpoint di mana kemungkinan terkait dengan fitur.
Debugging titik tengah sering membutuhkan fitur IDE lebih lanjut. Kemampuan untuk melihat hierarki kode dan dependensi. Tanpa alat-alat itu sulit dilakukan.
Pro kontra
- Poin tengah seringkali merupakan bagian pertama dari kode yang muncul di kepala Anda ketika Anda memikirkan fitur tersebut. Anda berkata pada diri sendiri, "Ah, itu harus menggunakan XXXX agar berfungsi."
- Poin tengah dapat mengungkapkan titik awal yang paling mudah.
- Poin tengah bisa menjadi cara mudah untuk mengambil jejak ke fitur saat hilang oleh sinkronisasi atau perubahan threading.
- Poin tengah dapat membawa Anda ke kode yang tidak Anda kenal. Menghabiskan waktu untuk mempelajari apa yang sedang terjadi.