Pentingnya Penggunaan Debugger dalam Pengembangan Software

Tidak perlu mengawang-awang alur eksekusi kode program kalau ada bug/error :D

Muhammad Ridho K. Pratama
Ridho's Personal Note
3 min readNov 5, 2017

--

gambar diambil dari sini

debugger

/dēˈbəɡər/

(n) a computer program that assists in the detection and correction of errors in computer programs.

Sudah cukup jelas, debugger itu apa hehehe 😅.

Mengapa penting?

Bayangkan ketika kita mengembangkan sebuah software yang memiliki codebase yang sudah sedemikian besar, lalu tiba-tiba dikemudian hari muncul error yang sangat misterius, dan tidak diketahui asalnya darimana, dan penyebabnya apa, debugging merupakan hal yang melelahkan.

Bagi yang belum pernah menggunakan atau yang belum terbiasa menggunakan debugger mungkin akan menggunakan standard output macam console.log(var) , NSLog(format:args:) , atau bahkan printf(format,args) untuk mencetak nilai-nilai dari suatu variable yang ditengarai sebagai penyebab error/bug. Menjemukan sekali.

Selain itu, jika tidak menggunakan debugger, seringkali developer mengawang-awang alur eksekusi kode programnya untuk mencari tahu, di proses manakah yang menyebabkan error/bug. Tambah pusing deh, hehe.

Dengan menggunakan debugger, akan lebih mudah untuk melakukan pencarian penyebab terjadinya bug, dikarenakan kita dapat memerintahkan debugger untuk menghentikan sejenak proses eksekusi, supaya kita memiliki cukup waktu untuk menganalisis nilai-nilai dari variabel yang terlibat dalam kode program yang mengalami bug, dan juga memungkinkan kita untuk melanjutkan eksekusi tiap barisnya secara manual (eksekusi-break-eksekusi-break-dst).

Bagian-bagian yang ada dalam debugger

Debugger biasanya telah tersedia pada masing-masing IDE yang cukup canggih, ataupun teks editor yang menyediakan fitur untuk debugging (VS Code), dan memiliki bagian-bagian yang digunakan untuk mengontrol proses debugging dan monitoring.

Debugger di tiap IDE memiliki setidaknya beberapa bagian dibawah (PS: penamaan mungkin saja berbeda di tiap IDE, hehe) :

1. Call Stack Watcher

Bagian ini menunjukkan call stack pada pengeksekusian kode program. Call stack digunakan untuk menyimpan informasi-informasi terkait pengeksekusian suatu function, mulai dari parameter-parameter yang dilewatkan dalam function, maupun informasi terkait nilai-nilai variabel yang dideklarasikan didalam function tersebut.

Xcode call stack watcher

2. Variable Watcher & Log Output

Bagian ini digunakan untuk melihat nilai dari variabel ketika runtime, yang dihentikan sejenak menggunakan breakpoint, supaya kita bisa memiliki cukup banyak waktu untuk menganalisis nilai-nilai variabel yang terlibat.

Xcode variable watcher & log output

3. Debug Control

Bagian ini digunakan untuk mengontrol proses debugging, seperti melakukan start/stop debug, pause/continue eksekusi kode program, step over instruction, step into, step out, dan lain-lain

IntelliJ IDEA Debug Control
Xcode Debug Control

4. Breakpoint

Ini digunakan untuk penanda supaya eksekusi kode program ketika proses debugging harus dihentikan sejenak di titik tersebut, lalu sebagian proses eksekusi kode program satu per satu bisa kita lanjutkan secara manual. Jika tidak ada breakpoint maka kode program akan terus berjalan hingga selesai.

Xcode breakpoint list

Penggunaan debugger untuk keperluan lain :D

Saya biasa menggunakan debugger untuk membantu dalam menjelaskan kepada praktikan tentang bagaimana alur eksekusi suatu kode program dari awal hingga selesai, bagaimana perubahan nilai-nilai variabelnya, hingga bagaimana cara menganalisisnya jika terjadi bug. Praktikan juga sedari awal sudah diajarkan dasar-dasar dalam menggunakan debugger untuk membantu mereka untuk lebih memahami alur eksekusi kode program.

Harapan

Semoga para developer dapat memaksimalkan kemampuan debugger untuk membantunya dalam proses debugging 😄.

--

--