プログラムやライブラリの多くは、デフォルトではデバッグシンボルを含めてコンパイルされています。 (gcc の -g
オプションが用いられています。)
デバッグ情報を含めてコンパイルされたプログラムやライブラリは、デバッグ時にメモリアドレスが参照できるだけでなく、処理ルーチンや変数の名称も知ることができます。
しかしそういったデバッグ情報は、プログラムやライブラリのファイルサイズを極端に大きくします。 以下にデバッグシンボルが占める割合の例を 2 つ示します。
デバッグシンボルを含んだ bash の実行ファイル: 1200 KB
デバッグシンボルを含まない bash の実行ファイル: 480 KB(60% 減)
デバッグシンボルを含んだ Glibc と GCC の関連ファイル (/lib
と /usr/lib
): 87 MB
デバッグシンボルを含まない Glibc と GCC の関連ファイル: 16MB(82% 減)
利用するコンパイラーや C ライブラリの違いによって、生成されるファイルのサイズは異なります。 デバッグシンボルがストリップされたプログラムは、ストリップされていないものに比べて 50% から 80% のサイズ減となります。 プログラムをデバッグするユーザーはそう多くはありません。 デバッグシンボルを削除すればディスク容量はかなり節減できます。 次節ではプログラムやライブラリからデバッグシンボルを取り除く (strip する) 方法を示します。