382 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			382 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
								 | 
							
								<HTML>
							 | 
						||
| 
								 | 
							
								<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
							 | 
						||
| 
								 | 
							
								<!-- Created on March, 27  2008 by texi2html 1.64 -->
							 | 
						||
| 
								 | 
							
								<!-- 
							 | 
						||
| 
								 | 
							
								Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
							 | 
						||
| 
								 | 
							
								            Karl Berry  <karl@freefriends.org>
							 | 
						||
| 
								 | 
							
								            Olaf Bachmann <obachman@mathematik.uni-kl.de>
							 | 
						||
| 
								 | 
							
								            and many others.
							 | 
						||
| 
								 | 
							
								Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
							 | 
						||
| 
								 | 
							
								Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								-->
							 | 
						||
| 
								 | 
							
								<HEAD>
							 | 
						||
| 
								 | 
							
								<TITLE>Debugging with GDB: GDB Bugs</TITLE>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<META NAME="description" CONTENT="Debugging with GDB: GDB Bugs">
							 | 
						||
| 
								 | 
							
								<META NAME="keywords" CONTENT="Debugging with GDB: GDB Bugs">
							 | 
						||
| 
								 | 
							
								<META NAME="resource-type" CONTENT="document">
							 | 
						||
| 
								 | 
							
								<META NAME="distribution" CONTENT="global">
							 | 
						||
| 
								 | 
							
								<META NAME="Generator" CONTENT="texi2html 1.64">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</HEAD>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="SEC654"></A>
							 | 
						||
| 
								 | 
							
								<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
							 | 
						||
| 
								 | 
							
								<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC653"> < </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC655"> > </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_4.html#SEC14"> << </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top"> Up </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_28.html#SEC657"> >> </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top">Top</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_toc.html#SEC_Contents">Contents</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_38.html#SEC764">Index</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_abt.html#SEC_About"> ? </A>]</TD>
							 | 
						||
| 
								 | 
							
								</TR></TABLE>
							 | 
						||
| 
								 | 
							
								<H1> 26. Reporting Bugs in GDB </H1>
							 | 
						||
| 
								 | 
							
								<!--docid::SEC654::-->
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Your bug reports play an essential role in making GDB reliable.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Reporting a bug may help you by bringing a solution to your problem, or it
							 | 
						||
| 
								 | 
							
								may not.  But in any case the principal function of a bug report is to help
							 | 
						||
| 
								 | 
							
								the entire community by making the next version of GDB work better.  Bug
							 | 
						||
| 
								 | 
							
								reports are your contribution to the maintenance of GDB.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In order for a bug report to serve its purpose, you must include the
							 | 
						||
| 
								 | 
							
								information that enables us to fix the bug.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> 
							 | 
						||
| 
								 | 
							
								<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_27.html#SEC655">26.1 Have You Found a Bug?</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP">Have you found a bug?</TD></TR>
							 | 
						||
| 
								 | 
							
								<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_27.html#SEC656">26.2 How to Report Bugs</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP">How to report bugs</TD></TR>
							 | 
						||
| 
								 | 
							
								</TABLE></BLOCKQUOTE>
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="Bug Criteria"></A>
							 | 
						||
| 
								 | 
							
								<HR SIZE="6">
							 | 
						||
| 
								 | 
							
								<A NAME="SEC655"></A>
							 | 
						||
| 
								 | 
							
								<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
							 | 
						||
| 
								 | 
							
								<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> < </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC656"> > </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> << </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> Up </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_28.html#SEC657"> >> </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top">Top</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_toc.html#SEC_Contents">Contents</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_38.html#SEC764">Index</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_abt.html#SEC_About"> ? </A>]</TD>
							 | 
						||
| 
								 | 
							
								</TR></TABLE>
							 | 
						||
| 
								 | 
							
								<H2> 26.1 Have You Found a Bug? </H2>
							 | 
						||
| 
								 | 
							
								<!--docid::SEC655::-->
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you are not sure whether you have found a bug, here are some guidelines:
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<UL>
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1326"></A>
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1327"></A>
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1328"></A>
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								If the debugger gets a fatal signal, for any input whatever, that is a
							 | 
						||
| 
								 | 
							
								GDB bug.  Reliable debuggers never crash.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1329"></A>
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								If GDB produces an error message for valid input, that is a
							 | 
						||
| 
								 | 
							
								bug.  (Note that if you're cross debugging, the problem may also be
							 | 
						||
| 
								 | 
							
								somewhere in the connection to the target.)
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1330"></A>
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								If GDB does not produce an error message for invalid input,
							 | 
						||
| 
								 | 
							
								that is a bug.  However, you should note that your idea of
							 | 
						||
