Dalam ilmu komputer dan rekayasa perangkat lunak, pengawakutuan (bahasa Inggris: debugging) adalah metode sistematis yang dilakukan oleh para pemrogram dan pengembang untuk menganalisis alur kerja program, melacak, menemukan, dan mengurangi kutu (bug) atau cacat di dalam sebuah perangkat lunak maupun perangkat keras komputer agar dapat beroperasi sesuai dengan spesifikasi yang diharapkan.[1]
Pengawakutuan merupakan proses yang dinamis dan cenderung rumit ketika beberapa subsistem di dalam arsitektur perangkat keras atau perangkat lunak terikat secara ketat (tightly coupled). Dalam kondisi tersebut, sebuah perubahan kecil di satu sisi memicu munculnya kutu baru atau efek samping tak terduga di subsistem lainnya. Selain pada aplikasi komputer, pengawakutuan juga sangat krusial dalam pengembangan sistem tertanam (embedded systems) untuk mendeteksi kesalahan sinkronisasi sinyal, interupsi, atau kegagalan protokol komunikasi perangkat keras.
Tahapan pengawakutuan
suntingProses pengawakutuan umumnya melibatkan beberapa tahapan terstruktur berikut:
- Identifikasi Galat: Menemukan atau menerima laporan mengenai perilaku program yang tidak normal atau tidak sesuai dengan spesifikasi.
- Isolasi dan Lokalisasi: Memisahkan kode atau subsistem yang bermasalah dari keseluruhan sistem untuk menentukan lokasi persis di mana kutu tersebut berada.
- Analisis Penyebab Akar (Root Cause Analysis): Memeriksa nilai variabel, logika algoritme, atau status memori untuk memahami mengapa galat tersebut dapat terjadi.
- Penerapan Perbaikan: Mengubah kode program atau konfigurasi perangkat keras untuk menyelesaikan masalah tanpa merusak fungsi yang sudah berjalan.
- Pengujian Regresi: Melakukan pengujian perangkat lunak ulang untuk memastikan bahwa perbaikan yang diterapkan telah berhasil dan tidak menimbulkan kutu baru di tempat lain.
Teknik dan strategi
suntingTerdapat berbagai teknik yang sering digunakan oleh pengembang untuk melakukan pengawakutuan, bergantung pada kompleksitas masalah yang dihadapi:
- Pengawakutuan Cetak (Print debugging): Teknik paling mendasar dengan menyisipkan perintah cetak teks (seperti fungsi cetak log atau keluaran serial) di titik-titik tertentu untuk memantau aliran eksekusi dan nilai variabel secara langsung saat program berjalan.
- Pengawakutuan Jarak Jauh (Remote debugging): Proses memeriksa jalannya program yang dieksekusi pada sistem atau perangkat eksternal yang berbeda (misalnya dari komputer pengembangan ke papan mikrokontroler atau peladen jarak jauh).
- Analisis Pascakematian (Post-mortem debugging): Pengawakutuan yang dilakukan setelah program mengalami kegagalan fatal (crash) dengan menganalisis berkas log atau salinan memori core (core dump) yang ditinggalkan oleh sistem.
Peralatan
suntingAlat bantu pengawakutuan bervariasi dalam hal kompleksitas, mulai dari pelacakan manual hingga penggunaan perangkat lunak dan perangkat keras khusus.
Pengawakutu (Debugger)
suntingKebanyakan bahasa pemrograman dan lingkungan pengembangan terpadu (IDE) modern telah menyediakan pengawakutu (debugger) internal. Alat ini memungkinkan pemrogram mengendalikan eksekusi program secara interaktif melalui fitur-fitur seperti:
- Titik henti (Breakpoint): Menghentikan jalannya program secara sementara pada baris kode tertentu agar pemrogram dapat memeriksa kondisi memori saat itu.
- Eksekusi bertahap (Stepping): Menjalankan kode baris demi baris (baik melompati fungsi atau masuk ke dalam fungsi) untuk melihat alur kerja algoritme secara mendetail.
- Pemantau variabel (Watch expression): Mengamati perubahan nilai dari suatu variabel atau ekspresi secara langsung selama program berjalan.
Peralatan Perangkat Keras
suntingUntuk pengawakutuan sistem tingkat rendah, perangkat keras komputer, dan sistem tertanam, pengembang memerlukan bantuan alat fisik untuk memeriksa sinyal elektris dan data biner pada jalur bus komunikasi data:
| Peralatan Perangkat Keras | Fungsi Utama dalam Pengawakutuan |
|---|---|
| Penganalisis logika (Logic analyzer) | Menangkap dan menampilkan sinyal digital dari sirkuit elektronik untuk menganalisis kebenaran protokol komunikasi data. |
| Oskiloskop | Mengukur dan menampilkan grafik tegangan sinyal listrik untuk mendeteksi adanya derau, penurunan daya, atau cacat fisik pada sirkuit hardware. |
| Emulator Di-Dalam-Sirkuit (In-Circuit Emulator / ICE) | Perangkat keras pembantu yang menjembatani mikroprosesor target dengan komputer pengembang untuk mensimulasikan dan mengendalikan perilaku prosesor secara langsung. |
Lihat pula
suntingReferensi
sunting- ^ (Indonesia) Glosarium Pusat Bahasa Departemen Pendidikan Nasional Republik Indonesia "Entri lema pengawakutuan". Diakses tanggal 2020-03-27.