aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/aboutdebug.xml
diff options
context:
space:
mode:
authorGerard Beekmans <gerard@linuxfromscratch.org>2001-02-15 15:26:52 +0000
committerGerard Beekmans <gerard@linuxfromscratch.org>2001-02-15 15:26:52 +0000
commitb08f4096533577934b885fa9df41d3881d141612 (patch)
tree8e5ffc0ba65ac34d97cd6a896d33b85a897a6da8 /chapter06/aboutdebug.xml
parentad08014624938a3a3bfd1b44e8b27d02c7b06dd8 (diff)
Initial XML commit
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@174 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
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>
+