Debugging mengacu pada proses dalam pengembangan perangkat lunak dimana analis program menyisir kode komputer mencari “bug” – sumber kesalahan, kekurangan atau lubang keamanan dalam instruksi program internal. Pengembangan perangkat keras juga melalui debugging untuk memastikan kompatibilitas dengan standar perangkat keras saat ini dan interoperabilitas antar komponen yang mematuhi protokol yang sama. Selain itu, debugging menjamin bahwa perangkat keras dan perangkat lunak kompatibel ke belakang, atau akan hidup berdampingan dengan standar yang sudah ada sebelumnya yang mungkin masih digunakan.
Debug perangkat lunak berlangsung dalam dua fase. Fase pertama dikenal sebagai “pengujian alfa”, dan dilakukan secara internal sebelum perangkat lunak dipublikasikan. Fase kedua dilakukan melalui proses publik yang dikenal sebagai “pengujian beta.” Penguji beta adalah penggemar komputer sukarela yang menggunakan perangkat lunak beta dengan risiko mereka sendiri berdasarkan kesepakatan bahwa kesalahan atau masalah akan dilaporkan ke pengembang.
Karena bug harus diisolasi dan diidentifikasi sebelum dapat ditambal, langkah pertama adalah menguji perangkat lunak dalam berbagai kondisi. Saat bug muncul dengan sendirinya, debugger mencatat kondisi persis di mana bug muncul, termasuk fungsi yang berjalan saat ini, jenis dan versi sistem operasi, dan komponen perangkat lunak atau perangkat keras lain yang mungkin relevan. Penguji beta publik mengirimkan laporan terperinci secara online yang mencantumkan detail terkait, biasanya dengan mengisi formulir yang telah dirancang sebelumnya.
Setelah kedua fase debugging selesai, program perangkat lunak siap untuk rilis umum sebagai versi stabil. Namun, debugging berlanjut sebagai protokol pemeliharaan untuk masa pakai produk, semakin intensif dengan peningkatan besar-besaran.
Perangkat keras di-debug sebelum mencapai pasar dan tidak menjalani pengujian beta dunia nyata, karena ini akan terlalu mahal dan bermasalah karena sejumlah alasan yang cukup jelas. Sebaliknya, sebagian besar produsen perangkat keras menyediakan antarmuka online di mana pengguna bisa mendapatkan dukungan teknis atau melaporkan masalah dengan perangkat keras. Dalam banyak kasus, masalah ini berubah menjadi kesalahan pengguna, tetapi prosesnya juga berfungsi untuk mengungkapkan bug yang tidak tertangkap pada fase debugging awal. Debugger dapat kembali ke instruksi yang dikodekan dalam chip pengontrol dan membuat perubahan untuk membersihkan perangkat keras dari bug. Pabrikan kemudian dapat menyediakan pembaruan firmware yang dapat diunduh pengguna secara online untuk memperbarui perangkat keras mereka.
Sementara debugging in-house tentu saja dapat menghilangkan perangkat lunak dan perangkat keras dari banyak bug, tidak ada yang menggantikan pengujian dunia nyata. Hampir tidak mungkin bagi pembuat atau pabrikan untuk mereplikasi setiap kondisi dan sistem yang memungkinkan di mana perangkat keras atau perangkat lunak akan digunakan. Banyak pengguna IBM-PC berpengalaman menunggu selama 12-36 bulan sebelum bermigrasi ke sistem operasi baru karena alasan ini, seperti beralih dari Windows™ XP™ ke Windows Vista™. Ini memberikan waktu kepada komunitas untuk mengidentifikasi masalah keamanan utama, bug, atau masalah awal lainnya yang mungkin memerlukan debugging dan patching.