¿Podría decirme qué podría causar una falla SIGABRT en C++?¿Qué causa una falla SIGABRT?
Respuesta
Esto suele ocurrir cuando las bibliotecas encuentran un error interno, por lo que llaman a abort(), porque no pueden continuar. Esto puede suceder cuando sobrescribe una de sus estructuras de datos (la que pertenece a la función de libc, por ejemplo). Así que esto podría ser, por ejemplo, Llamando a libc porque sobrescribió algo. Y la aplicación debe finalizar porque es imposible continuar o manejarla, lo que se denomina aserción fallida.
por Wikipedia,
SIGABRT
es enviado por el proceso a sí mismo cuando se llama a la función libcabort
, definido enstdlib.h
. La señalSIGABRT
se puede capturar, pero no se puede bloquear; si el manejador de señales regresa, todas las transmisiones abiertas se cierran y se purgan y el programa finaliza (volcando el núcleo si corresponde). Esto significa que la llamadaabort
nunca regresa. Debido a esta característica, a menudo se utiliza para señalar condiciones fatales en bibliotecas de soporte, situaciones donde la operación actual no se puede completar pero el programa principal puede realizar la limpieza antes de salir. Se usa cuando una afirmación falla.
Eso quiere decir que no si su código es llamando abort
directa ni lanzarse a través de la señal de SIGABRT
raise
, y no tiene ningún afirmaciones en su defecto, la causa debe ser que una biblioteca de soporte (que podría ser libc) ha encontrado un error interno. Si proporciona los detalles de su programa, podríamos sugerir posibles causas. Incluso mejor, si examina un núcleo o ejecuta su programa en un depurador, debería poder recopilar un seguimiento de pila, que mostrará qué biblioteca provocó el aborto de su programa.
(También es posible que otro programa en su sistema está enviando su programa SIGABRT
, pero esto es en la mayoría de los casos infinitamente improbable.)
En la práctica esto generalmente es provocada por la macro assert:
char* foo = NULL;
assert(foo != NULL);
resultaría en SIGABRT
- 1. ¿Qué causa una falla de segmentación de Python?
- 2. ¿Qué causa la falla de la página y cómo minimizarla?
- 3. ¿Por qué obtengo un SIGABRT aquí?
- 4. locationOfTouch resultados en SIGABRT
- 5. Configuración self.window.rootViewController causas SIGABRT
- 6. ¿Qué causa la causa recursiva en una excepción?
- 7. Xcode 4.2 SIGABRT Error
- 8. Sigabrt en la función principal
- 9. ¿Cómo manejar la señal SIGABRT?
- 10. ¿Qué causa que una página rinda lenta?
- 11. ¿Por qué DateTime.ToString ("h") causa una excepción?
- 12. ¿Qué causa una NotSerializableException en Tomcat 7?
- 13. ¿Por qué esto no causa una NullPointerException?
- 14. Depuración SIGABRT dentro NSManagedObjectContext -save:
- 15. Señal recibida del programa SIGABRT
- 16. ¿Qué causa std :: bad_function_call?
- 17. La actualización de Android SDK causa la falla de java.lang.VerifyError
- 18. ¿Por qué recibo una falla de segmentación?
- 19. ¿Cuándo obtiene un proceso SIGABRT (señal 6)?
- 20. writeToFile falla - ¿cómo puedo depurar POR QUÉ falla (qué herramientas)?
- 21. Problema SPF: ¿qué causa softfail?
- 22. ¿Qué causa CBCentralManagerStateUnknown en iOS?
- 23. Qué causa la falla de Visual Studio 2008 SP1 cuando se cambia a la vista Diseño de una aplicación WPF
- 24. ¿Por qué GetGenericTypeDefinition falla?
- 25. ¿Por qué openssl_pkey_new() falla?
- 26. Fallo en drawRect - ¿qué lo causa?
- 27. ¿Determinar la línea de código que causa una falla de segmentación?
- 28. ¿Cómo leer el registro de bloqueo? ¿Cómo encontrar por qué la aplicación falla en la biblioteca del sistema? ¿Qué significa EXC_CRASH (SIGABRT)?
- 29. SIGABRT cómo obtener el archivo coredump?
- 30. ¿por qué este código causa una pérdida de memoria?
Buen punto !! :) he intentado mirando hacia arriba se dice que es una señal que se envía para abortar el proceso de compilador para el sistema, pero mi compilador no dice qué parte está causando este inusual comportamiento, para n con la flecha hacia abajo, pregunté por posibles razones. Mi código tiene 500 líneas de longitud. – user1444426
@ user1444426 - Compilarlo en modo de depuración (-g con g ++), use dbx y encontrará el problema. –
@Ecatmur, la página de Wikipedia no es realmente tan útil. Todo lo que dice es que 'abortar' levanta esa señal, pero no va más allá de eso. A veces recibo señales de 'SIGABRT' en mis programas, pero nunca * llamé directamente' abortar '. –