aboutdebug.xml 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  3. "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  4. <!ENTITY % general-entities SYSTEM "../general.ent">
  5. %general-entities;
  6. ]>
  7. <sect1 id="ch-system-aboutdebug">
  8. <?dbhtml filename="aboutdebug.html"?>
  9. <title>关于调试符号</title>
  10. <para>许多程序和库在默认情况下被编译为带有调试符号的二进制文件
  11. (通过使用 <command>gcc</command> 的 <parameter>-g</parameter> 选项)。
  12. 这意味着在调试这些带有调试信息的程序和库时,
  13. 调试器不仅能给出内存地址,还能给出子程序和变量的名称。</para>
  14. <para>然而,插入这些调试符号会显著增大程序或库的体积。
  15. 下面是一些表现调试符号占用空间的例子:</para>
  16. <itemizedlist>
  17. <listitem>
  18. <para>一个有调试符号的 <command>bash</command> 二进制程序:
  19. 1200 KB</para>
  20. </listitem>
  21. <listitem>
  22. <para>一个没有调试符号的 <command>bash</command> 二进制程序:
  23. 480 KB</para>
  24. </listitem>
  25. <listitem>
  26. <para>带有调试符号的 Glibc 和 GCC 文件
  27. (<filename class="directory">/lib</filename>
  28. 和 <filename class="directory">/usr/lib</filename> 目录中):
  29. 87 MB</para>
  30. </listitem>
  31. <listitem>
  32. <para>没有调试符号的 Glibc 和 GCC 文件:16 MB</para>
  33. </listitem>
  34. </itemizedlist>
  35. <para>以上文件大小的值可能随编译器和 C 运行库的版本而变化,
  36. 但在比较带调试符号和不带调试符号的程序时,它们文件大小的差距通常达到
  37. 2 至 5 倍。</para>
  38. <para>由于大多数用户永远不会用调试器调试系统软件,
  39. 可以通过移除它们的调试符号,回收大量磁盘空间。
  40. 下一节展示如何从系统程序和库中移除所有调试符号。</para>
  41. </sect1>