| 
								 | 
							
								"invalid input" might be our idea of "an extension" or "support
							 | 
						||
| 
								 | 
							
								for traditional practice".
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								If you are an experienced user of debugging tools, your suggestions
							 | 
						||
| 
								 | 
							
								for improvement of GDB are welcome in any case.
							 | 
						||
| 
								 | 
							
								</UL>
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="Bug Reporting"></A>
							 | 
						||
| 
								 | 
							
								<HR SIZE="6">
							 | 
						||
| 
								 | 
							
								<A NAME="SEC656"></A>
							 | 
						||
| 
								 | 
							
								<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
							 | 
						||
| 
								 | 
							
								<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC655"> < </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_28.html#SEC657"> > </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> << </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> Up </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_28.html#SEC657"> >> </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top">Top</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_toc.html#SEC_Contents">Contents</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_38.html#SEC764">Index</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_abt.html#SEC_About"> ? </A>]</TD>
							 | 
						||
| 
								 | 
							
								</TR></TABLE>
							 | 
						||
| 
								 | 
							
								<H2> 26.2 How to Report Bugs </H2>
							 | 
						||
| 
								 | 
							
								<!--docid::SEC656::-->
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A number of companies and individuals offer support for GNU products.
							 | 
						||
| 
								 | 
							
								If you obtained GDB from a support organization, we recommend you
							 | 
						||
| 
								 | 
							
								contact that organization first.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can find contact information for many support companies and
							 | 
						||
| 
								 | 
							
								individuals in the file <TT>`etc/SERVICE'</TT> in the GNU Emacs
							 | 
						||
| 
								 | 
							
								distribution.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In any event, we also recommend that you submit bug reports for
							 | 
						||
| 
								 | 
							
								GDB.  The preferred method is to submit them directly using
							 | 
						||
| 
								 | 
							
								<A HREF="http://www.gnu.org/software/gdb/bugs/">GDB's Bugs web
							 | 
						||
| 
								 | 
							
								page</A>.  Alternatively, the <A HREF="mailto:bug-gdb@gnu.org">e-mail gateway</A> can
							 | 
						||
| 
								 | 
							
								be used.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<STRONG>Do not send bug reports to <SAMP>`info-gdb'</SAMP>, or to
							 | 
						||
| 
								 | 
							
								<SAMP>`help-gdb'</SAMP>, or to any newsgroups.</STRONG>  Most users of GDB do
							 | 
						||
| 
								 | 
							
								not want to receive bug reports.  Those that do have arranged to receive
							 | 
						||
| 
								 | 
							
								<SAMP>`bug-gdb'</SAMP>.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The mailing list <SAMP>`bug-gdb'</SAMP> has a newsgroup <SAMP>`gnu.gdb.bug'</SAMP> which
							 | 
						||
| 
								 | 
							
								serves as a repeater.  The mailing list and the newsgroup carry exactly
							 | 
						||
| 
								 | 
							
								the same messages.  Often people think of posting bug reports to the
							 | 
						||
| 
								 | 
							
								newsgroup instead of mailing them.  This appears to work, but it has one
							 | 
						||
| 
								 | 
							
								problem which can be crucial: a newsgroup posting often lacks a mail
							 | 
						||
| 
								 | 
							
								path back to the sender.  Thus, if we need to ask for more information,
							 | 
						||
| 
								 | 
							
								we may be unable to reach you.  For this reason, it is better to send
							 | 
						||
| 
								 | 
							
								bug reports to the mailing list.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The fundamental principle of reporting bugs usefully is this:
							 | 
						||
| 
								 | 
							
								<STRONG>report all the facts</STRONG>.  If you are not sure whether to state a
							 | 
						||
| 
								 | 
							
								fact or leave it out, state it!
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Often people omit facts because they think they know what causes the
							 | 
						||
| 
								 | 
							
								problem and assume that some details do not matter.  Thus, you might
							 | 
						||
| 
								 | 
							
								assume that the name of the variable you use in an example does not matter.
							 | 
						||
| 
								 | 
							
								Well, probably it does not, but one cannot be sure.  Perhaps the bug is a
							 | 
						||
| 
								 | 
							
								stray memory reference which happens to fetch from the location where that
							 | 
						||
| 
								 | 
							
								name is stored in memory; perhaps, if the name were different, the contents
							 | 
						||
| 
								 | 
							
								of that location would fool the debugger into doing the right thing despite
							 | 
						||
| 
								 | 
							
								the bug.  Play it safe and give a specific, complete example.  That is the
							 | 
						||
| 
								 | 
							
								easiest thing for you to do, and the most helpful.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Keep in mind that the purpose of a bug report is to enable us to fix the
							 | 
						||
| 
								 | 
							
								bug.  It may be that the bug has been reported previously, but neither
							 | 
						||
| 
								 | 
							
								you nor we can know that unless your bug report is complete and
							 | 
						||
| 
								 | 
							
								self-contained.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Sometimes people give a few sketchy facts and ask, "Does this ring a
							 | 
						||
| 
								 | 
							
								bell?"  Those bug reports are useless, and we urge everyone to
							 | 
						||
| 
								 | 
							
								<EM>refuse to respond to them</EM> except to chide the sender to report
							 | 
						||
| 
								 | 
							
								bugs properly.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To enable us to fix the bug, you should include all these things:
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<UL>
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								The version of GDB.  GDB announces it if you start
							 | 
						||
| 
								 | 
							
								with no arguments; you can also print it at any time using <CODE>show
							 | 
						||
| 
								 | 
							
								version</CODE>.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Without this, we will not know whether there is any point in looking for
							 | 
						||
| 
								 | 
							
								the bug in the current version of GDB.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								The type of machine you are using, and the operating system name and
							 | 
						||
| 
								 | 
							
								version number.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								What compiler (and its version) was used to compile GDB---e.g.
							 | 
						||
| 
								 | 
							
								"gcc--2.8.1".
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								What compiler (and its version) was used to compile the program you are
							 | 
						||
| 
								 | 
							
								debugging--e.g.  "gcc--2.8.1", or "HP92453-01 A.10.32.03 HP
							 | 
						||
| 
								 | 
							
								C Compiler".  For GCC, you can say <KBD>gcc --version</KBD>
							 | 
						||
| 
								 | 
							
								to get this information; for other compilers, see the documentation for
							 | 
						||
| 
								 | 
							
								those compilers.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								The command arguments you gave the compiler to compile your example and
							 | 
						||
| 
								 | 
							
								observe the bug.  For example, did you use <SAMP>`-O'</SAMP>?  To guarantee
							 | 
						||
