che senso ha spogliare un programma binario / elfo?


9

Mi chiedo solo se lo stripping di un file di programma abbia più vantaggi del semplice risparmio di spazio su disco.


fa risparmiare CPU o memoria?

Su sistemi embedded in cui lo spazio di archiviazione è limitato, consente di risparmiare spazio su disco.
Zoredache,

Salva un pochino in memoria.
symcbean

Risposte:


8

Il vantaggio principale, per la stragrande maggioranza dei casi, è solo quello di risparmiare spazio su disco. Un vantaggio secondario, e molto più dubbio, è che rende anche più difficile il disassemblaggio o il reverse engineering del binario. Potrebbe anche ridurre leggermente il footprint di memoria, anche se in molti casi sarà un risparmio trascurabile.

Il più grande svantaggio è che rende notevolmente più difficile il debug in caso di problemi.

Su un sistema moderno con velocità della CPU quali sono e quantità di memoria / disco che cosa sono, lo stripping di un binario avrà un impatto pratico molto limitato sulle prestazioni in alcun modo. Si tratta davvero di debug, "pulizia" e preferenze personali. Alcune persone preferiscono utilizzare sempre i binari stripped per la produzione o il software "spedito". Alcune persone preferiscono lasciare sempre i simboli inclusi, "per ogni evenienza".

Personalmente, preferisco includere simboli. Nel corso dell'anno ho avuto un paio di situazioni davvero frustranti in cui un'applicazione commerciale segfault (o altrimenti andava in crash) e non avevo la capacità di individuare dove fosse il problema, perché i binari erano stati eliminati. In almeno alcuni di questi casi, il fornitore ha finito per inviarmi una versione non spogliata per l'esecuzione, fino a quando non si è bloccato nuovamente, in modo da poter ottenere informazioni di debug più utili. Se all'inizio avessero fornito la versione non privata, avremmo potuto risolvere il problema più rapidamente e con tempi di inattività inferiori.


2
Concordato, a meno che non ci si trovi in ​​un sistema integrato con limitazioni di memoria come il NSLU2 da 32 MB. Ogni byte nella RAM conta e radere il 10% di sconto su un binario è molto comune in quegli scenari. Allo stesso modo ho attaccato gdb a un processo morente o morto e sarei salito su un torrente se non fosse stato per i simboli non spogliati. La mia opinione è che lo stripping dei simboli è solo per la conservazione della memoria e un migliore utilizzo della cache. Ma prova quest'ultimo perché l'ottimizzazione può ignorare le tue aspettative.
zerolagtime

1
Sei un punto eccellente. I miei commenti di cui sopra sono validi per i tipici scenari di utilizzo di desktop / laptop o server, ma rimuovere i binari è spesso una grande vittoria nei sistemi di uso incorporato e speciale.
Christopher Cashell,

0

è possibile compilare software con simboli di debug per i test e quindi eliminarli per la distribuzione. se i tuoi simboli di debug espongono qualcosa che preferiresti non esporre, questo potrebbe esserti utile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.