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