| 
								 | 
							
								you will not omit something important, list them all.  A copy of the
							 | 
						||
| 
								 | 
							
								Makefile (or the output from make) is sufficient.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If we were to try to guess the arguments, we would probably guess wrong
							 | 
						||
| 
								 | 
							
								and then we might not encounter the bug.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								A complete input script, and all necessary source files, that will
							 | 
						||
| 
								 | 
							
								reproduce the bug.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								A description of what behavior you observe that you believe is
							 | 
						||
| 
								 | 
							
								incorrect.  For example, "It gets a fatal signal."
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Of course, if the bug is that GDB gets a fatal signal, then we
							 | 
						||
| 
								 | 
							
								will certainly notice it.  But if the bug is incorrect output, we might
							 | 
						||
| 
								 | 
							
								not notice unless it is glaringly wrong.  You might as well not give us
							 | 
						||
| 
								 | 
							
								a chance to make a mistake.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Even if the problem you experience is a fatal signal, you should still
							 | 
						||
| 
								 | 
							
								say so explicitly.  Suppose something strange is going on, such as, your
							 | 
						||
| 
								 | 
							
								copy of GDB is out of synch, or you have encountered a bug in
							 | 
						||
| 
								 | 
							
								the C library on your system.  (This has happened!)  Your copy might
							 | 
						||
| 
								 | 
							
								crash and ours would not.  If you told us to expect a crash, then when
							 | 
						||
| 
								 | 
							
								ours fails to crash, we would know that the bug was not happening for
							 | 
						||
| 
								 | 
							
								us.  If you had not told us to expect a crash, then we would not be able
							 | 
						||
| 
								 | 
							
								to draw any conclusion from our observations.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1331"></A>
							 | 
						||
| 
								 | 
							
								<A NAME="IDX1332"></A>
							 | 
						||
| 
								 | 
							
								To collect all this information, you can use a session recording program
							 | 
						||
| 
								 | 
							
								such as <CODE>script</CODE>, which is available on many Unix systems.
							 | 
						||
| 
								 | 
							
								Just run your GDB session inside <CODE>script</CODE> and then
							 | 
						||
