소스 검색

chapter06: Translate debug symbol & strip instruction

Xi Ruoyao 7 년 전
부모
커밋
5c8a71b30b
2개의 변경된 파일60개의 추가작업 그리고 38개의 파일을 삭제
  1. 20 23
      chapter06/aboutdebug.xml
  2. 40 15
      chapter06/strippingagain.xml

+ 20 - 23
chapter06/aboutdebug.xml

@@ -8,45 +8,42 @@
 <sect1 id="ch-system-aboutdebug">
   <?dbhtml filename="aboutdebug.html"?>
 
-  <title>About Debugging Symbols</title>
+  <title>关于调试符号</title>
 
-  <para>Most programs and libraries are, by default, compiled with
-  debugging symbols included (with <command>gcc</command>'s
-  <parameter>-g</parameter> option). This means that when debugging a
-  program or library that was compiled with debugging information
-  included, the debugger can provide not only memory addresses, but also
-  the names of the routines and variables.</para>
+  <para>许多程序和库在默认情况下被编译为带有调试符号
+  (通过使用 <command>gcc</command> 的 <parameter>-g</parameter> 选项)。
+  这意味着在调试这些带有调试信息的程序和库时,
+  调试器不仅能给出内存地址,还能给出子程序和变量的名称。</para>
 
-  <para>However, the inclusion of these debugging symbols enlarges a
-  program or library significantly. The following is an example of the
-  amount of space these symbols occupy:</para>
+  <para>然而,插入这些调试符号会显著增大程序或库的体积。
+	  下面是一些表现调试符号占用空间的例子:</para>
 
   <itemizedlist>
     <listitem>
-      <para>A <command>bash</command> binary with debugging symbols:
+      <para>一个有调试符号的 <command>bash</command> 二进制程序:
       1200 KB</para>
     </listitem>
     <listitem>
-      <para>A <command>bash</command> binary without debugging symbols:
+      <para>一个没有调试符号的 <command>bash</command> 二进制程序:
       480 KB</para>
     </listitem>
     <listitem>
-      <para>Glibc and GCC files (<filename class="directory">/lib</filename>
-      and <filename class="directory">/usr/lib</filename>) with debugging
-      symbols: 87 MB</para>
+      <para>带有调试符号的 Glibc 和 GCC 文件 
+      	  (<filename class="directory">/lib</filename>
+      	  和 <filename class="directory">/usr/lib</filename> 目录中):
+      	  87 MB</para>
     </listitem>
     <listitem>
-      <para>Glibc and GCC files without debugging symbols: 16 MB</para>
+      <para>没有调试符号的 Glibc 和 GCC 文件:16 MB</para>
     </listitem>
   </itemizedlist>
 
-  <para>Sizes may vary depending on which compiler and C library were used,
-  but when comparing programs with and without debugging symbols, the
-  difference will usually be a factor between two and five.</para>
+  <para>以上文件大小的值可能随编译器和 C 运行库的版本而变化,
+	  但在比较带调试符号和不带调试符号的程序时,它们文件大小的差距通常达到
+	  2 至 5 倍。</para>
 
-  <para>Because most users will never use a debugger on their system software,
-  a lot of disk space can be regained by removing these symbols. The next
-  section shows how to strip all debugging symbols from the programs and
-  libraries.</para>
+  <para>由于大多数用户永远不会用调试器调试系统软件,
+	  可以通过移除它们的调试符号,回收大量磁盘空间。
+	  下一节展示如何从系统程序和库中移除所有调试符号。</para>
 
 </sect1>

+ 40 - 15
chapter06/strippingagain.xml

@@ -8,26 +8,36 @@
 <sect1 id="ch-system-strippingagain">
   <?dbhtml filename="strippingagain.html"?>
 
-  <title>Stripping Again</title>
+  <title>再次移除调试符号</title>
 
-  <para>This section is optional.  If the intended user is not a 
+  <!--para>This section is optional.  If the intended user is not a 
   programmer and does not plan to do
   any debugging on the system software, the system size can be decreased
   by about 90 MB by removing the debugging symbols from binaries and
   libraries. This causes no inconvenience other than not being able to
-  debug the software fully anymore.</para>
+  debug the software fully anymore.</para-->
+  <para>本节是可选的。如果系统不是为程序员设计的,
+	  也没有调试系统软件的计划,可以通过从二进制程序和库移除调试符号,
+	  将系统的体积减小约 90 MB 。除了无法再调试全部软件外,
+	  这不会造成任何不变。</para>
 
