aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/aboutdebug.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter06/aboutdebug.xml')
-rw-r--r--chapter06/aboutdebug.xml69
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>
+