Pregunta

Creo que entiendo la diferencia entre la liberación y el desarrollo de modelos de depuración. Las diferencias principales siendo que en modo de depuración, el ejecutable producido no está optimizado (ya que esto podría hacer que la depuración más difícil) y se incluyen los símbolos de depuración.

Aunque la construcción de PCRE, una de las dependencias externas para WinMerge, me di cuenta de un modo de construcción que no había visto antes:. RelWithDebInfo

La diferencia entre depuración y RelWithDebInfo se menciona aquí: http: // www.cmake.org/pipermail/cmake/2001-October/002479.html . exerpt:     "RelWithDebInfo es bastante similar al modo de lanzamiento. Produce código completamente optimizado, sino que también construye la base de datos del programa, e inserta la información línea de depuración para dar un depurador una buena oportunidad para adivinar en qué parte del código que está en cualquier momento."

Esto suena como una buena idea, sin embargo no necesariamente obvio cómo configurar. Este enlace se describe cómo habilitar esto para VC ++: http://www.cygnus-software.com /papers/release_debugging.html

Me estoy perdiendo algo, o lo hace no tiene sentido para compilar todo el código de desbloqueo como RelWithDebInfo?

¿Fue útil?

Solución

  

Me estoy perdiendo algo, o no lo hace   tiene sentido para compilar todo el código de liberación   como RelWithDebInfo?

Depende de cuánto confía en su cliente con la información de depuración.

Información adicional:

gcc codifica la información de depuración en el código objeto.

Aquí es el equivalente AP del gcc:

cómo generar gcc de símbolos de depuración fuera de la construcción apuntar?

Tenga en cuenta, que cmake no parece apoyar este enfoque fuera de la caja.

Otros consejos

En lo que a mí respecta, código de envío a los clientes sin tener que corresponden símbolos de depuración se almacena en la casa es una receta para la pérdida de cabello cuando se trata de depurar problemas de producción.

Depuración de lanzamiento construye con símbolos de depuración rara vez es diferente de la depuración de versiones de depuración, así que recomiendo siempre hacer esto.

Una vez dicho esto, no sé si hay algunas desventajas. Sería interesante escuchar, de ser así.

Una vez que haya tratado de depurar una versión de lanzamiento optimizado, usted sabe por qué esto es algo que sólo quiere hacer cuando no hay otra salida.

Básicamente, veo dos casos cuándo necesitará lo siguiente:

  • tiene un problema que no aparece en versiones de depuración, así que hay que depurar una versión de lanzamiento
  • Usted tiene un accidente en un cliente y utilizar la información de depuración almacenada localmente para entender el accidente.

No sé ustedes, pero yo tenía que código de liberación de depuración dos o tres veces en la última década y ha logrado trabajar en empresas en las que se bloquea en clientes de eran ningún problema.

Sí, es probablemente una buena idea tener información de depuración para su versión se basa, también, pero no establece VS cosas de esta manera y para los dos casos en cada década en la que necesita este no vale la pena establecer este manualmente cada vez. Desde CMake da de forma gratuita, lo hace.

Código de producción no necesita la hinchazón tamaño que transporta la información de depuración.

Aún cuando la información de depuración se produce la liberación de construcción, es mucho menos útil para propósitos de depuración de versión de depuración. La razón es que muchas variables y expresiones intermedias están optimizados de distancia, y son por lo tanto, no disponible en el depurador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top