<!-- <!DOCTYPE article PUBLIC "-//SGMLtools//DOCUMENT Docbook Style Sheet for HTML//EN"> -->
<!doctype linuxdoc system>
<linuxdoc><article>
<titlepag>
 <title>Problem Solving HOWTO</title>
 <author>
  <name>Dag Wie&euml;rs
  <tt><htmlurl url="mailto:dag@wieers.com" name="dag@wieers.com"></tt>
  </name>
 </author>
 <date>v0.0.3 draft, 18 October 1999</date>

 <abstract>
  This document describes in full detail which steps to take when trying to 
  solve hardware or software problems with Linux yourself. It helps the reader 
  to find information spread all over its harddisk and teaches him how to use
  debugging tools. This document should be the first stop for DIY ;)
 </abstract>
</titlepag>

<toc>

<sect>
 <heading>About the Problem Solving HOWTO</heading>
 <p>
  "We'd like to help you learn to help yourself." -- Simon and Garfunkel, Mrs.
  Robinson
 </p>

 <sect1>
  <heading>New Versions of this Document</heading>
  <p>
  If you need to know more about the Linux Documentation Project or about Linux HOWTO's,
  feel free to contact the supervisor Tim Bynum 
  <htmlurl url="mailto:linux-howto@sunsite.unc.edu" name="linux-howto@sunsite.unc.edu">. 

  Tim Bynum will post the listing to several national and international newsgroups on a
  monthly basis. In addition, the Problem Solving HOWTO can be found on the World Wide 
  Web at <url url="http://dag.wieers.com/howto/"> New versions of the Problem Solving 
  HOWTO are always placed at this site first, so please be sure to check if the copy 
  you are reading is still up to date! 
  </p>
 </sect1>

 <sect1>
  <heading>Feedback</heading>
  <p>
  If some information seems to be wrong, deceptive or missing, I'd appreciate if you 
  mailed me the improvements. Since I'm just human this document isn't bug-free, but your
  contribution can and will make a difference.  

  Additions or improvements can be mailed to: 
  <htmlurl url="mailto:dag@wieers.com" name="dag@wieers.com">
  </p>
 </sect1>
</sect>


<sect>
 <heading>Software information</heading>

 <sect1>
  <heading>Finding Information on your System</heading>
  <p>...</p>
 </sect1>
 <sect1>
   <heading>Finding Information on the Net</heading>
  <p>...</p>
 </sect1>
 <sect1>
   <heading>Use the source, Luke !</heading>
  <p>...</p>
 </sect1>
</sect>

<sect>
 <heading>Software problem determination</heading>
 <sect1>
  <heading>Reading information</heading>
  <p>...</p>
 </sect1>

 <sect1>
  <heading>Spotting useful error-information</heading>
  <p>...</p>
 </sect1>

 <sect1>
  <heading>Understanding the meaning of an error</heading>
  <p>...</p>
 </sect1>
