<html lang="en">
<head>
<title>Break Commands - 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="up" href="Breakpoints.html#Breakpoints" title="Breakpoints">
<link rel="prev" href="Conditions.html#Conditions" title="Conditions">
<link rel="next" href="Dynamic-Printf.html#Dynamic-Printf" title="Dynamic Printf">
<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="Break-Commands"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Dynamic-Printf.html#Dynamic-Printf">Dynamic Printf</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Conditions.html#Conditions">Conditions</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Breakpoints.html#Breakpoints">Breakpoints</a>
<hr>
</div>

<h4 class="subsection">5.1.7 Breakpoint Command Lists</h4>

<p><a name="index-breakpoint-commands-326"></a>You can give any breakpoint (or watchpoint or catchpoint) a series of
commands to execute when your program stops due to that breakpoint.  For
example, you might want to print the values of certain expressions, or
enable other breakpoints.

     
<a name="index-commands-327"></a>
<a name="index-end_0040r_007b-_0028breakpoint-commands_0029_007d-328"></a>
<dl><dt><code>commands </code><span class="roman">[</span><var>list</var><code>...</code><span class="roman">]</span><dt><code>... </code><var>command-list</var><code> ...</code><dt><code>end</code><dd>Specify a list of commands for the given breakpoints.  The commands
themselves appear on the following lines.  Type a line containing just
<code>end</code> to terminate the commands.

     <p>To remove all commands from a breakpoint, type <code>commands</code> and
follow it immediately with <code>end</code>; that is, give no commands.

     <p>With no argument, <code>commands</code> refers to the last breakpoint,
watchpoint, or catchpoint set (not to the breakpoint most recently
encountered).  If the most recent breakpoints were set with a single
command, then the <code>commands</code> will apply to all the breakpoints
set by that command.  This applies to breakpoints set by
<code>rbreak</code>, and also applies when a single <code>break</code> command
creates multiple breakpoints (see <a href="Ambiguous-Expressions.html#Ambiguous-Expressions">Ambiguous Expressions</a>). 
</dl>

   <p>Pressing &lt;RET&gt; as a means of repeating the last <span class="sc">gdb</span> command is
disabled within a <var>command-list</var>.

   <p>You can use breakpoint commands to start your program up again.  Simply
use the <code>continue</code> command, or <code>step</code>, or any other command
that resumes execution.

   <p>Any other commands in the command list, after a command that resumes
execution, are ignored.  This is because any time you resume execution
(even with a simple <code>next</code> or <code>step</code>), you may encounter
another breakpoint&mdash;which could have its own command list, leading to
ambiguities about which list to execute.

   <p><a name="index-silent-329"></a>If the first command you specify in a command list is <code>silent</code>, the
usual message about stopping at a breakpoint is not printed.  This may
be desirable for breakpoints that are to print a specific message and
then continue.  If none of the remaining commands print anything, you
see no sign that the breakpoint was reached.  <code>silent</code> is
meaningful only at the beginning of a breakpoint command list.

   <p>The commands <code>echo</code>, <code>output</code>, and <code>printf</code> allow you to
print precisely controlled output, and are often useful in silent
breakpoints.  See <a href="Output.html#Output">Commands for Controlled Output</a>.

   <p>For example, here is how you could use breakpoint commands to print the
value of <code>x</code> at entry to <code>foo</code> whenever <code>x</code> is positive.

<pre class="smallexample">     break foo if x&gt;0
     commands
     silent
     printf "x is %d\n",x
     cont
     end
</pre>
   <p>One application for breakpoint commands is to compensate for one bug so
you can test for another.  Put a breakpoint just after the erroneous line
of code, give it a condition to detect the case in which something
erroneous has been done, and give it commands to assign correct values
to any variables that need them.  End with the <code>continue</code> command
so that your program does not stop, and start with the <code>silent</code>
command so that no output is produced.  Here is an example:

<pre class="smallexample">     break 403
     commands
     silent
     set x = y + 4
     cont
     end
</pre>
   </body></html>

