qual é o sentido de remover um programa binário / elfo?

9

Só estou me perguntando se a remoção de um arquivo de programa tem mais benefícios do que apenas economizar espaço em disco.


fonte
economiza CPU ou memória?
Em sistemas embarcados onde o armazenamento é restrito, economiza espaço em disco.
Zoredache
Economiza um pouquinho na memória.
Symcbean #

Respostas:

8

O principal benefício, para a grande maioria dos casos, é apenas para economizar espaço em disco. Um benefício secundário e muito mais dúbio é que também torna o binário mais difícil de desmontar ou fazer engenharia reversa. Isso também pode reduzir um pouco a pegada de memória, embora em muitos casos seja uma economia insignificante.

O maior prejuízo é que isso torna a depuração significativamente mais difícil se você encontrar um problema.

Em um sistema moderno com a CPU acelera o que são e quantidades de memória / disco o que são, a remoção de um binário terá muito pouco impacto prático no desempenho de qualquer forma. É realmente sobre depuração, "limpeza" e preferências pessoais. Algumas pessoas preferem sempre usar binários removidos para produção ou software "enviado". Algumas pessoas preferem sempre deixar os símbolos incluídos "por precaução".

Pessoalmente, prefiro incluir símbolos. Eu tive algumas situações realmente frustrantes ao longo do ano em que um aplicativo comercial estava com falha de segmentação (ou falhou) e não tinha a capacidade de identificar onde estava o problema, porque os binários foram removidos. Em pelo menos alguns desses casos, o fornecedor acabou me enviando uma versão sem strip para executar, até que ela travou novamente, para que pudéssemos obter informações de depuração mais úteis. Se eles tivessem fornecido a versão sem remoção no início, poderíamos ter resolvido o problema mais rapidamente e com menos tempo de inatividade.

Christopher Cashell
fonte
2
Concordou, a menos que você esteja em um sistema incorporado com restrição de memória, como o NSLU2 de 32 MB. Cada byte na RAM conta e reduzir 10% de um binário é muito comum nesses cenários. Da mesma forma, vinculei o gdb a um processo moribundo ou morto e teria subido um riacho se não fosse pelos símbolos não removidos. Minha opinião é que os símbolos de remoção são apenas para conservação da memória e melhor uso da linha de cache. Mas teste o último, porque a otimização pode ignorar suas expectativas.
Zerolagtime 1/11/10
1
Você faz um excelente ponto. Meus comentários acima são válidos para os cenários típicos de uso de desktop / laptop ou servidor, mas a remoção de binários geralmente é uma grande vitória em sistemas embarcados e de uso especial.
Christopher Cashell
0

você pode compilar software com símbolos de depuração para teste e apenas removê-los para implantação. se seus símbolos de depuração expõem algo que você prefere não expor, isso pode ser útil para você

Brad Clawsie
fonte