Nuevo

Señales de error del programa en Programacion

Señales de error del programa


Las señales en las computadoras son una forma de comunicación entre el proceso y el sistema operativo. Cuando un programa en ejecución sufre algún error grave, el sistema operativo envía una señal al proceso y el proceso puede no ejecutarse. Algunos procesos pueden tener un controlador de señal que realiza algunas tareas importantes antes de que el proceso abandone la CPU.
La señal y la interrupción son básicamente las mismas, pero existe una pequeña distinción, es decir, las interrupciones son generadas por el procesador y manejadas por el núcleo, pero las señales son generadas por el núcleo y manejadas por el proceso. Las señales de error generalmente provocan la terminación del programa y se crea un archivo de volcado de núcleo denominado core, que almacena el estado del proceso en el momento de la finalización. Este archivo puede investigarse utilizando el depurador para conocer la causa de la finalización del programa.
Señales de error:
  • SIGFPE:
    esta señal de error indica algún error aritmético que ocurrió como división por cero, error de coma flotante. Si un programa almacena datos enteros en una ubicación que luego se utiliza como operación de punto flotante, esto provoca una excepción de "operación no válida" ya que el procesador no puede reconocer los datos como un valor de punto flotante. Pero esta señal no especifica el tipo de error de coma flotante.
  • SIGILL:
    esta señal denota instrucción ilegal. Cuando se ejecuta una instrucción basura o una instrucción que un programa no tiene privilegios para ejecutar, se genera esta señal. C no produce instrucciones ilegales, por lo que no hay posibilidad de enfrentar dicha señal de error, ya que la causa probable puede ser que el archivo de objeto esté dañado. Esta señal también se genera cuando se produce un desbordamiento de la pila.
  • SIGSEGV:
    la señal se genera cuando el proceso intenta acceder a la ubicación de la memoria no asignada a ella, como desreferenciar un puntero comodín que conduce a un "fallo de segmentación". La señal solo se genera cuando un programa se aleja de su espacio de memoria para que pueda ser detectado por el mecanismo de protección de memoria. 
    El nombre es una abreviatura de "violación de segmentación".
  • SIGBUS:
    el nombre es una abreviatura de "Error de bus". Esta señal también se produce cuando se accede a una memoria no válida. Puede parecer lo mismo que SIGSEGV, pero en SIGSEGV, la ubicación de memoria a la que se hace referencia es válida, pero en el caso de SIGBUS, la memoria a la que se hace referencia no existe, es decir, desreferenciar una ubicación de memoria fuera del espacio de memoria.
  • SIGABRT:
    si el programa detecta un error, esta señal se genera mediante abort (). Esta señal también es utilizada por la biblioteca estándar para informar un error interno. La función assert() en c ++ también usa abort () para generar esta señal.
  • SIGSYS:
    esta señal se envía al proceso cuando se pasa un argumento no válido a una llamada del sistema.
  • SIGTRAP:
    esta señal se envía al proceso cuando se produce una excepción. El depurador solicita esto para informarse. Por ejemplo, si una variable cambia su valor, esto lo activará.

No hay comentarios