[ HTML ] [ Java ] [ Bahasa C ]


Minggu, Mei 02, 2021

Sinyal Error Program pada Bahasa C

Sinyal atau tanda pada komputer adalah cara berkomunikasi antara proses dan sistem operasi. Ketika sebuah program berjalan dengan beberapa tanda error maka sistem operasi akan memberi sinyal pada prosesnya dan akan menghentikan proses eksekusi program selanjutnya. Beberapa proses mungkin memiliki signal handler atau penanganan sinyal yang melakukan beberapa tugas penting sebelum proses berhenti dari CPU.

Sinyal dan interupsi pada dasarnya adalah sama tetapi terdapat sedikit perbedaan dimana interupsi di-generate oleh prosesor dan ditangani oleh kernel tetapi sinyal atau signal di-generate oleh kernel dan ditangani oleh proses. Sinyal error umumnya dikarenakan terminasi dari program dan sebuah core dump file yang diciptakan dan dinamai core, yang menyimpan state dari proses ketika terjadi terminasi. File tersebut dapat ditemukan menggunakan debugger yang fungsinya untuk mengetahui penyebab dari terminasi program.

Error signal
satu, SIGFPE-
Sinyal error ini menandai beberapa kesalahan aritmatik seperti pembagian oleh angka 0, floating point error, dan lain sebagainya. Jika sebuah program menyimpan data integer pada lokasi dinama digunakan untuk operasi dengan tipe data float, maka dapat menyebabkan invalid operasi kecuali jika prosesor tidak mengenali data sebagai nilai float. Tetapi tanda ini tidak menentukan tipe error floating point.

dua, SIGILL-
Sinyal ini menandai instruksi ilegal. Ketika instruksi garbage atau instruksi yang dibuat tetapi tidak diijinkan pada eksekusi program atau tidak memiliki aturan untuk mengeksekusi program tersebut, dan kemudian perintah tersebut tetap di-generate maka sinyal error ini akan dimunculkan. Bahasa C tidak menghasilkan instruksi ilegal sehingga tidak mungkin akan menemukan sinyal error semacam ini, sehingga hasil dari kemungkinan yang program dieksekusi maka dapat menyebabkan file menjadi corrupted. Sinyal ini juga di-generate ketika terjadi stack overflow.

tiga, SIGSEGV-
Sinyal error ini akan muncul ketika pada tahap proses program mencoba mengakses lokasi yang tidak diijinkan untuk diakses, seperti melakukan referensi ulang pointer secara sembarangan menuju ke "segmentation fault". Sinyal ini hanya di-generate ketika sebuah program menuju terlalu jauh dari ruang memorinya sehingga akan dideteksi oleh mekanisme memori proteksi. Atau lebih akrab dikenal dengan istilah pelanggaran segmentasi atau segmentation violation.

empat, SIGBUS-
Sinyal ini dikenal dengan singkatan "Bus error". Sinyal ini dihasilkan ketika mengalami akses memori invalid. Sekilas mirip seperti SIGSEGV tetapi pada SIGSEGV referensi lokasi memori adalah valid, tetapi pada SIGBUS referensi memori tidak ada atau invalid, dengan kata lain lokasi memori berada diluar jangkauan ruang.

lima, SIGABRT-
Jika error terdeteksi oleh program maka sinyal ini akan di-generate dengan memanggil perintah abort(). Sinyal ini juga digunakan oleh library standard untuk melaporkan internal error. Fungsi assert() pada C++ juga menggunakan abort() untuk generate tanda tersebut.

enam, SIGSYS-
Sinyal ini dikirim untuk diproses ketika argument invalid dilewatkan menuju ke pemanggilan sistem.

tujuh, SIGTRAP-
Sinyal ini dikirim untuk diproses ketika muncul tanda exception. Sinyal ini diperintahkan oleh debugger untuk memberikan informasi. Contohnya, jika sebuah variabel berubah nilainya maka akan hal ini dapat memberikan sinyal error.

6 komentar:

  1. Apa yang dimaksud dengan error program?

    BalasHapus
    Balasan
    1. Error atau kesalahan merupakan masalah yang terjadi pada suatu program, yang membuat perilaku dari suatu program menjadi tidak normal dimana kesalahan tersebut tidak hanya terjadi ketika program dijalankan, tetapi juga ketika program tersebut sedang dalam proses pembuatan. Error atau kesalahan pemrograman tersebut juga dikenal dengan istilah bug (serangga = mengganggu), dan proses penghapusan debug disebut dengan debugging.

      Hapus
  2. Bagaimana cara penanganan error atau error handling pada bahasa C?

    BalasHapus
    Balasan
    1. Programmer pada bahasa C dapat memeriksa nilai yang dikembalikan oleh kompilator dan dapat mengambil tindakan yang sesuai tergantung dengan nilai (atau pesan error) yang dikembalikan tersebut.

      Tips: biasakan untuk mengembalikan nilai program atau ke 0 untuk menunjukkan bahwa sudah tidak terjadi kesalahan apapun pada program.

      Hapus
  3. Apa yang dimaksud dengan stderr?

    BalasHapus
    Balasan
    1. Stderr adalah standar pesan error yang digunakan untuk mencetak nilai output pada layar atau terminal window.s Stderr juga merupakan salah satu output dari perintah stdout yang melakukan perekaman secara otomatis atau default.

      Hapus

Respon komentar 7 x 24 jam, so please be patient :D