2011-04-22 19 views
15

La semana pasada publiqué la versión de Linux y Windows de una aplicación.La mejor manera de quitarse los símbolos

Y después del lanzamiento nos dimos cuenta de que los símbolos no se habían quitado, y mi gerente piensa (y no estoy de acuerdo) que podría permitir al usuario comprender nuestro algoritmo.

De todos modos, ahora tendré que limpiar los símbolos y volver a lanzar la aplicación.

Mi pregunta,

  1. ¿Cuál es la mejor manera de quitar los símbolos en Linux?
  2. ¿Cuál es la mejor manera de quitar símbolos en Windows?
+0

Creo que los símbolos de depuración _podrían ayudar a las personas a comprender su algoritmo. Si examinan la pila de llamadas en varios puntos de la ejecución de su programa, y ​​pueden ver nombres de funciones descriptivas, entonces ... –

+0

Dependiendo de cómo esté construida su aplicación, la eliminación también podría reducir la huella de su aplicación por mucho (especialmente si usa muchas bibliotecas estáticas)! En general, pelar es una buena práctica para cualquier cosa que envíe. – photoionized

Respuesta

21

Con Visual C++ (y otros compiladores de Microsoft) en Windows, los símbolos no son parte de los binarios. En cambio, se almacenan en archivos separados llamados archivos "Base de datos de programas" (archivos .pdb). Simplemente no proporcione los archivos .pdb.

Con la cadena de herramientas GNU utilizaría strip para eliminar símbolos de los binarios.

+2

Si tiene ms pdb privados y quiere convertirlos a públicos, puede verificar esta respuesta [privado a público] (http://stackoverflow.com/questions/1525648/how-can-i-convert-private-pdb -to-public-pdb/1526031 # 1526031) – msh

13

Para las herramientas GNU, existe un truco fresco de la mano:

objcopy --only-keep-debug yourprogram ../somepath/yourprogram.dbg 
strip yourprogram 
objcopy --add-gnu-debuglink=../somepath/yourprogram.dbg 

Ahora puedes comprimir la carpeta de su programa está en (o lo ponga en un instalador o lo que sea), no habrá nada más ser depurar símbolos en él.
PERO: Si inicia el depurador o si ejecuta una herramienta como addr2line o obdump, la herramienta (gracias a la información de depuración) automágicamente sabrá dónde encontrar los símbolos y cargarlos.

Lo que es asombroso, porque significa que tiene los beneficios de tener símbolos en su extremo, sin distribuirlos al usuario.

Cuestiones relacionadas