-  <para>Most people who use the commands mentioned below do not
+  <!--para>Most people who use the commands mentioned below do not
   experience any difficulties. However, it is easy to make a typo and
   render the new system unusable, so before running the
   <command>strip</command> commands, it is a good idea to make a
-  backup of the LFS system in its current state.</para>
+  backup of the LFS system in its current state.</para-->
+  <para>大多数使用以下命令的用户不会遇到什么困难,但如果打错了命令,
+	  很容易导致新系统无法使用。因此,在运行 <command>strip</command>
+	  命令前,最好将 LFS 系统的当前状态备份。</para>
 
-  <para>First place the debugging symbols for selected libraries 
+  <!--para>First place the debugging symbols for selected libraries 
   in separate files.  This debugging information is needed if running 
-  regression tests that use <ulink 
-  url='&blfs-book;/general/valgrind.html'>valgrind</ulink> or <ulink 
-  url='&blfs-book;/general/gdb.html'>gdb</ulink> later in BLFS.
+  regression tests that use <ulink  -->
+  <para>首先将一些库的调试符号保存在单独的文件中,在 BLFS 中,
+  如果使用 <ulink
+  url='&blfs-book;/general/valgrind.html'>valgrind</ulink> 或 <ulink 
+  url='&blfs-book;/general/gdb.html'>gdb</ulink> 运行退化测试,
+  则需要这些调试信息的存在。
   </para>
 
 <!-- also of interest are libgfortan, libgo, libgomp, and libobjc from gcc -->
@@ -57,15 +67,19 @@ done
 
 unset LIB save_lib save_usrlib</userinput></screen>
 
-  <para>Before performing the stripping, take special care to ensure that
+  <!--para>Before performing the stripping, take special care to ensure that
   none of the binaries that are about to be stripped are running. If
   unsure whether the user entered chroot with the command given in
   <xref linkend="ch-system-chroot" role=","/> first exit from
-  chroot:</para>
+  chroot:</para-->
+  <para>在移除调试符号前,必须特别小心,
+	  保证没有需要移除调试符号的二进制程序还在运行。
+	  如果不确定是否使用 <xref linkend="ch-system-chroot"/>
+	  中的命令进入了 chroot 环境,首先退出 chroot 环境:</para>
 
 <screen role="nodump"><userinput>logout</userinput></screen>
 
-  <para>Then reenter it with:</para>
+  <para>然后再执行下列命令重新进入:</para>
 
 <screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i          \
     HOME=/root TERM=$TERM              \
@@ -73,7 +87,16 @@ unset LIB save_lib save_usrlib</userinput></screen>
     PATH=/bin:/usr/bin:/sbin:/usr/sbin \
     /tools/bin/bash --login</userinput></screen>
 
-  <para>Now the binaries and libraries can be safely stripped:</para>
+  <note><title>译注</title>
+	  <para>注意这里使用了 /tools/bin/bash 而不是 /bin/bash ,
+		  因为 /bin 中的 bash 二进制文件将会被移除调试符号。
+		  在 <xref linkend="ch-system-bash"/> 中我们执行了新编译的
+		  /bin/bash ,因此必须退出 chroot 环境,再以 /tools/bin/bash
+		  为 shell 重新进入。之后使用的 /tools/bin/find 和
+		  /tools/bin/strip 同理。</para>
+  </note>
+
+  <para>现在即可安全地移除程序和库的调试符号:</para>
 
 <screen><userinput>/tools/bin/find /usr/lib -type f -name \*.a \
    -exec /tools/bin/strip --strip-debug {} ';'
@@ -84,9 +107,11 @@ unset LIB save_lib save_usrlib</userinput></screen>
 /tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
     -exec /tools/bin/strip --strip-all {} ';'</userinput></screen>
 
-  <para>A large number of files will be reported as having their file
+  <!--para>A large number of files will be reported as having their file
   format not recognized. These warnings can be safely ignored. These
   warnings indicate that those files are scripts instead of
-  binaries.</para>
+  binaries.</para-->
+  <para>这里会有很多文件被报告为格式无法识别,这些警告可以安全地忽略。
+	  它们表明那些文件是脚本文件,而不是二进制文件。</para>
 
 </sect1>