Apa itu debugging?

Agen asuransi yang senang berhasil mencapai kesepakatan dengan pasangan pada pertemuan di kantor

Penyusun

Camilo Quiroz-Vázquez

IBM Staff Writer

Apa itu debugging?

Debugging adalah proses menemukan, mengisolasi dan menyelesaikan kesalahan pengkodean yang dikenal sebagai bug dalam program perangkat lunak. Debugging membantu mengungkap penyebab kesalahan pengkodean, mencegah masalah fungsi perangkat lunak, dan meningkatkan kinerja perangkat lunak secara keseluruhan.

Kesalahan pengodean seperti kesalahan logika, kesalahan waktu proses, kesalahan sintaksis, dan kesalahan semantik dapat menyebabkan kerusakan, output yang salah atau tidak akurat, kerentanan keamanan, dan kehilangan data. Tidak seperti pengujian perangkat lunak, yang memungkinkan pengembang untuk menyelidiki efek dari kesalahan ini dalam kode sumber program, debugging mencari akar masalah dan remediasi dari kesalahan ini.

Melalui proses debugging, pengembang perangkat lunak melakukan analisis akar masalah untuk memastikan bug yang ditemukan dalam program komputer diperbaiki dan tidak terjadi lagi. Bug dapat berdampak negatif pada stabilitas perangkat lunak, keandalan, dan pengalaman pengguna. Alat bantu dan strategi debugging membantu mengoptimalkan proses debugging.

Pemandangan udara dari jalan raya

Dapatkan ketenangan saat menggunakan cloud 


Dapatkan Buletin Think mingguan untuk mendapatkan panduan pakar dalam mengoptimalkan pengaturan multicloud di era AI.

Proses debugging

Debugging biasanya melibatkan enam langkah:

- Mereproduksi kondisi
- Menemukan bug
- Menemukan akar masalah
- Memperbaiki bug
- Menguji untuk memvalidasi perbaikan
- Mendokumentasikan prosesnya

Langkah 1: Mereproduksi kondisi

Proses debugging memerlukan kekhususan; para insinyur tidak dapat mengandalkan deskripsi masalah dari tangan kedua untuk mendiagnosisnya secara akurat. Oleh karena itu, langkah pertama dalam proses debugging adalah mereplikasi kondisi yang menyebabkan bug muncul. Mereproduksi bug memungkinkan programmer dan insinyur untuk mengamati kesalahan secara langsung dan mengumpulkan data kontekstual untuk sisa proses debugging.

Langkah 2: Menemukan bug

Langkah selanjutnya adalah menentukan sumber bug seakurat mungkin dengan meneliti kode secara menyeluruh dan meninjau log yang tersedia. Pada langkah ini, pengembang biasanya mengandalkan alat debugging yang memudahkan mereka untuk menelusuri potongan-potongan kode yang besar, daripada bekerja secara manual.

Langkah 3: Menentukan akar masalahnya

Pengembang menentukan apa yang menyebabkan bug dengan memeriksa logika dan alur kode dan bagaimana berbagai komponen kode berinteraksi dalam kondisi tertentu di mana bug terjadi.

Langkah 4: Memperbaiki bug

Langkah ini biasanya melibatkan pemecahan masalah dan merevisi kode untuk memperbaiki masalah serta mengkompilasi ulang dan menjalankan kembali perangkat lunak untuk memastikan bug telah diperbaiki. Revisi ini mungkin melibatkan beberapa iterasi karena upaya pertama dapat gagal atau secara tidak sengaja memunculkan bug baru.

Sebagian besar pengembang menggunakan sistem kontrol versi untuk melacak perubahan, sehingga mereka dapat dengan mudah mengembalikan modifikasi yang tidak menyelesaikan masalah atau membuat masalah baru.

Langkah 5: Menguji untuk memvalidasi perbaikan

Pengujian yang dijalankan setelah perbaikan bug meliputi:

  • Pengujian unit, yang menguji segmen kode individual yang diubah untuk memperbaiki bug
  • Pengujian integrasi, yang menguji seluruh modul yang berisi bug yang diperbaiki
  • Pengujian sistem, yang menguji seluruh sistem di mana modul yang diubah berjalan
  • Pengujian regresi, yang memastikan bahwa kode yang diperbaiki tidak memengaruhi kinerja aplikasi, yaitu, aplikasi tidak mengalami kemunduran karena perbaikan bug.

