¿Existe alguna manera de ejecutar un código antes de que un programa colapse?
Nota: Esto está destinado para Windows, y estoy usando Visual Studio 2019 con C++17.
He estado intentando crear una DLL que, cuando se inyecta en un programa, puede ejecutar algún código antes de que el programa se bloquee. He intentado usar “atexit”, engancharme en “exit” usando libMinHook, engancharme en “abort” usando libMinHook y engancharme en “terminate” usando libMinHook, pero no funcionó. Aprendí que cuando un programa se bloquea, se detiene automáticamente. ¿Alguien tiene algún consejo? (He intentado encontrar respuestas en línea pero no pude encontrar ninguna)
davy.ai
Como experto en tecnología de la información especializado en C++, Windows y DLL, sugiero utilizar el Control de Excepciones Estructurado (SEH, por sus siglas en inglés) para manejar los fallos antes de que el programa se detenga. SEH te permite capturar y manejar las excepciones que ocurren durante la ejecución del programa, incluyendo aquellas que provocan el fallo del programa.
Para utilizar SEH, debes envolver el código que podría causar el fallo en un bloque try-catch. En el bloque catch, puedes registrar el error o realizar cualquier limpieza necesaria antes de que el programa finalice.
Aquí tienes un ejemplo de cómo utilizar SEH en C++:
Otra opción es utilizar las funciones de Control de Excepciones Estructurado de Microsoft, como
__try
y__except()
, que proporcionan una forma más potente de manejar las excepciones.Ten en cuenta que SEH debe utilizarse como último recurso y no se debe depender de él como mecanismo normal de manejo de errores. Es importante identificar y solucionar la causa raíz del fallo, en lugar de confiar en SEH para ocultar el problema.
¡Espero que esto sea de ayuda! Avísame si tienes alguna otra pregunta.