| 
								 | 
							
								include the <TT>`typescript'</TT> file with your bug report.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Another way to record a GDB session is to run GDB
							 | 
						||
| 
								 | 
							
								inside Emacs and then save the entire buffer to a file.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								If you wish to suggest changes to the GDB source, send us context
							 | 
						||
| 
								 | 
							
								diffs.  If you even discuss something in the GDB source, refer to
							 | 
						||
| 
								 | 
							
								it by context, not by line number.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The line numbers in our development sources will not match those in your
							 | 
						||
| 
								 | 
							
								sources.  Your line numbers would convey no useful information to us.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</UL>
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Here are some things that are not necessary:
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<UL>
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								A description of the envelope of the bug.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Often people who encounter a bug spend a lot of time investigating
							 | 
						||
| 
								 | 
							
								which changes to the input file will make the bug go away and which
							 | 
						||
| 
								 | 
							
								changes will not affect it.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This is often time consuming and not very useful, because the way we
							 | 
						||
| 
								 | 
							
								will find the bug is by running a single example under the debugger
							 | 
						||
| 
								 | 
							
								with breakpoints, not by pure deduction from a series of examples.
							 | 
						||
| 
								 | 
							
								We recommend that you save your time for something else.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Of course, if you can find a simpler example to report <EM>instead</EM>
							 | 
						||
| 
								 | 
							
								of the original one, that is a convenience for us.  Errors in the
							 | 
						||
| 
								 | 
							
								output will be easier to spot, running under the debugger will take
							 | 
						||
| 
								 | 
							
								less time, and so on.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								However, simplification is not vital; if you do not want to do this,
							 | 
						||
| 
								 | 
							
								report the bug anyway and send us the entire test case you used.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								A patch for the bug.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A patch for the bug does help us if it is a good one.  But do not omit
							 | 
						||
| 
								 | 
							
								the necessary information, such as the test case, on the assumption that
							 | 
						||
| 
								 | 
							
								a patch is all we need.  We might see problems with your patch and decide
							 | 
						||
| 
								 | 
							
								to fix the problem another way, or we might not understand it at all.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Sometimes with a program as complicated as GDB it is very hard to
							 | 
						||
| 
								 | 
							
								construct an example that will make the program follow a certain path
							 | 
						||
| 
								 | 
							
								through the code.  If you do not send us the example, we will not be able
							 | 
						||
| 
								 | 
							
								to construct one, so we will not be able to verify that the bug is fixed.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								And if we cannot understand what bug you are trying to fix, or why your
							 | 
						||
| 
								 | 
							
								patch should be an improvement, we will not install it.  A test case will
							 | 
						||
| 
								 | 
							
								help us to understand.
							 | 
						||
| 
								 | 
							
								</P><P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<LI>
							 | 
						||
| 
								 | 
							
								A guess about what the bug is or what it depends on.
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Such guesses are usually wrong.  Even we cannot guess right about such
							 | 
						||
| 
								 | 
							
								things without first using the debugger to find the facts.
							 | 
						||
| 
								 | 
							
								</UL>
							 | 
						||
| 
								 | 
							
								<P>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<A NAME="Command Line Editing"></A>
							 | 
						||
| 
								 | 
							
								<HR SIZE="6">
							 | 
						||
| 
								 | 
							
								<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
							 | 
						||
| 
								 | 
							
								<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_27.html#SEC654"> << </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_28.html#SEC657"> >> </A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top">Top</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_toc.html#SEC_Contents">Contents</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_38.html#SEC764">Index</A>]</TD>
							 | 
						||
| 
								 | 
							
								<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_abt.html#SEC_About"> ? </A>]</TD>
							 | 
						||
| 
								 | 
							
								</TR></TABLE>
							 | 
						||
| 
								 | 
							
								<BR>  
							 | 
						||
| 
								 | 
							
								<FONT SIZE="-1">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<address>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Please send FSF & GNU inquiries & questions to <a
							 | 
						||
| 
								 | 
							
								href="mailto:gnu@gnu.org">gnu@gnu.org</a>.  There are also <a
							 | 
						||
| 
								 | 
							
								href="http://www.gnu.org/home.html#ContactInfo">other ways to
							 | 
						||
| 
								 | 
							
								contact</a> the FSF.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>These pages are maintained by <a
							 | 
						||
| 
								 | 
							
								href="http://www.gnu.org/software/gdb/">the GDB developers</a>.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Copyright Free Software Foundation, Inc., 59 Temple Place - Suite
							 | 
						||
| 
								 | 
							
								330, Boston, MA 02111, USA.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Verbatim copying and distribution of this entire article is
							 | 
						||
| 
								 | 
							
								permitted in any medium, provided this notice is preserved.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</address>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This document was generated
							 | 
						||
| 
								 | 
							
								by <I>GDB Administrator</I> on <I>March, 27  2008</I>
							 | 
						||
| 
								 | 
							
								using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
							 | 
						||
| 
								 | 
							
								"><I>texi2html</I></A>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</BODY>
							 | 
						||
| 
								 | 
							
								</HTML>
							 |