<html lang="en">
<head>
<title>Sample Session - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Summary.html#Summary" title="Summary">
<link rel="next" href="Invocation.html#Invocation" title="Invocation">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988-2019 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Sample-Session"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Invocation.html#Invocation">Invocation</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Summary.html#Summary">Summary</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>

<h2 class="chapter">1 A Sample <span class="sc">gdb</span> Session</h2>

<p>You can use this manual at your leisure to read all about <span class="sc">gdb</span>. 
However, a handful of commands are enough to get started using the
debugger.  This chapter illustrates those commands.

<!-- FIXME: this example may not be appropriate for some configs, where -->
<!-- FIXME...primary interest is in remote use. -->
   <p>One of the preliminary versions of <span class="sc">gnu</span> <code>m4</code> (a generic macro
processor) exhibits the following bug: sometimes, when we change its
quote strings from the default, the commands used to capture one macro
definition within another stop working.  In the following short <code>m4</code>
session, we define a macro <code>foo</code> which expands to <code>0000</code>; we
then use the <code>m4</code> built-in <code>defn</code> to define <code>bar</code> as the
same thing.  However, when we change the open quote string to
<code>&lt;QUOTE&gt;</code> and the close quote string to <code>&lt;UNQUOTE&gt;</code>, the same
procedure fails to define a new synonym <code>baz</code>:

