Tampilan antarmuka grafis dari pengawakutu Winpdb yang digunakan untuk menguji kode program.

Pengawakutu (bahasa Inggris: debugger) adalah program komputer khusus yang digunakan oleh pemrogram untuk menguji, memantau, dan melakukan pengawakutuan terhadap program lainnya (yang disebut sebagai program target).

Kode program yang diujikan biasanya dijalankan di bawah kontrol pengawakutu, sehingga alur eksekusinya dapat direkayasa. Program target dapat dijalankan pada sebuah arsitektur asli atau melalui simulator set instruksi (instruction set simulator/ISS) untuk mensimulasikan lingkungan perangkat keras tertentu. Beberapa pengawakutu modern menawarkan dua mode operasi, yaitu simulasi parsial atau simulasi penuh, untuk membatasi dampak pengujian terhadap stabilitas sistem operasi utama.

Ketika sebuah program mengalami mogok (crash) akibat adanya kutu pemrograman, pengawakutu dapat menunjukkan lokasi persis baris kode yang memicu kegagalan tersebut. Hal ini umumnya terjadi jika program mencoba mengeksekusi instruksi ilegal yang tidak tersedia pada CPU, atau ketika program melakukan pelanggaran akses dengan mencoba membaca atau menulis ke lokasi memori yang dilindungi.

Fitur utama

sunting

Sebuah pengawakutu umumnya menyediakan kendali penuh atas jalannya eksekusi program target melalui fitur-fitur berikut:

  • Titik henti (Breakpoint): Menghentikan eksekusi program secara temporer pada lokasi atau kondisi tertentu agar pemrogram dapat memeriksa status sistem saat itu.
  • Eksekusi bertahap (Stepping): Menjalankan kode program secara perlahan baris demi baris atau instruksi demi instruksi (single-stepping) untuk mengamati perubahan kondisi logika algoritme.
  • Inspeksi memori dan register: Menampilkan isi dari variabel, penunjuk memori (pointer), tumpukan panggilan (stack), serta register CPU secara aktual (real-time).
  • Pengubahan nilai dinamis: Mengizinkan pemrogram mengubah isi memori atau variabel di tengah jalannya eksekusi untuk menguji skenario kondisional tertentu tanpa harus mengompilasi ulang program.

Jenis pengawakutu

sunting

Berdasarkan tingkat abstraksi dan lingkungan kerjanya, pengawakutu dapat dikelompokkan menjadi:

Pengawakutu tingkat sumber (Source-level debugger)

sunting

Pengawakutu yang beroperasi langsung pada kode sumber yang ditulis oleh manusia (seperti bahasa C, C++, Java, atau Python). Alat ini mencocokkan instruksi mesin yang sedang berjalan dengan baris kode aslinya menggunakan simbol pengawakutuan (debugging symbols).

Pengawakutu tingkat mesin (Machine-level debugger)

sunting

Pengawakutu yang beroperasi pada instruksi bahasa rakitan (assembly) atau kode mesin tingkat rendah. Jenis ini sering digunakan dalam aktivitas rekayasa balik (reverse engineering) atau ketika kode sumber asli tidak tersedia.

Pengawakutu inti (Kernel debugger)

sunting

Pengawakutu khusus yang digunakan untuk menguji inti sistem operasi (kernel). Pengawakutu jenis ini memiliki hak akses tertinggi karena harus mampu menghentikan seluruh sistem operasi untuk memeriksa kegagalan fatal seperti Blue Screen of Death pada Windows atau Kernel panic pada Unix/Linux.

Pengawakutu perangkat keras (Hardware/Embedded debugger)

sunting

Perangkat lunak pembantu yang terhubung dengan modul perangkat keras eksternal (seperti antarmuka JTAG atau SWD) untuk melakukan pengawakutuan langsung pada sistem tertanam (embedded systems) dan mikrokontroler secara fisik.

Daftar pengawakutu yang populer

sunting
  • GNU Debugger (GDB): Pengawakutu standar untuk ekosistem perangkat lunak bebas yang mendukung banyak bahasa pemrograman dan arsitektur CPU.
  • LLDB: Pengawakutu berkinerja tinggi yang menjadi bagian dari proyek kompilator LLVM dan digunakan secara bawaan pada lingkungan pengembangan macOS dan iOS.
  • Microsoft Visual Studio Debugger: Pengawakutu terintegrasi di dalam IDE Visual Studio untuk pengembangan aplikasi berbasis Windows.
  • WinDbg: Alat pengawakutu multiguna dari Microsoft yang sering digunakan untuk menganalisis berkas crash dump dan melakukan pengawakutuan tingkat *kernel*.
  • Valgrind: Alat pemrograman yang utamanya digunakan untuk mendeteksi kebocoran memori (memory leak) dan memprofilkan memori pada sistem Linux.

Referensi

sunting
  • Sanjeev Kumar Aggarwal and M. Sarath Kumar, "Debuggers for Programming Languages". In The Compiler Design Handbook: Optimizations and Machine Code Generation. Edited by Y.N. Srikant and Priti Shankar. Boca Raton, Florida: CRC Press, 2003. pp. 295–327.
  • Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Data Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7.

Lihat pula

sunting

Pranala luar

sunting

📚 Artikel Terkait di Wikipedia

Android (sistem operasi)

(SDK). SDK ini terdiri dari seperangkat perkakas pengembangan, termasuk debugger, perpustakaan perangkat lunak, emulator handset yang berbasis QEMU, dokumentasi

Interix

kompiler C/C++ berbasis command-line yang ditawarkan oleh Microsoft Visual Studio GNU Debugger Aplikasi klien X11 dan juga pustakanya. Meskipun demikian

LOLCODE

compiler at Google Code TechEd Day 2: Microsoft announces LOLCode support, Long Zheng LOLcode in next Visual Studio? For young and funny cats, NetworkWorld

Java (platform perangkat lunak)

kelas pertama .NET bahasa. Visual J# dihentikan dengan rilis Microsoft Visual Studio 2008. Ada versi gratis dengan Visual Studio 2005 akan didukung hingga

Penyunting kode sumber

fitur yang tidak mereka perlukan. Notepad++ (untuk Windows) Visual Studio Code Vi/Vim "Microsoft-backed Language Server Protocol strives for language, tools