Langkah 6: Mendokumentasikan prosesnya

Sebagai langkah terakhir, pengembang mencatat perincian proses perbaikan, termasuk apa yang menyebabkan bug, bagaimana cara memperbaikinya, dan informasi lain yang relevan. Dokumentasi adalah alat yang berharga bagi programmer untuk referensi ketika bug serupa terjadi di masa depan.

Pengembangan Aplikasi

Bergabunglah: Pengembangan aplikasi Enterprise di cloud

Dalam video ini, Dr. Peter Haumer membahas seperti apa pengembangan aplikasi perusahaan modern saat ini di hybrid cloud dengan menunjukkan berbagai komponen dan praktiknya, termasuk IBM Z Open Editor, IBM Wazi, dan Zowe. 

Contoh debugging

Memahami jenis bug yang dihadapi suatu sistem memungkinkan para insinyur dan pengembang perangkat lunak menemukan cara yang tepat untuk memperbaiki kode yang rusak saat kesalahan muncul. Contoh kesalahan umum yang memerlukan debugging meliputi:

Kesalahan semantik

Sepotong kode yang melanggar aturan bahasa pengodean menyebabkan kesalahan semantik. Tidak seperti kesalahan logis, yang menghasilkan output yang salah, kesalahan semantik tidak akan menghasilkan output yang berarti.

Kesalahan sintaksis

Kesalahan ini terjadi saat pengembang melewatkan elemen kode seperti tanda kurung, koma, atau kesalahan ketik lainnya. Tidak seperti bahasa manusia tertulis di mana kalimat dengan kesalahan ketik masih dapat dipahami, bagian kode yang hilang langsung menyebabkan kesalahan.

Kesalahan logis

Jenis bug ini mencakup sintaks yang secara teknis benar tetapi memiliki arah yang salah yang menyebabkan output yang tidak diinginkan. Karena sintaksnya benar, kesalahan ini bisa sulit dideteksi. Ketika sistem tidak langsung crash, lokasi persis dari kode yang salah dapat memakan waktu untuk ditemukan.

Kesalahan waktu proses

Kesalahan ini terjadi ketika aplikasi sedang berjalan atau memulai. Kesalahan waktu proses terkadang dapat diperbaiki dengan menyegarkan, memulai ulang, atau menginstal ulang aplikasi. Di lain waktu, hal ini dapat menjadi sinyal dari program yang membutuhkan lebih banyak memori atau jenis kesalahan lain seperti kesalahan logika.

Jenis debugging

Proses debugging bisa menantang dan menguras tenaga. Memahami berbagai pendekatan untuk proses debugging dapat membuat pengelolaan tugas lebih efektif.

Backtracking

Dalam pendekatan ini, pengembang bekerja mundur dari titik kesalahan terdeteksi untuk menemukan asal bug. Secara khusus, mereka menelusuri kembali langkah-langkah yang diambil program dengan kode sumber yang bermasalah untuk melihat di mana letak kesalahannya. Backtracking dapat efektif bila digunakan bersama debugger.

Eliminasi penyebab

Teknik debugging yang berbasis hipotesis mengharuskan tim untuk berspekulasi tentang penyebab kesalahan dan menguji setiap kemungkinan secara independen. Pendekatan ini bekerja paling baik apabila tim familier dengan kode dan keadaan seputar bug tersebut.

Membagi dan menaklukkan

Ketika melakukan debugging basis kode yang besar, tim dapat membagi baris kode menjadi beberapa segmen—fungsi, modul, metode kelas, atau divisi logis lainnya yang dapat diuji—dan menguji masing-masing secara terpisah untuk menemukan kesalahannya. Ketika segmen masalah diidentifikasi, segmen tersebut dapat dibagi lebih lanjut dan diuji sampai sumber bug teridentifikasi.

Mencetak dan mencatat debug

Strategi debugging print dan log melibatkan penambahan pernyataan print atau "log" pada kode untuk menampilkan nilai variabel, tumpukan panggilan, alur eksekusi, dan informasi lain yang relevan. Pendekatan ini sangat berguna untuk melakukan debugging sistem secara bersamaan atau terdistribusi di mana urutan eksekusi dapat memengaruhi perilaku program.