<pre class="smallexample">     $ <b>cd gnu/m4</b>
     $ <b>./m4</b>
     <b>define(foo,0000)</b>
     
     <b>foo</b>
     0000
     <b>define(bar,defn(`foo'))</b>
     
     <b>bar</b>
     0000
     <b>changequote(&lt;QUOTE&gt;,&lt;UNQUOTE&gt;)</b>
     
     <b>define(baz,defn(&lt;QUOTE&gt;foo&lt;UNQUOTE&gt;))</b>
     <b>baz</b>
     <b>Ctrl-d</b>
     m4: End of input: 0: fatal error: EOF in string
</pre>
   <p class="noindent">Let us use <span class="sc">gdb</span> to try to see what is going on.

<pre class="smallexample">     $ <b>gdb m4</b>
     <!-- FIXME: this falsifies the exact text played out, to permit smallbook -->
     <!-- FIXME... format to come out better. -->
     <span class="sc">gdb</span> is free software and you are welcome to distribute copies
      of it under certain conditions; type "show copying" to see
      the conditions.
     There is absolutely no warranty for <span class="sc">gdb</span>; type "show warranty"
      for details.
     
     <span class="sc">gdb</span> 8.3.0.20190709-git, Copyright 1999 Free Software Foundation, Inc...
     (gdb)
</pre>
   <p class="noindent"><span class="sc">gdb</span> reads only enough symbol data to know where to find the
rest when needed; as a result, the first prompt comes up very quickly. 
We now tell <span class="sc">gdb</span> to use a narrower display width than usual, so
that examples fit in this manual.

<pre class="smallexample">     (gdb) <b>set width 70</b>
</pre>
   <p class="noindent">We need to see how the <code>m4</code> built-in <code>changequote</code> works. 
Having looked at the source, we know the relevant subroutine is
<code>m4_changequote</code>, so we set a breakpoint there with the <span class="sc">gdb</span>
<code>break</code> command.

<pre class="smallexample">     (gdb) <b>break m4_changequote</b>
     Breakpoint 1 at 0x62f4: file builtin.c, line 879.
</pre>
   <p class="noindent">Using the <code>run</code> command, we start <code>m4</code> running under <span class="sc">gdb</span>
control; as long as control does not reach the <code>m4_changequote</code>
subroutine, the program runs as usual:

<pre class="smallexample">     (gdb) <b>run</b>
     Starting program: /work/Editorial/gdb/gnu/m4/m4
     <b>define(foo,0000)</b>
     
     <b>foo</b>
     0000
</pre>
   <p class="noindent">To trigger the breakpoint, we call <code>changequote</code>.  <span class="sc">gdb</span>
suspends execution of <code>m4</code>, displaying information about the
context where it stops.

<pre class="smallexample">     <b>changequote(&lt;QUOTE&gt;,&lt;UNQUOTE&gt;)</b>
     
     Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
         at builtin.c:879
     879         if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
</pre>
   <p class="noindent">Now we use the command <code>n</code> (<code>next</code>) to advance execution to
the next line of the current function.

<pre class="smallexample">     (gdb) <b>n</b>
     882         set_quotes((argc &gt;= 2) ? TOKEN_DATA_TEXT(argv[1])\
      : nil,
</pre>
   <p class="noindent"><code>set_quotes</code> looks like a promising subroutine.  We can go into it
by using the command <code>s</code> (<code>step</code>) instead of <code>next</code>. 
<code>step</code> goes to the next line to be executed in <em>any</em>
subroutine, so it steps into <code>set_quotes</code>.

<pre class="smallexample">     (gdb) <b>s</b>
     set_quotes (lq=0x34c78 "&lt;QUOTE&gt;", rq=0x34c88 "&lt;UNQUOTE&gt;")
         at input.c:530
     530         if (lquote != def_lquote)
</pre>
   <p class="noindent">The display that shows the subroutine where <code>m4</code> is now
suspended (and its arguments) is called a stack frame display.  It
shows a summary of the stack.  We can use the <code>backtrace</code>
command (which can also be spelled <code>bt</code>), to see where we are
in the stack as a whole: the <code>backtrace</code> command displays a
stack frame for each active subroutine.

<pre class="smallexample">     (gdb) <b>bt</b>
     #0  set_quotes (lq=0x34c78 "&lt;QUOTE&gt;", rq=0x34c88 "&lt;UNQUOTE&gt;")
         at input.c:530
     #1  0x6344 in m4_changequote (argc=3, argv=0x33c70)
         at builtin.c:882
     #2  0x8174 in expand_macro (sym=0x33320) at macro.c:242
     #3  0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
         at macro.c:71
     #4  0x79dc in expand_input () at macro.c:40
     #5  0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
</pre>
   <p class="noindent">We step through a few more lines to see what happens.  The first two
times, we can use &lsquo;<samp><span class="samp">s</span></samp>&rsquo;; the next two times we use <code>n</code> to avoid
falling into the <code>xstrdup</code> subroutine.

<pre class="smallexample">     (gdb) <b>s</b>
     0x3b5c  532         if (rquote != def_rquote)
     (gdb) <b>s</b>
     0x3b80  535         lquote = (lq == nil || *lq == '\0') ?  \
     def_lquote : xstrdup(lq);
     (gdb) <b>n</b>
     536         rquote = (rq == nil || *rq == '\0') ? def_rquote\
      : xstrdup(rq);
     (gdb) <b>n</b>
     538         len_lquote = strlen(rquote);
</pre>
   <p class="noindent">The last line displayed looks a little odd; we can examine the variables
<code>lquote</code> and <code>rquote</code> to see if they are in fact the new left
and right quotes we specified.  We use the command <code>p</code>
(<code>print</code>) to see their values.

<pre class="smallexample">     (gdb) <b>p lquote</b>
     $1 = 0x35d40 "&lt;QUOTE&gt;"
     (gdb) <b>p rquote</b>
     $2 = 0x35d50 "&lt;UNQUOTE&gt;"
</pre>
   <p class="noindent"><code>lquote</code> and <code>rquote</code> are indeed the new left and right quotes. 
To look at some context, we can display ten lines of source
surrounding the current line with the <code>l</code> (<code>list</code>) command.

<pre class="smallexample">     (gdb) <b>l</b>
     533             xfree(rquote);
     534
     535         lquote = (lq == nil || *lq == '\0') ? def_lquote\
      : xstrdup (lq);
     536         rquote = (rq == nil || *rq == '\0') ? def_rquote\
      : xstrdup (rq);
     537
     538         len_lquote = strlen(rquote);
     539         len_rquote = strlen(lquote);
     540     }
     541
     542     void
</pre>
   <p class="noindent">Let us step past the two lines that set <code>len_lquote</code> and
<code>len_rquote</code>, and then examine the values of those variables.

<pre class="smallexample">     (gdb) <b>n</b>
     539         len_rquote = strlen(lquote);
     (gdb) <b>n</b>
     540     }
     (gdb) <b>p len_lquote</b>
     $3 = 9
     (gdb) <b>p len_rquote</b>
     $4 = 7
</pre>
   <p class="noindent">That certainly looks wrong, assuming <code>len_lquote</code> and
<code>len_rquote</code> are meant to be the lengths of <code>lquote</code> and
<code>rquote</code> respectively.  We can set them to better values using
the <code>p</code> command, since it can print the value of
any expression&mdash;and that expression can include subroutine calls and
assignments.

<pre class="smallexample">     (gdb) <b>p len_lquote=strlen(lquote)</b>
     $5 = 7
     (gdb) <b>p len_rquote=strlen(rquote)</b>
     $6 = 9
</pre>
   <p class="noindent">Is that enough to fix the problem of using the new quotes with the
<code>m4</code> built-in <code>defn</code>?  We can allow <code>m4</code> to continue
executing with the <code>c</code> (<code>continue</code>) command, and then try the
example that caused trouble initially:

<pre class="smallexample">     (gdb) <b>c</b>
     Continuing.
     
     <b>define(baz,defn(&lt;QUOTE&gt;foo&lt;UNQUOTE&gt;))</b>
     
     baz
     0000
</pre>
   <p class="noindent">Success!  The new quotes now work just as well as the default ones.  The
problem seems to have been just the two typos defining the wrong
lengths.  We allow <code>m4</code> exit by giving it an EOF as input:

<pre class="smallexample">     <b>Ctrl-d</b>
     Program exited normally.
</pre>
   <p class="noindent">The message &lsquo;<samp><span class="samp">Program exited normally.</span></samp>&rsquo; is from <span class="sc">gdb</span>; it
indicates <code>m4</code> has finished executing.  We can end our <span class="sc">gdb</span>
session with the <span class="sc">gdb</span> <code>quit</code> command.

<pre class="smallexample">     (gdb) <b>quit</b>
</pre>
   </body></html>

