バイナリ/エルフプログラムを取り除く意味は何ですか?


9

プログラムファイルを削除することには、単にディスク領域を節約することよりも多くの利点があるのか​​と思います。


それはCPUまたはメモリを節約しますか?

ストレージが狭い組み込みシステムでは、ディスク容量を節約できます。
Zoredache 2010年

メモリを少し節約します。
symcbean 2010年

回答:


8

ほとんどの場合の主な利点は、ディスク容量を節約することです。二次的で、はるかに疑わしい利点は、バイナリの分解やリバースエンジニアリングがさらに困難になることです。また、メモリフットプリントが少し削減されることもありますが、多くの場合、節約量はごくわずかです。

最大の欠点は、問題が発生した場合にデバッグが大幅に困難になることです。

CPUの速度、メモリ/ディスクの量が現在のシステムでは、バイナリを削除してもパフォーマンスへの影響はほとんどありません。それは本当にデバッグ、「清潔さ」、そして個人的な好みについてです。一部の人々は、生産または「出荷された」ソフトウェアに常にストリップされたバイナリを使用することを好みます。一部の人々は、「念のため」常に記号を含めたままにすることを好む。

個人的には、シンボルを含めることを好みます。商用アプリケーションがsegfaulting(またはその他の方法でクラッシュ)する1年の間にいくつかの本当に苛立たしい状況があり、バイナリが取り除かれたため、問題がどこにあるかを特定することができませんでした。それらのケースの少なくともいくつかでは、ベンダーは、クラッシュするまで、ストリップなしのバージョンを実行するように私に送信してしまい、より有用なデバッグ情報を得ることができました。彼らが最初にストリップなしバージョンを提供した場合、問題をより速く、より少ないダウンタイムで解決できたでしょう。


2
32MB NSLU2のようなメモリに制約のある組み込みシステムでない限り、これに同意します。これらのシナリオでは、RAMのすべてのバイトがカウントされ、バイナリを10%削減することが非常に一般的です。同様に、死にかけているプロセスまたは死んだプロセスにgdbをアタッチし、ストリップされていないシンボルがなければクリークに上がっていただろう。私の見解は、シンボルの除去はメモリの節約とより良いキャッシュラインの使用のためだけであるということです。ただし、最適化によって期待が無視される可能性があるため、後者をテストしてください。
zerolagtime

1
あなたは素晴らしい点を作ります。上記の私のコメントは、典型的なデスクトップ/ラップトップまたはサーバーの使用シナリオに当てはまりますが、バイナリを削除することは、多くの場合、組み込みシステムや特殊用途システムでは大きな勝利です。
Christopher Cashell、2011年

0

テスト用にデバッグシンボルを使用してソフトウェアをコンパイルし、展開のためにそれらを取り除くだけです。デバッグシンボルが公開したくないものを公開する場合、これは役立つかもしれません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.