Debugger or Debuggong Tool

Hasil gambar untuk debugger 
Sebuah debugger atau debugging tool adalah program komputer yang digunakan untuk menguji dan men-debug program lain (program "target"). Kode untuk diperiksa mungkin alternatif dapat berjalan pada instruksi set simulator (ISS) , sebuah teknik yang memungkinkan kekuatan besar dalam kemampuannya untuk menghentikan ketika kondisi tertentu yang dihadapi tetapi biasanya akan sedikit lebih lambat dari mengeksekusi kode secara langsung pada yang sesuai ( atau sama) prosesor. Beberapa debugger menawarkan dua mode operasi-penuh atau parsial simulasi-untuk membatasi dampak ini.

" kecelakaan "yang terjadi ketika program tidak bisa biasanya berlanjut karena bug pemrograman . Sebagai contoh, program ini mungkin telah mencoba untuk menggunakan instruksi tidak tersedia pada versi saat ini dari CPU atau mencoba untuk mengakses tersedia atau dilindungi memori . Ketika program "crash" atau mencapai kondisi preset, debugger biasanya menunjukkan lokasi dalam kode asli jika sumber-level debugger atau debugger simbolik, biasanya sekarang terlihat di lingkungan pengembangan terintegrasi . Jika itu adalah tingkat rendah debugger atau debugger mesin-bahasa itu menunjukkan garis dalam pembongkaran (kecuali juga memiliki akses online ke kode sumber asli dan dapat menampilkan bagian yang sesuai kode dari perakitan atau kompilasi).


Biasanya, debugger menawarkan prosesor query, simbol penyelesai, ekspresi interpreter, dan dukungan men-debug antarmuka di tingkat atas. Debugger juga menawarkan fungsi yang lebih canggih seperti menjalankan program langkah demi langkah (single-loncatan atau program animasi ), menghentikan (melanggar) (berhenti program untuk memeriksa keadaan saat ini) pada beberapa peristiwa atau instruksi tertentu melalui suatu breakpoint , dan melacak nilai-nilai variabel. Beberapa debugger memiliki kemampuan untuk memodifikasi program negara ketika sedang berjalan. Hal ini juga mungkin untuk melanjutkan eksekusi di lokasi yang berbeda dalam program untuk memotong kecelakaan atau kesalahan logis.

Fungsi yang sama yang membuat debugger berguna untuk menghilangkan bug memungkinkan untuk digunakan sebagai perangkat lunak retak alat untuk menghindari perlindungan salinan , manajemen hak digital, dan fitur perlindungan perangkat lunak lain. Sering juga membuatnya berguna sebagai alat verifikasi umum, cakupan kesalahan , dan kinerja analyzer , terutama jika panjang instruksi jalur yang akan ditampilkan.

Kebanyakan mesin debugging mainstream, seperti gdb dan dbx , menyediakan berbasis konsol antarmuka baris perintah . Debugger depan berakhir ekstensi populer untuk debugger mesin yang menyediakan IDE integrasi, program animasi , dan fitur visualisasi. Beberapa awal mainframe debugger seperti Oliver dan SIMON disediakan fungsi yang sama ini untuk IBM System/360 dan sistem operasi kemudian, selama lalu sebagai tahun 1970-an.

Reverse debugging
Beberapa debugger mencakup fitur yang disebut "debugging terbalik", juga dikenal sebagai "debugging sejarah" atau "mundur debugging". Debugger ini memungkinkan untuk langkah eksekusi sebuah program mundur dalam waktu. Berbagai debugger menyertakan fitur ini. Visual Studio Ultimate Edition debugger (2010 dan atas) menawarkan debugging terbalik untuk C #, Visual Basic. NET, dan beberapa bahasa lain, tapi tidak C + +. Debugger lain dengan fitur termasuk gdb 7.0 dan atas, " Mahatahu Debugger "untuk Java, dan berbagai [4] dari debugger lainnya. Reverse debugging sangat berguna untuk beberapa jenis masalah, tapi masih belum umum digunakan belum.

Ketergantungan Bahasa
Beberapa debugger beroperasi pada bahasa tertentu tunggal sementara yang lain dapat menangani beberapa bahasa secara transparan. Sebagai contoh jika program sasaran utama ditulis dalam COBOL tetapi panggilan bahasa assembly subrutin dan PL / 1 subrutin, debugger mungkin harus dinamis beralih mode untuk mengakomodasi perubahan dalam bahasa yang terjadi.

Perlindungan memori
Beberapa debugger juga menggabungkan perlindungan memori untuk menghindari pelanggaran penyimpanan seperti buffer overflow . Hal ini mungkin sangat penting dalam proses transaksi lingkungan dimana memori dinamis dialokasikan dari memori 'kolam' pada tugas dengan dasar tugas.

Dukungan hardware untuk debugging
Kebanyakan mikroprosesor modern memiliki setidaknya satu dari fitur ini di mereka desain CPU untuk membuat debugging lebih mudah:
dukungan hardware untuk single-melangkah program, seperti bendera perangkap .
Sebuah set instruksi yang memenuhi persyaratan virtualisasi Goldberg Popek dan membuatnya lebih mudah untuk menulis perangkat lunak debugger yang berjalan pada CPU yang sama sebagai perangkat lunak yang sedang debugged, CPU tersebut dapat menjalankan loop dalam program yang diuji dengan kecepatan penuh, dan masih tetap di bawah kontrol debugger.
In-System Programming memungkinkan debugger hardware eksternal untuk memprogram ulang sistem yang diuji (misalnya, menambahkan atau menghapus instruksi breakpoints). Banyak sistem dengan dukungan ISP tersebut juga memiliki dukungan debug hardware lainnya.
Dukungan hardware untuk kode dan data breakpoints , seperti alamat pembanding dan data nilai pembanding atau, dengan jauh lebih banyak pekerjaan yang terlibat, halaman kesalahan hardware. 
JTAG akses ke interface debug hardware seperti pada arsitektur ARM prosesor atau menggunakan Nexus perintah set. Prosesor yang digunakan dalam embedded system biasanya memiliki dukungan JTAG men-debug luas.
Microcontrollers dengan sesedikit enam pin perlu menggunakan pengganti pin-hitungan rendah untuk JTAG, seperti BDM , Spy-Bi-Wire , atau debugWIRE pada Atmel AVR . DebugWIRE, misalnya, menggunakan sinyal dua arah pada pin RESET
Share:
spacer

No comments:

Post a Comment