</sect>
<sect>
  <heading>Software problem checklist</heading>
  <p>
    <itemize>
      <item> Did you get the latest version ?</item>
      <item> Did you read the documentation ?
        <itemize>
          <item> Is there a FAQ ?</item>
          <item> Is there an INSTALL or README ?</item>
          <item> Check the CHANGES, Changelog or HISTORY ?</item>
        </itemize>
      </item>
      <item> What are the commandline options ?
             --help, -h, man &lt;cmd&gt;, info &lt;cmd&gt;
        <itemize>
          <item> Is there a verbose-option ?
                 -v, --verbose, -V, -vv</item>
          <item> Is there a debug-option ?
                 -d, --debug</item>
          <item> Is there a logging facility ?
                 -o, -l</item>
        </itemize>
      </item>
      <item> What is the syntax of the configuration-file
        <itemize>
          <item> Is there a verbose-option ?</item>
          <item> Is there a debug-option ?</item>
          <item> Is there a logging facility ?</item>
        </itemize>
      </item>
      <item> What files does the program use ?
        <itemize>
          <item> Are the permission correct ?</item>
          <item> Are you the right user, do you have priviliges ?</item>
          <item> Is the program suid ? should it be ?</item>
        </itemize>
      </item>
      <item> Use a debugging-tool ?
        <itemize>
          <item> Use strace to examine all the system calls.</item>
          <item> Use ltrace to examine the library calls.</item>
        </itemize>
      </item>
      <item> Get in touch with the developers ?
        <itemize>
          <item> First check the documentation again</item>
          <item> Then check their website (if possible)</item>
          <item> Is there a user-forum ? Send it there.</item>
          <item> Is there a developer-forum ? Send it there.</item>
          <item> Send to author(s).</item>
        </itemize>
      </item>
    </itemize> 
  </p>
  <p>
  When you finally find a solution that was not stated somewhere in the documentation, 
  you might want to provide both problem and answer to the author or one of the 
  developers. This way you prevent someone else making the same mistakes you made, 
  <em>because wouldn't it be great if the answer was already available to you ?</em>
 </p>
 <p>
  If you've got enough expertise about a particalur program and there wasn't any 
  beginners-document available, you might want to consider volunteering to write a FAQ 
  about it, the author(s) would be glad !
 </p>
</sect>

<sect>
 <heading>Software debugging tools</heading>
 <sect1>
  <heading>ksymoops</heading>
  <p>...</p>
 </sect1>
 <sect1><heading>gdb</heading>
  <p>...</p>
 </sect1>
 <sect1><heading>nm</heading>
  <p>...</p>
 </sect1>
 <sect1><heading>objdump</heading>
  <p>...</p>
 </sect1>
 <sect1><heading>strace</heading>
  <p>...</p>
 </sect1>
 <sect1><heading>ltrace</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>Using your syslog</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>strings</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>file</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>ldd</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>lsof / lslk / fuser / stat / readlink</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>perl</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>od / hexdump</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>time</heading>
  <p>...</p>
 </sect1>
</sect>

<sect>
 <heading>Hardware information</heading>
 <p>...</p>
 <sect1>
  <heading>Getting system information</heading>
  <p>
  /proc-filesystem
  uname
  </p>
 </sect1>
</sect>

<sect>
 <heading>Hardware problem determination</heading>
 <p>...</p>
</sect>

<sect>
 <heading>Hardware problem check-list</heading>
 <p>
  <itemize>
   <item>...</item>
  </itemize>
 </p>
</sect>

<sect>
 <heading>Hardware debugging tools</heading>
 <sect1>
  <heading>memtest</heading>
 </sect1>
 <sect1>
  <heading>fsck</heading>
 </sect1>
 <sect1>
  <heading>pnpdump</heading>
 </sect1>
 <sect1>
  <heading>isapnp</heading>
 </sect1>
 <sect1>
  <heading>lspci</heading>
 </sect1>
 <sect1>
  <heading>dmesg</heading>
 </sect1>
</sect>

<sect>
 <heading>Types of Problems</heading>
 <sect1>
  <heading>the "hey, it should behave otherwise"-problem</heading>
  <p>...</p>
 </sect1>
 
 <sect1>
  <heading>the "it returns something i don't understand"-problem</heading>
  <p>...</p>
 </sect1>

 <sect1>
  <heading>the "i really don't have a clue"-problem</heading>
  <p>...</p>
 </sect1>

 <sect1>
  <heading>the "i don't know how exactle to do this"-problem</heading>
  <p>...</p>
 </sect1>

 <sect1>
  <heading>the "this must be a bug"-problem</heading>
  <p>...</p>
 </sect1>
</sect>
  
 
<sect>
 <heading>Types of Information</heading>
 <sect1>
  <heading>README-Information</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>CHANGES-Information</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>Manuals</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>Sample files</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>Website</heading>
  <p>...</p>
 </sect1>
 <sect1>
  <heading>Sources</heading>
  <p>...</p>
 </sect1>
</sect>

</article></linuxdoc>
