2011-04-06 7 views
11

Estoy tratando de determinar si existen inconvenientes en la creación de los archivos binarios de versiones con los símbolos de depuración. Para nuestras versiones de compilación, compilamos con -O3 por el momento y si hay caídas, los núcleos están próximos a ser inútiles.¿Hay algún inconveniente en dejar los símbolos de depuración en versiones de lanzamiento?

Por lo tanto, lo que me gustaría hacer es modificar la acumulación de dejar en símbolos de depuración, es decir -O3 -g, pero hay resistencia a esto como la sensación es que podría haber algún impacto (aparte del tamaño del binario) . Sé que el problema del tamaño puede solucionarse eliminando los símbolos, pero ¿hay algo más sutil que me pierda?

+0

¿Es una aplicación comercial? ¿Te preocupa la ingeniería inversa? – EboMike

+0

@EboMike, no, esa no es una preocupación aplicable en nuestra configuración. – Nim

Respuesta

22

Separar símbolos de binario.

g++ -ggdb -o target obj1.o obj2.o ... 
strip target --only-keep-debug -o target.dbg 
strip target 

Luego, en GDB, utilice symbol-file target.dbg

EDIT: En la pregunta real:

Las desventajas son:

  • más fácil la ingeniería inversa (si es que le preocupa)
  • Binarios más grandes

La velocidad de ejecución no se ve afectada: los símbolos de depuración simplemente se agregan al binario en una sección separada, pueden afectar el tamaño del espacio de direcciones virtuales, pero nada más.

+1

¡Guau, lindo, no sabía que esto fuera posible! – speeder

+0

gracias, sé que esto es posible, la pregunta era más ¿hay algún problema con la creación de construcciones optimizadas con ellos en primer lugar (es decir, antes del paso de desforre). – Nim

+0

gracias por la actualización. Creo que tendré que probarlo y ver qué pasa ... – Nim

0

Afecta el tamaño y, por lo tanto, el almacenamiento en caché y la memoria.

Si lee información sobre las opciones del compilador, verá que, a veces, los bucles de desenrollado hacen que el código sea más lento debido al almacenamiento en caché de mayor tamaño y que provoca más recuperaciones de memoria.

+0

Entonces, ¿eliminar los símbolos como una operación de segunda etapa reduce los efectos de caché? – Nim

+0

¿Te refieres a la idea de Erik? Creo que si. – speeder

Cuestiones relacionadas