Autor
|
Tema: "Capturar" Violación de segmento (`core' generado) (Leído 6,120 veces)
|
mart412
Desconectado
Mensajes: 1
|
Buenas, mi duda es sobre si es posible capturar de alguna forma un error de violacion de segmento para que el programa no 'explote'. Gracias
|
|
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
Buenas, mi duda es sobre si es posible capturar de alguna forma un error de violacion de segmento para que el programa no 'explote'. Gracias
Claro que se puede, el proceso para eso se llama debug.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
https://en.wikipedia.org/wiki/C%2B%2B#Exception_handlingtry { int *x = 0; *x = 666; } catch(...) { cout << "doh"; }
Ahora podes investigar al respecto, te recomiendo leer el capitulo correspondiente de cualquier libro de C++. PD. Depurar es otra cosa.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
No puedes usar los bloques try/catch para capturar un segmentation fault, porque no es una excepción mas bien es una señal que el sistema operativo envía como consecuencia al intentar acceder en alguna zona de memoria no permitida. Además no veo razón para hacer esto, porque continuar el programa después no es posible se invocaría comportamiento indefinido y esto no es nada seguro.
|
|
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
Hablando de CPU, si que se trataría de una excepción (lanzada por la CPU). Otra cosa es lo que considera C++/Sistema Operativo. Hubiera estado bien para ciertos casos.
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
Hablando de CPU, si que se trataría de una excepción (lanzada por la CPU). Otra cosa es lo que considera C++/Sistema Operativo.
Tienes razón es una excepción lanzada por la CPU, pero el sistema operativo la envía como una señal de que ocurrió algún error a nivel hardware.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
Ese es el mecanismo standard que provee el lenguaje C++ para capturar excepciones lo cual no implica que esta en particular sea controlada por C++. En Windows, donde no hay ninguna señal, el codigo funciona perfectamente con VC++ (aunque lo ideal seria usar SEH). En POSIX tenes: https://en.wikipedia.org/wiki/Sigaction__try { int *x = 0; *x = 666; } __except( EXCEPTION_EXECUTE_HANDLER) { cout << " doh"; }
Y mas informacion para concluir: https://en.wikipedia.org/wiki/Segmentation_fault
|
|
« Última modificación: 20 Octubre 2016, 00:22 am por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿ Es nuestro universo un simulador generado por un "Supercomputador" ?
Foro Libre
|
erest0r
|
1
|
2,046
|
15 Febrero 2014, 05:33 am
por erest0r
|
|
|
Anonymous se venga del blogger que "quiere" legalizar la violación
Noticias
|
wolfbcn
|
0
|
1,054
|
8 Febrero 2016, 15:33 pm
por wolfbcn
|
|
|
Entender "Import Table" e "Import Address Table" de un EXE Win generado por MASM
ASM
|
SubAtomicParticula
|
6
|
4,933
|
8 Agosto 2016, 17:50 pm
por Eternal Idol
|
|
|
Violación de segmento core generado
Programación C/C++
|
antolinalvaro
|
1
|
4,564
|
11 Julio 2018, 13:07 pm
por Mr.Moonlight
|
|
|
Motivos violacion de fichero 'core' generado
Programación C/C++
|
antolinalvaro
|
1
|
1,937
|
21 Agosto 2018, 14:15 pm
por MAFUS
|
|