¿Cuál es el punto de quitar un programa binario / elfo?

9

Me pregunto si quitar un archivo de programa tiene más beneficios que solo ahorrar espacio en disco.


fuente
¿ahorra CPU o memoria?
En sistemas embebidos donde el almacenamiento es limitado, ahorrará algo de espacio en disco.
Zoredache
Ahorra un poquito en memoria.
symcbean

Respuestas:

8

El beneficio principal, para la gran mayoría de los casos, es solo ahorrar espacio en disco. Un beneficio secundario, y mucho más dudoso, es que también hace que el binario sea más difícil de desmontar o realizar ingeniería inversa. También puede reducir un poco la huella de la memoria, aunque en muchos casos será un ahorro insignificante.

El mayor detrimento es que hace que la depuración sea mucho más difícil si te encuentras con un problema.

En un sistema moderno con CPU que acelera lo que son, y las cantidades de memoria / disco lo que son, quitar un binario tendrá muy poco impacto práctico en el rendimiento de ninguna manera. Realmente se trata de depuración, "limpieza" y preferencias personales. Algunas personas prefieren usar siempre binarios eliminados para la producción o software "enviado". Algunas personas prefieren dejar siempre los símbolos incluidos, "por si acaso".

Personalmente, prefiero tener símbolos incluidos. Tuve un par de situaciones realmente frustrantes durante el año en las que una aplicación comercial estaba fallando (o de lo contrario se bloqueaba) y no tenía la capacidad de determinar dónde estaba el problema, porque los binarios fueron eliminados. En al menos algunos de esos casos, el proveedor terminó enviándome una versión no despojada para ejecutar, hasta que se bloqueó nuevamente, para que pudiéramos obtener información de depuración más útil. Si hubieran proporcionado la versión sin strip al principio, podríamos haber resuelto el problema más rápido y con menos tiempo de inactividad.

Christopher Cashell
fuente
2
De acuerdo a menos que se encuentre en un sistema embebido con memoria limitada como el NSLU2 de 32 MB. Cada byte en RAM cuenta y reducir el 10% de un binario es muy común en esos escenarios. También he adjuntado gdb a un proceso moribundo o muerto y habría subido a un arroyo si no hubiera sido por los símbolos sin tiras. Mi opinión es que los símbolos de eliminación son solo para la conservación de la memoria y un mejor uso de la línea de caché. Pero pruebe esto último porque la optimización puede ignorar sus expectativas.
zerolagtime el
1
Tu haces un punto excelente. Mis comentarios anteriores son válidos para los escenarios típicos de uso de computadoras de escritorio / portátiles o servidores, pero la eliminación de los archivos binarios a menudo es una gran victoria en los sistemas integrados y de uso especial.
Christopher Cashell el
0

puede compilar software con símbolos de depuración para probar y luego simplemente eliminarlos para su implementación. si sus símbolos de depuración exponen algo que preferiría no exponer, esto podría serle útil

Brad Clawsie
fuente