es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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)

Tags:  , ,

Answer

  1. Avatar for 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++:

    try {
        // código que podría causar el fallo
    } catch (...) {
        // capturar cualquier excepción
        // registrar el error o realizar limpieza
    }
    

    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.

Comments are closed.