Debugging adalah alat yang sangat berguna untuk memeriksa keadaan objek dan variabel dalam kode Anda saat run time.
Seperti yang disebutkan sebelumnya dalam jawaban di atas, debugging sangat membantu, tetapi ada beberapa kasus di mana itu terbatas.
Dalam pengalaman saya, saya menemukan menggunakan debugger sangat berguna karena membantu mengungkapkan asumsi palsu yang saya buat tentang keadaan kode saya. Beberapa orang tidak begitu pandai membaca kode untuk menemukan bug, sehingga debugging dapat membantu mengungkapkan asumsi palsu yang Anda atau pengembang lain buat tentang keadaan kode.
Mungkin Anda berharap bahwa suatu parameter tidak akan menjadi nol ketika diteruskan ke suatu metode, jadi Anda tidak pernah memeriksa kasus itu dan melanjutkan dalam metode seolah-olah parameter itu tidak akan pernah menjadi nol. Kenyataannya adalah bahwa parameter pada akhirnya akan menjadi nol di beberapa titik bahkan jika Anda menetapkan sebagai pra-kondisi untuk metode yang parameternya tidak boleh nol. Itu akan selalu terjadi.
Berbeda dengan kegunaan debuggers dalam contoh-contoh di atas, saya merasa sulit dan agak tidak berguna untuk digunakan ketika multi-threading (yaitu, concurrency, pemrosesan asinkron) terlibat. Ini bisa membantu, tetapi mudah untuk kehilangan orientasi Anda dalam kabut multi-ulir ketika breakpoint debugger dipukul di satu utas di titik A dan utas yang sepenuhnya terpisah di titik B. Pengembang dipaksa untuk mendorong breakpoint baru " proses berpikir "di atas" tumpukan "otaknya dan mengarahkan dirinya ke kode pada titik breakpoint baru. Setelah relevansi breakpoint B menurun, pengembang kemudian beralih kembali ke breakpoint pertama, dan harus mengingat apa yang dia cari sebelum pemicu breakpoint B. Saya tahu ini mungkin penjelasan yang membingungkan,
Selain itu, ketidakpastian kode konkurensi dapat mengalihkan perhatian pengembang dalam debugging kode konkurensi.
Kesimpulannya, menurut pendapat jujur saya:
- Debugging saat konkurensi digunakan = peningkatan kecenderungan kehilangan fokus "pola pikir debugging"
dan
- kapan saja = peningkatan produktivitas debugging b / c perhatian Anda tidak terganggu oleh breakpoint yang tidak terduga (tidak terduga karena kondisi balapan).