programacion - como depurar en dev c++
¿Cómo depurar en el modo de lanzamiento? (2)
Tengo que depurar un proyecto de C ++, pero como una dependencia no se compila en modo de depuración y no he podido solucionar ese problema hasta ahora, me gustaría intentar depurar el proyecto en modo de lanzamiento.
Actualmente la aplicación se bloquea debido a un puntero nulo, pero no tengo el código que está causando el error. Como aparentemente se ignoran los puntos de quiebre en el modo de lanzamiento, me gustaría saber cuál es la mejor forma de encontrar el error.
En VS, haga clic con el botón derecho en su proyecto, elija "Propiedades".
Haga clic en el nodo C / C ++. Establezca el Formato de información de depuración en C7 compatible (/ Z7) o Base de datos del programa (/ Zi).
Expanda Vinculador y haga clic en el nodo General. Establezca Habilitar vinculación incremental a No (/ INCREMENTAL: NO).
Seleccione el nodo de depuración. Establezca Generar información de depuración en Sí (/ DEPURAR).
Seleccione el nodo de Optimización. Establezca Referencias a Sí (/ OPT: REF).
if / OPT: se especifica REF, / OPT: ICF está activado por defecto.
Eso está copiado directamente de la documentación de Microsoft:
Hago esto todo el tiempo y casi nunca depuro en modo de depuración más. Como usted sabe, muchos errores que ocurren en una compilación de lanzamiento pueden no ocurrir en una compilación de depuración (casi con certeza los errores que surgen al invocar a UB).
Además, trabajo en un proyecto que utiliza una tonelada de procesamiento de imágenes y realiza una gran cantidad de compresión / descompresión de imágenes de gran tamaño. Usar una compilación de depuración lenta simplemente no es práctico.
No siempre se puede simplemente cambiar la configuración del proyecto y volver a compilar.
A veces tiene una versión lanzada que le gustaría depurar, o un archivo de volcado enviado por un cliente.
Al compilar un proyecto de C ++ en versión con optimizaciones, el depurador a veces no muestra la información correcta del objeto.
Las variables locales suelen ser las primeras en desaparecer, y muchas veces, la información de este objeto se pierde en el depurador.
La razón es que el compilador utiliza los registros de hardware disponibles para contener la información y utiliza optimizaciones para evitar la asignación de variables locales.
He sugerido una forma de encontrar la información que falta aquí:
Depuración de proyectos de lanzamiento en C ++ - Búsqueda de la información del objeto perdido