Debugging bebek karet

Dalam pendekatan ini, pengembang “menjelaskan atau menjabarkan” kode, baris demi baris, ke benda mati apa pun. Iden pokoknya adalah bahwa dengan mencoba menjelaskan kode dengan lantang, pengembang dapat lebih memahami logikanya (atau kekurangannya) dan menemukan bug dengan lebih mudah.

Debugging otomatis

Proses debug otomatis bergantung pada analitik, kecerdasan buatan (AI), dan algoritma machine learning untuk mengotomatiskan satu atau beberapa langkah proses debug. Alat bantu debugging yang didukung AI dapat menelusuri kumpulan kode yang besar dengan lebih cepat untuk mengidentifikasi kesalahan atau mempersempit bagian kode yang kemudian dapat diperiksa secara lebih menyeluruh oleh pengembang.

Sistem otomatis dapat mereplikasi baris kode dan mengotomatiskan pengujian untuk memverifikasi bahwa sistem bekerja sebagaimana dimaksud. Otomatisasi memainkan peran besar dalam integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD), dua pendekatan yang mempercepat pengujian dan penerapan kode baru.

Debugging brute force

Biasanya diterapkan ketika metode lain gagal, debugging brute force melibatkan penelusuran seluruh basis kode, baris demi baris untuk mengidentifikasi sumber masalah. Pendekatan yang memakan waktu ini juga dapat berguna untuk melakukan debugging program kecil ketika insinyur atau programmer yang melakukan debugging tidak terbiasa dengan basis kode yang ada.

Alat debugging

Debugger adalah alat bantu dan API canggih yang mengoptimalkan pengembangan perangkat lunak dengan menemukan kesalahan pengodean dalam sistem operasi atau proses pengembangan aplikasi. Debugger mewakili bisnis yang besar dan berkembang. Dengan lingkungan aplikasi dan program komputer dan seluler yang terus berkembang, tidak mengherankan bahwa pasar debugger global diproyeksikan akan tumbuh secara signifikan pada akhir dekade1.

Perusahaan menginvestasikan jutaan dalam pengembangan alat debugging canggih (seperti chatbot AI yang dapat men-debug kode)2 dan peneliti universitas menciptakan alat yang dapat men-debug video game secara mandiri3 dan men-debug bahasa pemrograman khusus domain4.

Alat dan teknologi bisa sangat bervariasi dalam kemampuannya, tetapi pada dasarnya, semuanya menawarkan antarmuka baris perintah yang membantu organisasi menemukan dan memperbaiki masalah bug. Sebagian besar juga menawarkan fitur debugging jarak jauh dan tutorial yang membuat perangkat lunak tersebut lebih mudah digunakan oleh para pemula.

Contoh alat debugging meliputi:

Lingkungan pengembangan terintegrasi (IDEs)

IDE menawarkan pemrogram komputer fitur yang komprehensif untuk pengembangan perangkat lunak. Banyak IDE seperti Visual Studio, Eclipse, dan PyCharm hadir dengan "mode debug." Alat debugging bawaan ini memungkinkan pengembang untuk menjalankan kode baris demi baris (langkah debugging), menghentikan eksekusi program pada titik-titik tertentu (breakpoint), dan memeriksa keadaan variabel dan memori kapan saja, di antara kemampuan lainnya.

IDE juga tersedia sebagai plug-in sumber terbuka yang kompatibel dengan berbagai bahasa pemrograman seperti Java, Python, JavaScript, dan TypeScript serta bahasa skrip seperti PHP.

Debugger mandiri

Debugger mandiri seperti GNU Debugger (GDB) menawarkan fitur debugging tingkat lanjut termasuk breakpoint bersyarat dan titik pantau. Debugger seperti ini juga memfasilitasi reverse debugging, yaitu ketika programmer menjalankan program mundur. Debugger mandiri cenderung lebih tangguh dan serbaguna daripada debugger yang dibangun ke dalam IDE atau developer tools lainnya, tetapi juga memiliki kurva pembelajaran yang lebih curam bagi pengguna dan membutuhkan lebih banyak keahlian teknis.

Utilitas pencatatan

