2011-06-07 7 views
5

La documentación de Delphi dice que "La información [...] de depuración no afecta el tamaño o la velocidad del programa ejecutable".

Sin embargo, cuando activo la información de depuración (en Opciones de proyecto -> Enlazador) mi EXE va de 1.8MB a 7MB. ¿Qué estoy haciendo mal?


Nota: supongo que la 'información de depuración' en 'Vinculación' es lo mismo que 'la información de depuración' en 'Compilar' ya que tienen la misma directiva de compilación ($ {D}).

+0

Actualización relacionada con Delphi XE7 http://stackoverflow.com/questions/27931285/full-debugging-information-generates-huge-exe-files – Ampere

Respuesta

15

Suposición es incorrecta. Compilar con información de depuración significa que el compilador genera DCU con información de depuración. Vincularse con la información de depuración significa que el vinculador coloca la información de depuración de las DCU en el binario final en lugar de eliminarla, por lo que, por supuesto, aumentará mucho más el binario.

El enlace sin información de depuración suele ser correcto, ya que el depurador puede obtener la información de depuración en las DCU siempre que pueda encontrarlas. Pero si necesita depurar su aplicación en algún escenario donde las DCU no estarán disponibles, querrá activar la opción de enlace.

+0

Conseguido ahora. Gracias Mason! – Ampere

4

Adición de información de depuración no tendrá impacto en el tamaño de código (el código generado es el mismo con la opción de encendido o apagado, otro control opciones de generación de código), pero tendrá un impacto en el tamaño dearchivo.

+0

Thaks ldsandon. Ese fue en realidad mi problema. El programa fue ridículamente grande. – Ampere

+0

El archivo puede llegar a ser muy grande dependiendo de si ha creado usando DCU de depuración, o si tiene muchas DCU grandes, el enlazador puede eliminar algún código no utilizado, pero no estoy seguro de que pueda quitar la información de depuración no utilizada. De todos modos, eso es solo información añadida al archivo generado (aunque muchas DCU de depuración generalmente se crean usando diferentes opciones de generación de código, tengan cuidado ...), no al código. Si usa algunas bibliotecas de rastreo de excepciones (JCL/JVCL, MadExcept, EurekaLog), es posible que necesiten información de depuración en el archivo para generar un rastreo legible; de ​​lo contrario, obtendrá solo direcciones numéricas. –

Cuestiones relacionadas