[6370fa6] | 1 | <sect1 id="ch06-aboutdebug">
|
---|
| 2 | <title>About debugging symbols</title>
|
---|
| 3 |
|
---|
| 4 | <para>
|
---|
| 5 | Most programs and libraries by default are compiled with debugging
|
---|
| 6 | symbols and optimizing level 2 (gcc options -g and -O2) and are compiled
|
---|
| 7 | for a specific CPU. On Intel platforms software is compiled for i386
|
---|
[81a47c0] | 8 | processors by default. If a user doesn't wish to run software on other
|
---|
| 9 | machines other than his own, he might want to change the default
|
---|
[6370fa6] | 10 | compiler options so that they will be compiled with a higher
|
---|
[81a47c0] | 11 | optimization level, no debugging symbols and generate code for his
|
---|
[6370fa6] | 12 | specific architecture. Let me first explain what debugging symbols
|
---|
| 13 | are.
|
---|
| 14 | </para>
|
---|
| 15 |
|
---|
| 16 | <para>
|
---|
[81a47c0] | 17 | A program compiled with debugging symbols means a user can run a program or
|
---|
[6370fa6] | 18 | library through a debugger and the debugger's output will be user friendlier.
|
---|
[81a47c0] | 19 | These debugging symbols also enlarge the program or library significantly.
|
---|
[6370fa6] | 20 | </para>
|
---|
| 21 |
|
---|
| 22 | <para>
|
---|
| 23 | To remove debugging symbols from a binary (must be an a.out or ELF binary)
|
---|
[81a47c0] | 24 | run <userinput>strip --strip-debug filename</userinput>. A user can use wild
|
---|
| 25 | cards
|
---|
| 26 | if he needs to strip debugging symbols from multiple files (use something like
|
---|
[6370fa6] | 27 | strip --strip-debug $LFS/usr/bin/*). Another, easier, options is just
|
---|
| 28 | not to compile programs with debugging symbols. Most people will probably
|
---|
[81a47c0] | 29 | never use a debugger on software, so by leaving those symbols out
|
---|
| 30 | a lot of diskspace can be saved.
|
---|
[6370fa6] | 31 | </para>
|
---|
| 32 |
|
---|
| 33 | <para>
|
---|
[81a47c0] | 34 | Before someone wonders if these debugging symbols would make a big difference,
|
---|
[6370fa6] | 35 | here are some statistics:
|
---|
| 36 | </para>
|
---|
| 37 |
|
---|
| 38 | <itemizedlist>
|
---|
| 39 |
|
---|
| 40 | <listitem><para>
|
---|
| 41 | A dynamic Bash binary with debugging symbols: 1.2MB
|
---|
| 42 | </para></listitem>
|
---|
| 43 |
|
---|
| 44 | <listitem><para>
|
---|
| 45 | A dynamic Bash binary without debugging symbols: 478KB
|
---|
| 46 | </para></listitem>
|
---|
| 47 |
|
---|
| 48 | <listitem><para>
|
---|
| 49 | /lib and /usr/lib (glibc and gcc files) with debugging
|
---|
| 50 | symbols: 87MB
|
---|
| 51 | </para></listitem>
|
---|
| 52 |
|
---|
| 53 | <listitem><para>
|
---|
| 54 | /lib and /usr/lib (glibc and gcc files) without
|
---|
| 55 | debugging symbols: 16MB
|
---|
| 56 | </para></listitem>
|
---|
| 57 |
|
---|
| 58 | </itemizedlist>
|
---|
| 59 |
|
---|
| 60 | <para>
|
---|
| 61 | Sizes may vary depending on which compiler was used and which C library
|
---|
[81a47c0] | 62 | version was used to link dynamic programs against, but results will be
|
---|
| 63 | similar if a user compares programs with and without debugging symbols. After
|
---|
[6370fa6] | 64 | I was done with this chapter and stripped all debugging symbols from all LFS
|
---|
| 65 | binaries and libraries I regained a little over 102 MB of disk space. Quite
|
---|
| 66 | the difference.
|
---|
| 67 | </para>
|
---|
| 68 |
|
---|
| 69 | </sect1>
|
---|
| 70 |
|
---|