Alat-alat ini menyediakan cara untuk mencatat status program di berbagai titik dalam kode. Catatan kemudian dapat dianalisis untuk menemukan anomali atau pola bermasalah. Pencatatan berguna untuk mengatasi masalah bug yang terjadi di lingkungan produksi, di mana debugging interaktif mungkin tidak dapat dilakukan.

Penganalisis kode statis

Alat analisis kode statis menganalisis kode tanpa menjalankannya, mencari potensi kesalahan dan memperbaiki bug serta penyimpangan dari standar pengodean. Alih-alih berfokus pada sintaksis (seperti yang dilakukan oleh interpreter dan kompiler), alat-alat ini menganalisis semantik kode sumber, sehingga membantu pengembang mendeteksi kesalahan pemrograman yang umum dan menerapkan gaya pengodean yang konsisten.

Alat analisis dinamis

Pada dasarnya kebalikan dari penganalisis kode statis, alat analisis dinamis memantau perangkat lunak saat berjalan untuk mendeteksi masalah seperti kebocoran sumber daya atau masalah konkurensi. Alat ini membantu tim pengembangan menangkap bug yang mungkin terlewatkan oleh analisis statis, seperti kebocoran memori atau buffer yang meluap.

Profiler kinerja

Profiler kinerja memungkinkan pengembang mengidentifikasi hambatan kinerja dalam kode mereka. Sistem ini dapat mengukur penggunaan CPU, penggunaan memori, dan operasi IO, sehingga dapat membantu menemukan operasi yang lambat dan tidak efisien.

Debugging vs. pengujian

Pengujian dan debugging adalah proses pelengkap dalam pengembangan kode baru. Meskipun hasilnya berbeda, pengujian dan debugging digunakan untuk menghasilkan kode yang bebas dari kesalahan.

Pengujian memungkinkan pengembang perangkat lunak untuk memahami apa yang terjadi pada sistem ketika bug terjadi. Pengujian ini membantu pengembang mengetahui kapan sebuah sistem mengalami kegagalan dan dampak yang mungkin ditimbulkan oleh kegagalan tersebut terhadap sebuah perangkat lunak. Pengujian otomatis memungkinkan pengembang untuk menjalankan pengujian berkelanjutan pada kode baru untuk mendapatkan insight tentang berbagai skenario. Pengujian adalah bagian penting dalam pengembangan perangkat lunak, tetapi tidak menjelaskan mengapa suatu kesalahan terjadi.

Strategi dan alat debugging adalah apa yang digunakan pengembang untuk menemukan akar masalah kesalahan, memperbaikinya, dan mendokumentasikannya untuk mencegah kesalahan tersebut terulang kembali. Ketika digunakan bersama-sama, debugging dan pengujian membantu tim membangun pendekatan yang efisien untuk mengembangkan kode dan menciptakan produk piranti lunak yang lebih baik.

Solusi terkait
IBM Enterprise Application Service for Java

Layanan penyewa tunggal yang dikelola sepenuhnya untuk mengembangkan dan menyediakan aplikasi Java.

Jelajahi Aplikasi Java
Solusi DevOps

Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.

Jelajahi solusi DevOps
Layanan Pengembangan Aplikasi Perusahaan

Pengembangan aplikasi cloud berarti membangun sekali, mengulangi dengan cepat, dan menerapkan di mana saja.

Layanan pengembangan aplikasi
Ambil langkah selanjutnya

Layanan Konsultasi Pengembangan Aplikasi IBM Cloud menawarkan panduan pakar dan solusi inovatif untuk menyederhanakan strategi cloud Anda. Bermitralah dengan para pakar cloud dan pengembangan IBM untuk memodernisasi, menskalakan, dan mempercepat aplikasi Anda, sehingga memberikan hasil yang transformatif bagi bisnis Anda.

Jelajahi layanan pengembangan aplikasi Mulai membangun dengan IBM cloud secara gratis
Catatan kaki

Global software debugging market analysis [2023-2030," Benzinga, 5 September 2022
Google’s Bard AI chatbot can now generate and debug code," TechCrunch+, 12 April 2023
Autonomously debugging video games." University of Southern California-Viterbi School of Engineering, 5 April 2023
An easier way to get bugs out of programming languages," MIT News, 7 April 2023