diff options
Diffstat (limited to 'chapter06/aboutdebug.xml')
-rw-r--r-- | chapter06/aboutdebug.xml | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/chapter06/aboutdebug.xml b/chapter06/aboutdebug.xml new file mode 100644 index 000000000..5bd7a671e --- /dev/null +++ b/chapter06/aboutdebug.xml @@ -0,0 +1,69 @@ +<sect1 id="ch06-aboutdebug"> +<title>About debugging symbols</title> + +<para> +Most programs and libraries by default are compiled with debugging +symbols and optimizing level 2 (gcc options -g and -O2) and are compiled +for a specific CPU. On Intel platforms software is compiled for i386 +processors by default. If you don't wish to run software on other +machines other than your own, you might want to change the default +compiler options so that they will be compiled with a higher +optimization level, no debugging symbols and generate code for your +specific architecture. Let me first explain what debugging symbols +are. +</para> + +<para> +A program compiled with debugging symbols means you can run a program or +library through a debugger and the debugger's output will be user friendlier. +These debugging symbols also enlarge the program or library significantly. +</para> + +<para> +To remove debugging symbols from a binary (must be an a.out or ELF binary) +run <userinput>strip --strip-debug filename</userinput> You can use wild cards +if you need to strip debugging symbols from multiple files (use something like +strip --strip-debug $LFS/usr/bin/*). Another, easier, options is just +not to compile programs with debugging symbols. Most people will probably +never use a debugger on software, so by leaving those symbols out you +can save a lot of diskspace. +</para> + +<para> +Before you wonder if these debugging symbols would make a big difference, +here are some statistics: +</para> + +<itemizedlist> + +<listitem><para> + A dynamic Bash binary with debugging symbols: 1.2MB +</para></listitem> + +<listitem><para> + A dynamic Bash binary without debugging symbols: 478KB +</para></listitem> + +<listitem><para> + /lib and /usr/lib (glibc and gcc files) with debugging + symbols: 87MB +</para></listitem> + +<listitem><para> + /lib and /usr/lib (glibc and gcc files) without + debugging symbols: 16MB +</para></listitem> + +</itemizedlist> + +<para> +Sizes may vary depending on which compiler was used and which C library +version was used to link dynamic programs against, but your results will be +similar if you compare programs with and without debugging symbols. After +I was done with this chapter and stripped all debugging symbols from all LFS +binaries and libraries I regained a little over 102 MB of disk space. Quite +the difference. +</para> + +</sect1> + |