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