5830 lines
		
	
	
	
		
			192 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			5830 lines
		
	
	
	
		
			192 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/MI</TITLE> | ||
|  | 
 | ||
|  | <META NAME="description" CONTENT="Debugging with GDB: GDB/MI"> | ||
|  | <META NAME="keywords" CONTENT="Debugging with GDB: GDB/MI"> | ||
|  | <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="SEC242"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_24.html#SEC241"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC243"> > </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_26.html#SEC646"> >> </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> 24. The GDB/MI Interface </H1> | ||
|  | <!--docid::SEC242::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC243"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC244"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</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> Function and Purpose </H2> | ||
|  | <!--docid::SEC243::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1258"></A> | ||
|  | GDB/MI is a line based machine oriented text interface to | ||
|  | GDB and is activated by specifying using the | ||
|  | <SAMP>`--interpreter'</SAMP> command line option (see section <A HREF="gdb_3.html#SEC9">2.1.2 Choosing Modes</A>).  It | ||
|  | is specifically intended to support the development of systems which | ||
|  | use the debugger as just one small component of a larger system. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | This chapter is a specification of the GDB/MI interface.  It is written | ||
|  | in the form of a reference manual. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Note that GDB/MI is still under construction, so some of the | ||
|  | features described below are incomplete and subject to change | ||
|  | (see section <A HREF="gdb_25.html#SEC249">GDB/MI Development and Front Ends</A>).   | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC244"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC243"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC245"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb.html#SEC_Top"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</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> Notation and Terminology </H2> | ||
|  | <!--docid::SEC244::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1259"></A> | ||
|  | This chapter uses the following notation: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | <CODE>|</CODE> separates two alternatives. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <CODE>[ <VAR>something</VAR> ]</CODE> indicates that <VAR>something</VAR> is optional: | ||
|  | it may or may not be given. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <CODE>( <VAR>group</VAR> )*</CODE> means that <VAR>group</VAR> inside the parentheses | ||
|  | may repeat zero or more times. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <CODE>( <VAR>group</VAR> )+</CODE> means that <VAR>group</VAR> inside the parentheses | ||
|  | may repeat one or more times. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <CODE>"<VAR>string</VAR>"</CODE> means a literal <VAR>string</VAR>. | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>  | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC245">24.1 GDB/MI Command Syntax</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC248">24.2 GDB/MI Compatibility with CLI</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC249">24.3 GDB/MI Development and Front Ends</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC250">24.4 GDB/MI Output Records</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC254">24.5 Simple Examples of GDB/MI Interaction</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC259">24.6 GDB/MI Command Description Format</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC267">24.7 GDB/MI Breakpoint Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC305">24.8 GDB/MI Program Context</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC330">24.9 GDB/MI Thread Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC347">24.10 GDB/MI Program Execution</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC388">24.11 GDB/MI Stack Manipulation Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC413">24.12 GDB/MI Variable Objects</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC449">24.13 GDB/MI Data Manipulation</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC475">24.14 GDB/MI Tracepoint Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC476">24.15 GDB/MI Symbol Query Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC521">24.16 GDB/MI File Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC554">24.17 GDB/MI Target Manipulation Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC595">24.18 GDB/MI File Transfer Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC608">24.19 Miscellaneous GDB/MI Commands</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | </TABLE></BLOCKQUOTE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Command Syntax"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC245"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC244"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC246"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> >> </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> 24.1 GDB/MI Command Syntax </H2> | ||
|  | <!--docid::SEC245::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>  | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC246">24.1.1 GDB/MI Input Syntax</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC247">24.1.2 GDB/MI Output Syntax</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | </TABLE></BLOCKQUOTE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Input Syntax"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC246"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC245"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC247"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC245"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> >> </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> | ||
|  | <H3> 24.1.1 GDB/MI Input Syntax </H3> | ||
|  | <!--docid::SEC246::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1260"></A> | ||
|  | <A NAME="IDX1261"></A> | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE><VAR>command</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>cli-command</VAR> | <VAR>mi-command</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>cli-command</VAR> ==></CODE> | ||
|  | <DD><CODE>[ <VAR>token</VAR> ] <VAR>cli-command</VAR> <VAR>nl</VAR></CODE>, where | ||
|  | <VAR>cli-command</VAR> is any existing GDB CLI command. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>mi-command</VAR> ==></CODE> | ||
|  | <DD><CODE>[ <VAR>token</VAR> ] "-" <VAR>operation</VAR> ( " " <VAR>option</VAR> )* | ||
|  | <CODE>[</CODE> " --" <CODE>]</CODE> ( " " <VAR>parameter</VAR> )* <VAR>nl</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>token</VAR> ==></CODE> | ||
|  | <DD>"any sequence of digits" | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>option</VAR> ==></CODE> | ||
|  | <DD><CODE>"-" <VAR>parameter</VAR> [ " " <VAR>parameter</VAR> ]</CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>parameter</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>non-blank-sequence</VAR> | <VAR>c-string</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>operation</VAR> ==></CODE> | ||
|  | <DD><EM>any of the operations described in this chapter</EM> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>non-blank-sequence</VAR> ==></CODE> | ||
|  | <DD><EM>anything, provided it doesn't contain special characters such as | ||
|  | "-", <VAR>nl</VAR>, """ and of course " "</EM> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>c-string</VAR> ==></CODE> | ||
|  | <DD><CODE>""" <VAR>seven-bit-iso-c-string-content</VAR> """</CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>nl</VAR> ==></CODE> | ||
|  | <DD><CODE>CR | CR-LF</CODE> | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | Notes: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | The CLI commands are still handled by the MI interpreter; their | ||
|  | output is described below. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | The <CODE><VAR>token</VAR></CODE>, when present, is passed back when the command | ||
|  | finishes. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | Some MI commands accept optional arguments as part of the parameter | ||
|  | list.  Each option is identified by a leading <SAMP>`-'</SAMP> (dash) and may be | ||
|  | followed by an optional argument parameter.  Options occur first in the | ||
|  | parameter list and can be delimited from normal parameters using | ||
|  | <SAMP>`--'</SAMP> (this is useful when some parameters begin with a dash). | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | Pragmatics: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | We want easy access to the existing CLI syntax (for debugging). | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | We want it to be easy to spot a MI operation. | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Output Syntax"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC247"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC246"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC245"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> >> </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> | ||
|  | <H3> 24.1.2 GDB/MI Output Syntax </H3> | ||
|  | <!--docid::SEC247::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1262"></A> | ||
|  | <A NAME="IDX1263"></A> | ||
|  | The output from GDB/MI consists of zero or more out-of-band records | ||
|  | followed, optionally, by a single result record.  This result record | ||
|  | is for the most recent command.  The sequence of output records is | ||
|  | terminated by <SAMP>`(gdb)'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | If an input command was prefixed with a <CODE><VAR>token</VAR></CODE> then the | ||
|  | corresponding output for that command will also be prefixed by that same | ||
|  | <VAR>token</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE><VAR>output</VAR> ==></CODE> | ||
|  | <DD><CODE>( <VAR>out-of-band-record</VAR> )* [ <VAR>result-record</VAR> ] "(gdb)" <VAR>nl</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>result-record</VAR> ==></CODE> | ||
|  | <DD><CODE> [ <VAR>token</VAR> ] "^" <VAR>result-class</VAR> ( "," <VAR>result</VAR> )* <VAR>nl</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>out-of-band-record</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>async-record</VAR> | <VAR>stream-record</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>async-record</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>exec-async-output</VAR> | <VAR>status-async-output</VAR> | <VAR>notify-async-output</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>exec-async-output</VAR> ==></CODE> | ||
|  | <DD><CODE>[ <VAR>token</VAR> ] "*" <VAR>async-output</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>status-async-output</VAR> ==></CODE> | ||
|  | <DD><CODE>[ <VAR>token</VAR> ] "+" <VAR>async-output</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>notify-async-output</VAR> ==></CODE> | ||
|  | <DD><CODE>[ <VAR>token</VAR> ] "=" <VAR>async-output</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>async-output</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>async-class</VAR> ( "," <VAR>result</VAR> )* <VAR>nl</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>result-class</VAR> ==></CODE> | ||
|  | <DD><CODE>"done" | "running" | "connected" | "error" | "exit"</CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>async-class</VAR> ==></CODE> | ||
|  | <DD><CODE>"stopped" | <VAR>others</VAR></CODE> (where <VAR>others</VAR> will be added | ||
|  | depending on the needs--this is still in development). | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>result</VAR> ==></CODE> | ||
|  | <DD><CODE> <VAR>variable</VAR> "=" <VAR>value</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>variable</VAR> ==></CODE> | ||
|  | <DD><CODE> <VAR>string</VAR> </CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>value</VAR> ==></CODE> | ||
|  | <DD><CODE> <VAR>const</VAR> | <VAR>tuple</VAR> | <VAR>list</VAR> </CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>const</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>c-string</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>tuple</VAR> ==></CODE> | ||
|  | <DD><CODE> "{}" | "{" <VAR>result</VAR> ( "," <VAR>result</VAR> )* "}" </CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>list</VAR> ==></CODE> | ||
|  | <DD><CODE> "[]" | "[" <VAR>value</VAR> ( "," <VAR>value</VAR> )* "]" | "[" | ||
|  | <VAR>result</VAR> ( "," <VAR>result</VAR> )* "]" </CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>stream-record</VAR> ==></CODE> | ||
|  | <DD><CODE><VAR>console-stream-output</VAR> | <VAR>target-stream-output</VAR> | <VAR>log-stream-output</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>console-stream-output</VAR> ==></CODE> | ||
|  | <DD><CODE>"~" <VAR>c-string</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>target-stream-output</VAR> ==></CODE> | ||
|  | <DD><CODE>"@" <VAR>c-string</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>log-stream-output</VAR> ==></CODE> | ||
|  | <DD><CODE>"&" <VAR>c-string</VAR></CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>nl</VAR> ==></CODE> | ||
|  | <DD><CODE>CR | CR-LF</CODE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE><VAR>token</VAR> ==></CODE> | ||
|  | <DD><EM>any sequence of digits</EM>. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | Notes: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | All output sequences end in a single line containing a period. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | The <CODE><VAR>token</VAR></CODE> is from the corresponding request.  If an execution | ||
|  | command is interrupted by the <SAMP>`-exec-interrupt'</SAMP> command, the | ||
|  | <VAR>token</VAR> associated with the <SAMP>`*stopped'</SAMP> message is the one of the | ||
|  | original execution command, not the one of the interrupt command. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1264"></A> | ||
|  | <VAR>status-async-output</VAR> contains on-going status information about the | ||
|  | progress of a slow operation.  It can be discarded.  All status output is | ||
|  | prefixed by <SAMP>`+'</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1265"></A> | ||
|  | <VAR>exec-async-output</VAR> contains asynchronous state change on the target | ||
|  | (stopped, started, disappeared).  All async output is prefixed by | ||
|  | <SAMP>`*'</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1266"></A> | ||
|  | <VAR>notify-async-output</VAR> contains supplementary information that the | ||
|  | client should handle (e.g., a new breakpoint information).  All notify | ||
|  | output is prefixed by <SAMP>`='</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1267"></A> | ||
|  | <VAR>console-stream-output</VAR> is output that should be displayed as is in the | ||
|  | console.  It is the textual response to a CLI command.  All the console | ||
|  | output is prefixed by <SAMP>`~'</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1268"></A> | ||
|  | <VAR>target-stream-output</VAR> is the output produced by the target program. | ||
|  | All the target output is prefixed by <SAMP>`@'</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1269"></A> | ||
|  | <VAR>log-stream-output</VAR> is output text coming from GDB's internals, for | ||
|  | instance messages that should be displayed as part of an error log.  All | ||
|  | the log output is prefixed by <SAMP>`&'</SAMP>. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <A NAME="IDX1270"></A> | ||
|  | New GDB/MI commands should only output <VAR>lists</VAR> containing | ||
|  | <VAR>values</VAR>. | ||
|  | <P> | ||
|  | 
 | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | See section <A HREF="gdb_25.html#SEC252">GDB/MI Stream Records</A>, for more | ||
|  | details about the various output records. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Compatibility with CLI"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC248"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC247"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC249"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC249"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.2 GDB/MI Compatibility with CLI </H2> | ||
|  | <!--docid::SEC248::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1271"></A> | ||
|  | <A NAME="IDX1272"></A> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | For the developers convenience CLI commands can be entered directly, | ||
|  | but there may be some unexpected behaviour.  For example, commands | ||
|  | that query the user will behave as if the user replied yes, breakpoint | ||
|  | command lists are not executed and some CLI commands, such as | ||
|  | <CODE>if</CODE>, <CODE>when</CODE> and <CODE>define</CODE>, prompt for further input with | ||
|  | <SAMP>`>'</SAMP>, which is not valid MI output. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | This feature may be removed at some stage in the future and it is | ||
|  | recommended that front ends use the <CODE>-interpreter-exec</CODE> command | ||
|  | (see  <A HREF="gdb_25.html#-interpreter-exec">-interpreter-exec</A>). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Development and Front Ends"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC249"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.3 GDB/MI Development and Front Ends </H2> | ||
|  | <!--docid::SEC249::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The application which takes the MI output and presents the state of the | ||
|  | program being debugged to the user is called a <EM>front end</EM>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Although GDB/MI is still incomplete, it is currently being used | ||
|  | by a variety of front ends to GDB.  This makes it difficult | ||
|  | to introduce new functionality without breaking existing usage.  This | ||
|  | section tries to minimize the problems by describing how the protocol | ||
|  | might change. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Some changes in MI need not break a carefully designed front end, and | ||
|  | for these the MI version will remain unchanged.  The following is a | ||
|  | list of changes that may occur within one level, so front ends should | ||
|  | parse MI output in a way that can handle them: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | New MI commands may be added. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | New fields may be added to the output of any MI command. | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | The range of values for fields with specified values, e.g., | ||
|  | <CODE>in_scope</CODE> (see  <A HREF="gdb_25.html#-var-update">-var-update</A>) may be extended. | ||
|  | <P> | ||
|  | 
 | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | If the changes are likely to break front ends, the MI version level | ||
|  | will be increased by one.  This will allow the front end to parse the | ||
|  | output according to the MI version.  Apart from mi0, new versions of | ||
|  | GDB will not support old versions of MI and it will be the | ||
|  | responsibility of the front end to work with the new one. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The best way to avoid unexpected changes in MI that might break your front | ||
|  | end is to make your project known to GDB developers and | ||
|  | follow development on <A HREF="mailto:gdb@sourceware.org">gdb@sourceware.org</A> and | ||
|  | <A HREF="mailto:gdb-patches@sourceware.org">gdb-patches@sourceware.org</A>.  There is also the mailing list | ||
|  | <A HREF="mailto:dmi-discuss@lists.freestandards.org">dmi-discuss@lists.freestandards.org</A>, hosted by the Free Standards | ||
|  | Group, which has the aim of creating a more general MI protocol | ||
|  | called Debugger Machine Interface (DMI) that will become a standard | ||
|  | for all debuggers, not just GDB. | ||
|  | <A NAME="IDX1273"></A> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Output Records"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC250"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC249"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC251"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> >> </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> 24.4 GDB/MI Output Records </H2> | ||
|  | <!--docid::SEC250::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>  | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC251">24.4.1 GDB/MI Result Records</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC252">24.4.2 GDB/MI Stream Records</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="gdb_25.html#SEC253">24.4.3 GDB/MI Out-of-band Records</A></TD><TD>  </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> | ||
|  | </TABLE></BLOCKQUOTE> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Result Records"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC251"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC252"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> >> </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> | ||
|  | <H3> 24.4.1 GDB/MI Result Records </H3> | ||
|  | <!--docid::SEC251::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1274"></A> | ||
|  | <A NAME="IDX1275"></A> | ||
|  | In addition to a number of out-of-band notifications, the response to a | ||
|  | GDB/MI command includes one of the following result indications: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <A NAME="IDX1276"></A> | ||
|  | <DT><CODE>"^done" [ "," <VAR>results</VAR> ]</CODE> | ||
|  | <DD>The synchronous operation was successful, <CODE><VAR>results</VAR></CODE> are the return | ||
|  | values. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"^running"</CODE> | ||
|  | <DD><A NAME="IDX1277"></A> | ||
|  | The asynchronous operation was successfully started.  The target is | ||
|  | running. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"^connected"</CODE> | ||
|  | <DD><A NAME="IDX1278"></A> | ||
|  | GDB has connected to a remote target. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"^error" "," <VAR>c-string</VAR></CODE> | ||
|  | <DD><A NAME="IDX1279"></A> | ||
|  | The operation failed.  The <CODE><VAR>c-string</VAR></CODE> contains the corresponding | ||
|  | error message. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"^exit"</CODE> | ||
|  | <DD><A NAME="IDX1280"></A> | ||
|  | GDB has terminated. | ||
|  | <P> | ||
|  | 
 | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Stream Records"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC252"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC251"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC253"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC253"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> >> </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> | ||
|  | <H3> 24.4.2 GDB/MI Stream Records </H3> | ||
|  | <!--docid::SEC252::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1281"></A> | ||
|  | <A NAME="IDX1282"></A> | ||
|  | GDB internally maintains a number of output streams: the console, the | ||
|  | target, and the log.  The output intended for each of these streams is | ||
|  | funneled through the GDB/MI interface using <EM>stream records</EM>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Each stream record begins with a unique <EM>prefix character</EM> which | ||
|  | identifies its stream (see section <A HREF="gdb_25.html#SEC247">GDB/MI Output Syntax</A>).  In addition to the prefix, each stream record contains a | ||
|  | <CODE><VAR>string-output</VAR></CODE>.  This is either raw text (with an implicit new | ||
|  | line) or a quoted C string (which does not contain an implicit newline). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE>"~" <VAR>string-output</VAR></CODE> | ||
|  | <DD>The console output stream contains text that should be displayed in the | ||
|  | CLI console window.  It contains the textual responses to CLI commands. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"@" <VAR>string-output</VAR></CODE> | ||
|  | <DD>The target output stream contains any textual output from the running | ||
|  | target.  This is only present when GDB's event loop is truly | ||
|  | asynchronous, which is currently only the case for remote targets. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"&" <VAR>string-output</VAR></CODE> | ||
|  | <DD>The log stream contains debugging messages being produced by GDB's | ||
|  | internals. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Out-of-band Records"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC253"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC252"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC250"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> >> </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> | ||
|  | <H3> 24.4.3 GDB/MI Out-of-band Records </H3> | ||
|  | <!--docid::SEC253::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1283"></A> | ||
|  | <A NAME="IDX1284"></A> | ||
|  | <EM>Out-of-band</EM> records are used to notify the GDB/MI client of | ||
|  | additional changes that have occurred.  Those changes can either be a | ||
|  | consequence of GDB/MI (e.g., a breakpoint modified) or a result of | ||
|  | target activity (e.g., target stopped). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The following is a preliminary list of possible out-of-band records. | ||
|  | In particular, the <VAR>exec-async-output</VAR> records. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE>*stopped,reason="<VAR>reason</VAR>"</CODE> | ||
|  | <DD></DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <VAR>reason</VAR> can be one of the following: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE>breakpoint-hit</CODE> | ||
|  | <DD>A breakpoint was reached. | ||
|  | <DT><CODE>watchpoint-trigger</CODE> | ||
|  | <DD>A watchpoint was triggered. | ||
|  | <DT><CODE>read-watchpoint-trigger</CODE> | ||
|  | <DD>A read watchpoint was triggered. | ||
|  | <DT><CODE>access-watchpoint-trigger</CODE> | ||
|  | <DD>An access watchpoint was triggered. | ||
|  | <DT><CODE>function-finished</CODE> | ||
|  | <DD>An -exec-finish or similar CLI command was accomplished. | ||
|  | <DT><CODE>location-reached</CODE> | ||
|  | <DD>An -exec-until or similar CLI command was accomplished. | ||
|  | <DT><CODE>watchpoint-scope</CODE> | ||
|  | <DD>A watchpoint has gone out of scope. | ||
|  | <DT><CODE>end-stepping-range</CODE> | ||
|  | <DD>An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or  | ||
|  | similar CLI command was accomplished. | ||
|  | <DT><CODE>exited-signalled</CODE> | ||
|  | <DD>The inferior exited because of a signal. | ||
|  | <DT><CODE>exited</CODE> | ||
|  | <DD>The inferior exited. | ||
|  | <DT><CODE>exited-normally</CODE> | ||
|  | <DD>The inferior exited normally. | ||
|  | <DT><CODE>signal-received</CODE> | ||
|  | <DD>A signal was received by the inferior. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Simple Examples"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC254"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC253"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC259"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC259"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.5 Simple Examples of GDB/MI Interaction </H2> | ||
|  | <!--docid::SEC254::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | This subsection presents several simple examples of interaction using | ||
|  | the GDB/MI interface.  In these examples, <SAMP>`->'</SAMP> means that the | ||
|  | following line is passed to GDB/MI as input, while <SAMP>`<-'</SAMP> means | ||
|  | the output received from GDB/MI. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Note the line breaks shown in the examples are here only for | ||
|  | readability, they don't appear in the real output. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC255"></A> | ||
|  | <H3> Setting a Breakpoint </H3> | ||
|  | <!--docid::SEC255::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Setting a breakpoint generates synchronous output which contains detailed | ||
|  | information of the breakpoint. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-> -break-insert main | ||
|  | <- ^done,bkpt={number="1",type="breakpoint",disp="keep", | ||
|  |     enabled="y",addr="0x08048564",func="main",file="myprog.c", | ||
|  |     fullname="/home/nickrob/myprog.c",line="68",times="0"} | ||
|  | <- (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC256"></A> | ||
|  | <H3> Program Execution </H3> | ||
|  | <!--docid::SEC256::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Program execution generates asynchronous records and MI gives the | ||
|  | reason that execution stopped. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-> -exec-run | ||
|  | <- ^running | ||
|  | <- (gdb) | ||
|  | <- *stopped,reason="breakpoint-hit",bkptno="1",thread-id="0", | ||
|  |    frame={addr="0x08048564",func="main", | ||
|  |    args=[{name="argc",value="1"},{name="argv",value="0xbfc4d4d4"}], | ||
|  |    file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"} | ||
|  | <- (gdb) | ||
|  | -> -exec-continue | ||
|  | <- ^running | ||
|  | <- (gdb) | ||
|  | <- *stopped,reason="exited-normally" | ||
|  | <- (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC257"></A> | ||
|  | <H3> Quitting GDB  </H3> | ||
|  | <!--docid::SEC257::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Quitting GDB just prints the result class <SAMP>`^exit'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-> (gdb) | ||
|  | <- -gdb-exit | ||
|  | <- ^exit | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC258"></A> | ||
|  | <H3> A Bad Command </H3> | ||
|  | <!--docid::SEC258::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Here's what happens if you pass a non-existent command: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-> -rubbish | ||
|  | <- ^error,msg="Undefined MI command: rubbish" | ||
|  | <- (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Command Description Format"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC259"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC254"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC267"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC267"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.6 GDB/MI Command Description Format </H2> | ||
|  | <!--docid::SEC259::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The remaining sections describe blocks of commands.  Each block of | ||
|  | commands is laid out in a fashion similar to this section. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC260"></A> | ||
|  | <H3> Motivation </H3> | ||
|  | <!--docid::SEC260::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The motivation for this collection of commands. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC261"></A> | ||
|  | <H3> Introduction </H3> | ||
|  | <!--docid::SEC261::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | A brief introduction to this collection of commands as a whole. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC262"></A> | ||
|  | <H3> Commands  </H3> | ||
|  | <!--docid::SEC262::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | For each command in the block, the following is described: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC263"></A> | ||
|  | <H4> Synopsis </H4> | ||
|  | <!--docid::SEC263::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -command <VAR>args</VAR><small>...</small> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC264"></A> | ||
|  | <H4> Result </H4> | ||
|  | <!--docid::SEC264::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC265"></A> | ||
|  | <H4> GDB Command </H4> | ||
|  | <!--docid::SEC265::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB CLI command(s), if any. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC266"></A> | ||
|  | <H4> Example </H4> | ||
|  | <!--docid::SEC266::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Example(s) formatted for readability.  Some of the described commands  have | ||
|  | not been implemented yet and these are labeled N.A. (not available). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Breakpoint Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC267"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC259"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC305"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC305"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.7 GDB/MI Breakpoint Commands </H2> | ||
|  | <!--docid::SEC267::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1285"></A> | ||
|  | <A NAME="IDX1286"></A> | ||
|  | This section documents GDB/MI commands for manipulating | ||
|  | breakpoints. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC268"></A> | ||
|  | <H3> The <CODE>-break-after</CODE> Command </H3> | ||
|  | <!--docid::SEC268::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC269"></A> | ||
|  | <H4> Synopsis  </H4> | ||
|  | <!--docid::SEC269::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-after <VAR>number</VAR> <VAR>count</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | The breakpoint number <VAR>number</VAR> is not in effect until it has been | ||
|  | hit <VAR>count</VAR> times.  To see how this is reflected in the output of | ||
|  | the <SAMP>`-break-list'</SAMP> command, see the description of the | ||
|  | <SAMP>`-break-list'</SAMP> command below. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC270"></A> | ||
|  | <H4> GDB Command  </H4> | ||
|  | <!--docid::SEC270::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`ignore'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC271"></A> | ||
|  | <H4> Example  </H4> | ||
|  | <!--docid::SEC271::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-insert main | ||
|  | ^done,bkpt={number="1",addr="0x000100d0",file="hello.c", | ||
|  | fullname="/home/foo/hello.c",line="5",times="0"} | ||
|  | (gdb) | ||
|  | -break-after 1 3 | ||
|  | ~ | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="1",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", | ||
|  | line="5",times="0",ignore="3"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC272"></A> | ||
|  | <H3> The <CODE>-break-condition</CODE> Command </H3> | ||
|  | <!--docid::SEC272::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC273"></A> | ||
|  | <H4> Synopsis   </H4> | ||
|  | <!--docid::SEC273::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-condition <VAR>number</VAR> <VAR>expr</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Breakpoint <VAR>number</VAR> will stop the program only if the condition in | ||
|  | <VAR>expr</VAR> is true.  The condition becomes part of the | ||
|  | <SAMP>`-break-list'</SAMP> output (see the description of the <SAMP>`-break-list'</SAMP> | ||
|  | command below). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC274"></A> | ||
|  | <H4> GDB Command   </H4> | ||
|  | <!--docid::SEC274::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`condition'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC275"></A> | ||
|  | <H4> Example   </H4> | ||
|  | <!--docid::SEC275::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-condition 1 1 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="1",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", | ||
|  | line="5",cond="1",times="0",ignore="3"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC276"></A> | ||
|  | <H3> The <CODE>-break-delete</CODE> Command </H3> | ||
|  | <!--docid::SEC276::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC277"></A> | ||
|  | <H4> Synopsis    </H4> | ||
|  | <!--docid::SEC277::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-delete ( <VAR>breakpoint</VAR> )+ | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Delete the breakpoint(s) whose number(s) are specified in the argument | ||
|  | list.  This is obviously reflected in the breakpoint list. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC278"></A> | ||
|  | <H4> GDB Command    </H4> | ||
|  | <!--docid::SEC278::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`delete'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC279"></A> | ||
|  | <H4> Example    </H4> | ||
|  | <!--docid::SEC279::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-delete 1 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="0",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC280"></A> | ||
|  | <H3> The <CODE>-break-disable</CODE> Command </H3> | ||
|  | <!--docid::SEC280::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC281"></A> | ||
|  | <H4> Synopsis     </H4> | ||
|  | <!--docid::SEC281::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-disable ( <VAR>breakpoint</VAR> )+ | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Disable the named <VAR>breakpoint</VAR>(s).  The field <SAMP>`enabled'</SAMP> in the | ||
|  | break list is now set to <SAMP>`n'</SAMP> for the named <VAR>breakpoint</VAR>(s). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC282"></A> | ||
|  | <H4> GDB Command     </H4> | ||
|  | <!--docid::SEC282::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`disable'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC283"></A> | ||
|  | <H4> Example     </H4> | ||
|  | <!--docid::SEC283::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-disable 2 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="1",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="2",type="breakpoint",disp="keep",enabled="n", | ||
|  | addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", | ||
|  | line="5",times="0"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC284"></A> | ||
|  | <H3> The <CODE>-break-enable</CODE> Command </H3> | ||
|  | <!--docid::SEC284::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC285"></A> | ||
|  | <H4> Synopsis      </H4> | ||
|  | <!--docid::SEC285::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-enable ( <VAR>breakpoint</VAR> )+ | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Enable (previously disabled) <VAR>breakpoint</VAR>(s). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC286"></A> | ||
|  | <H4> GDB Command      </H4> | ||
|  | <!--docid::SEC286::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`enable'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC287"></A> | ||
|  | <H4> Example      </H4> | ||
|  | <!--docid::SEC287::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-enable 2 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="1",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="2",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c", | ||
|  | line="5",times="0"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC288"></A> | ||
|  | <H3> The <CODE>-break-info</CODE> Command </H3> | ||
|  | <!--docid::SEC288::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC289"></A> | ||
|  | <H4> Synopsis       </H4> | ||
|  | <!--docid::SEC289::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-info <VAR>breakpoint</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Get information about a single breakpoint. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC290"></A> | ||
|  | <H4> GDB Command       </H4> | ||
|  | <!--docid::SEC290::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info break <VAR>breakpoint</VAR>'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC291"></A> | ||
|  | <H4> Example       </H4> | ||
|  | <!--docid::SEC291::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC292"></A> | ||
|  | <H3> The <CODE>-break-insert</CODE> Command </H3> | ||
|  | <!--docid::SEC292::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC293"></A> | ||
|  | <H4> Synopsis        </H4> | ||
|  | <!--docid::SEC293::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-insert [ -t ] [ -h ] [ -f ] | ||
|  |     [ -c <VAR>condition</VAR> ] [ -i <VAR>ignore-count</VAR> ] | ||
|  |     [ -p <VAR>thread</VAR> ] [ <VAR>location</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | If specified, <VAR>location</VAR>, can be one of: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI>function | ||
|  | <LI>filename:linenum | ||
|  | <LI>filename:function | ||
|  | <LI>*address | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | The possible optional parameters of this command are: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`-t'</SAMP> | ||
|  | <DD>Insert a temporary breakpoint. | ||
|  | <DT><SAMP>`-h'</SAMP> | ||
|  | <DD>Insert a hardware breakpoint. | ||
|  | <DT><SAMP>`-c <VAR>condition</VAR>'</SAMP> | ||
|  | <DD>Make the breakpoint conditional on <VAR>condition</VAR>. | ||
|  | <DT><SAMP>`-i <VAR>ignore-count</VAR>'</SAMP> | ||
|  | <DD>Initialize the <VAR>ignore-count</VAR>. | ||
|  | <DT><SAMP>`-f'</SAMP> | ||
|  | <DD>If <VAR>location</VAR> cannot be parsed (for example if it | ||
|  | refers to unknown files or functions), create a pending | ||
|  | breakpoint. Without this flag, GDB will report | ||
|  | an error, and won't create a breakpoint, if <VAR>location</VAR> | ||
|  | cannot be parsed. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC294"></A> | ||
|  | <H4> Result  </H4> | ||
|  | <!--docid::SEC294::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The result is in the form: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>^done,bkpt={number="<VAR>number</VAR>",type="<VAR>type</VAR>",disp="del"|"keep", | ||
|  | enabled="y"|"n",addr="<VAR>hex</VAR>",func="<VAR>funcname</VAR>",file="<VAR>filename</VAR>", | ||
|  | fullname="<VAR>full_filename</VAR>",line="<VAR>lineno</VAR>",[thread="<VAR>threadno</VAR>,] | ||
|  | times="<VAR>times</VAR>"} | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | where <VAR>number</VAR> is the GDB number for this breakpoint, | ||
|  | <VAR>funcname</VAR> is the name of the function where the breakpoint was | ||
|  | inserted, <VAR>filename</VAR> is the name of the source file which contains | ||
|  | this function, <VAR>lineno</VAR> is the source line number within that file | ||
|  | and <VAR>times</VAR> the number of times that the breakpoint has been hit | ||
|  | (always 0 for -break-insert but may be greater for -break-info or -break-list | ||
|  | which use the same output). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Note: this format is open to change. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC295"></A> | ||
|  | <H4> GDB Command        </H4> | ||
|  | <!--docid::SEC295::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`break'</SAMP>, <SAMP>`tbreak'</SAMP>, | ||
|  | <SAMP>`hbreak'</SAMP>, <SAMP>`thbreak'</SAMP>, and <SAMP>`rbreak'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC296"></A> | ||
|  | <H4> Example        </H4> | ||
|  | <!--docid::SEC296::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-insert main | ||
|  | ^done,bkpt={number="1",addr="0x0001072c",file="recursive2.c", | ||
|  | fullname="/home/foo/recursive2.c,line="4",times="0"} | ||
|  | (gdb) | ||
|  | -break-insert -t foo | ||
|  | ^done,bkpt={number="2",addr="0x00010774",file="recursive2.c", | ||
|  | fullname="/home/foo/recursive2.c,line="11",times="0"} | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="2",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x0001072c", func="main",file="recursive2.c", | ||
|  | fullname="/home/foo/recursive2.c,"line="4",times="0"}, | ||
|  | bkpt={number="2",type="breakpoint",disp="del",enabled="y", | ||
|  | addr="0x00010774",func="foo",file="recursive2.c", | ||
|  | fullname="/home/foo/recursive2.c",line="11",times="0"}]} | ||
|  | (gdb) | ||
|  | -break-insert -r foo.* | ||
|  | ~int foo(int, int); | ||
|  | ^done,bkpt={number="3",addr="0x00010774",file="recursive2.c, | ||
|  | "fullname="/home/foo/recursive2.c",line="11",times="0"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC297"></A> | ||
|  | <H3> The <CODE>-break-list</CODE> Command </H3> | ||
|  | <!--docid::SEC297::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC298"></A> | ||
|  | <H4> Synopsis         </H4> | ||
|  | <!--docid::SEC298::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-list | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Displays the list of inserted breakpoints, showing the following fields: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`Number'</SAMP> | ||
|  | <DD>number of the breakpoint | ||
|  | <DT><SAMP>`Type'</SAMP> | ||
|  | <DD>type of the breakpoint: <SAMP>`breakpoint'</SAMP> or <SAMP>`watchpoint'</SAMP> | ||
|  | <DT><SAMP>`Disposition'</SAMP> | ||
|  | <DD>should the breakpoint be deleted or disabled when it is hit: <SAMP>`keep'</SAMP> | ||
|  | or <SAMP>`nokeep'</SAMP> | ||
|  | <DT><SAMP>`Enabled'</SAMP> | ||
|  | <DD>is the breakpoint enabled or no: <SAMP>`y'</SAMP> or <SAMP>`n'</SAMP> | ||
|  | <DT><SAMP>`Address'</SAMP> | ||
|  | <DD>memory location at which the breakpoint is set | ||
|  | <DT><SAMP>`What'</SAMP> | ||
|  | <DD>logical location of the breakpoint, expressed by function name, file | ||
|  | name, line number | ||
|  | <DT><SAMP>`Times'</SAMP> | ||
|  | <DD>number of times the breakpoint has been hit | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | If there are no breakpoints or watchpoints, the <CODE>BreakpointTable</CODE> | ||
|  | <CODE>body</CODE> field is an empty list. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC299"></A> | ||
|  | <H4> GDB Command         </H4> | ||
|  | <!--docid::SEC299::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info break'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC300"></A> | ||
|  | <H4> Example         </H4> | ||
|  | <!--docid::SEC300::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="2",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x000100d0",func="main",file="hello.c",line="5",times="0"}, | ||
|  | bkpt={number="2",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c", | ||
|  | line="13",times="0"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Here's an example of the result when there are no breakpoints: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="0",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC301"></A> | ||
|  | <H3> The <CODE>-break-watch</CODE> Command </H3> | ||
|  | <!--docid::SEC301::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC302"></A> | ||
|  | <H4> Synopsis          </H4> | ||
|  | <!--docid::SEC302::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -break-watch [ -a | -r ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Create a watchpoint.  With the <SAMP>`-a'</SAMP> option it will create an | ||
|  | <EM>access</EM> watchpoint, i.e., a watchpoint that triggers either on a | ||
|  | read from or on a write to the memory location.  With the <SAMP>`-r'</SAMP> | ||
|  | option, the watchpoint created is a <EM>read</EM> watchpoint, i.e., it will | ||
|  | trigger only when the memory location is accessed for reading.  Without | ||
|  | either of the options, the watchpoint created is a regular watchpoint, | ||
|  | i.e., it will trigger when the memory location is accessed for writing. | ||
|  | See section <A HREF="gdb_6.html#SEC34">Setting Watchpoints</A>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Note that <SAMP>`-break-list'</SAMP> will report a single list of watchpoints and | ||
|  | breakpoints inserted. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC303"></A> | ||
|  | <H4> GDB Command          </H4> | ||
|  | <!--docid::SEC303::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`watch'</SAMP>, <SAMP>`awatch'</SAMP>, and | ||
|  | <SAMP>`rwatch'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC304"></A> | ||
|  | <H4> Example          </H4> | ||
|  | <!--docid::SEC304::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Setting a watchpoint on a variable in the <CODE>main</CODE> function: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-watch x | ||
|  | ^done,wpt={number="2",exp="x"} | ||
|  | (gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="watchpoint-trigger",wpt={number="2",exp="x"}, | ||
|  | value={old="-268439212",new="55"}, | ||
|  | frame={func="main",args=[],file="recursive2.c", | ||
|  | fullname="/home/foo/bar/recursive2.c",line="5"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Setting a watchpoint on a variable local to a function.  GDB will stop | ||
|  | the program execution twice: first for the variable changing value, then | ||
|  | for the watchpoint going out of scope. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-watch C | ||
|  | ^done,wpt={number="5",exp="C"} | ||
|  | (gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="watchpoint-trigger", | ||
|  | wpt={number="5",exp="C"},value={old="-276895068",new="3"}, | ||
|  | frame={func="callee4",args=[], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"} | ||
|  | (gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="watchpoint-scope",wpnum="5", | ||
|  | frame={func="callee3",args=[{name="strarg", | ||
|  | value="0x11940 \"A string argument.\""}], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Listing breakpoints and watchpoints, at different points in the program | ||
|  | execution.  Note that once the watchpoint goes out of scope, it is | ||
|  | deleted. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-watch C | ||
|  | ^done,wpt={number="2",exp="C"} | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="2",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x00010734",func="callee4", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"}, | ||
|  | bkpt={number="2",type="watchpoint",disp="keep", | ||
|  | enabled="y",addr="",what="C",times="0"}]} | ||
|  | (gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="watchpoint-trigger",wpt={number="2",exp="C"}, | ||
|  | value={old="-276895068",new="3"}, | ||
|  | frame={func="callee4",args=[], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"} | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="2",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x00010734",func="callee4", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"}, | ||
|  | bkpt={number="2",type="watchpoint",disp="keep", | ||
|  | enabled="y",addr="",what="C",times="-5"}]} | ||
|  | (gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | ^done,reason="watchpoint-scope",wpnum="2", | ||
|  | frame={func="callee3",args=[{name="strarg", | ||
|  | value="0x11940 \"A string argument.\""}], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"} | ||
|  | (gdb) | ||
|  | -break-list | ||
|  | ^done,BreakpointTable={nr_rows="1",nr_cols="6", | ||
|  | hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"}, | ||
|  | {width="14",alignment="-1",col_name="type",colhdr="Type"}, | ||
|  | {width="4",alignment="-1",col_name="disp",colhdr="Disp"}, | ||
|  | {width="3",alignment="-1",col_name="enabled",colhdr="Enb"}, | ||
|  | {width="10",alignment="-1",col_name="addr",colhdr="Address"}, | ||
|  | {width="40",alignment="2",col_name="what",colhdr="What"}], | ||
|  | body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x00010734",func="callee4", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8", | ||
|  | times="1"}]} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Program Context"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC305"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC267"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC330"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC330"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.8 GDB/MI Program Context </H2> | ||
|  | <!--docid::SEC305::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC306"></A> | ||
|  | <H3> The <CODE>-exec-arguments</CODE> Command </H3> | ||
|  | <!--docid::SEC306::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC307"></A> | ||
|  | <H4> Synopsis           </H4> | ||
|  | <!--docid::SEC307::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-arguments <VAR>args</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Set the inferior program arguments, to be used in the next | ||
|  | <SAMP>`-exec-run'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC308"></A> | ||
|  | <H4> GDB Command           </H4> | ||
|  | <!--docid::SEC308::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`set args'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC309"></A> | ||
|  | <H4> Example           </H4> | ||
|  | <!--docid::SEC309::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Don't have one around. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC310"></A> | ||
|  | <H3> The <CODE>-exec-show-arguments</CODE> Command </H3> | ||
|  | <!--docid::SEC310::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC311"></A> | ||
|  | <H4> Synopsis            </H4> | ||
|  | <!--docid::SEC311::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-show-arguments | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Print the arguments of the program. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC312"></A> | ||
|  | <H4> GDB Command            </H4> | ||
|  | <!--docid::SEC312::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`show args'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC313"></A> | ||
|  | <H4> Example            </H4> | ||
|  | <!--docid::SEC313::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC314"></A> | ||
|  | <H3> The <CODE>-environment-cd</CODE> Command </H3> | ||
|  | <!--docid::SEC314::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC315"></A> | ||
|  | <H4> Synopsis             </H4> | ||
|  | <!--docid::SEC315::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -environment-cd <VAR>pathdir</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Set GDB's working directory. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC316"></A> | ||
|  | <H4> GDB Command             </H4> | ||
|  | <!--docid::SEC316::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`cd'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC317"></A> | ||
|  | <H4> Example             </H4> | ||
|  | <!--docid::SEC317::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC318"></A> | ||
|  | <H3> The <CODE>-environment-directory</CODE> Command </H3> | ||
|  | <!--docid::SEC318::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC319"></A> | ||
|  | <H4> Synopsis              </H4> | ||
|  | <!--docid::SEC319::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -environment-directory [ -r ] [ <VAR>pathdir</VAR> ]+ | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Add directories <VAR>pathdir</VAR> to beginning of search path for source files. | ||
|  | If the <SAMP>`-r'</SAMP> option is used, the search path is reset to the default | ||
|  | search path.  If directories <VAR>pathdir</VAR> are supplied in addition to the | ||
|  | <SAMP>`-r'</SAMP> option, the search path is first reset and then addition | ||
|  | occurs as normal. | ||
|  | Multiple directories may be specified, separated by blanks.  Specifying | ||
|  | multiple directories in a single command | ||
|  | results in the directories added to the beginning of the | ||
|  | search path in the same order they were presented in the command. | ||
|  | If blanks are needed as | ||
|  | part of a directory name, double-quotes should be used around | ||
|  | the name.  In the command output, the path will show up separated | ||
|  | by the system directory-separator character.  The directory-separator | ||
|  | character must not be used | ||
|  | in any directory name. | ||
|  | If no directories are specified, the current search path is displayed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC320"></A> | ||
|  | <H4> GDB Command              </H4> | ||
|  | <!--docid::SEC320::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`dir'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC321"></A> | ||
|  | <H4> Example              </H4> | ||
|  | <!--docid::SEC321::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb | ||
|  | ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" | ||
|  | (gdb) | ||
|  | -environment-directory "" | ||
|  | ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd" | ||
|  | (gdb) | ||
|  | -environment-directory -r /home/jjohnstn/src/gdb /usr/src | ||
|  | ^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd" | ||
|  | (gdb) | ||
|  | -environment-directory -r | ||
|  | ^done,source-path="$cdir:$cwd" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC322"></A> | ||
|  | <H3> The <CODE>-environment-path</CODE> Command </H3> | ||
|  | <!--docid::SEC322::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC323"></A> | ||
|  | <H4> Synopsis               </H4> | ||
|  | <!--docid::SEC323::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -environment-path [ -r ] [ <VAR>pathdir</VAR> ]+ | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Add directories <VAR>pathdir</VAR> to beginning of search path for object files. | ||
|  | If the <SAMP>`-r'</SAMP> option is used, the search path is reset to the original | ||
|  | search path that existed at gdb start-up.  If directories <VAR>pathdir</VAR> are | ||
|  | supplied in addition to the | ||
|  | <SAMP>`-r'</SAMP> option, the search path is first reset and then addition | ||
|  | occurs as normal. | ||
|  | Multiple directories may be specified, separated by blanks.  Specifying | ||
|  | multiple directories in a single command | ||
|  | results in the directories added to the beginning of the | ||
|  | search path in the same order they were presented in the command. | ||
|  | If blanks are needed as | ||
|  | part of a directory name, double-quotes should be used around | ||
|  | the name.  In the command output, the path will show up separated | ||
|  | by the system directory-separator character.  The directory-separator | ||
|  | character must not be used | ||
|  | in any directory name. | ||
|  | If no directories are specified, the current path is displayed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC324"></A> | ||
|  | <H4> GDB Command               </H4> | ||
|  | <!--docid::SEC324::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`path'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC325"></A> | ||
|  | <H4> Example               </H4> | ||
|  | <!--docid::SEC325::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -environment-path | ||
|  | ^done,path="/usr/bin" | ||
|  | (gdb) | ||
|  | -environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin | ||
|  | ^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin" | ||
|  | (gdb) | ||
|  | -environment-path -r /usr/local/bin | ||
|  | ^done,path="/usr/local/bin:/usr/bin" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC326"></A> | ||
|  | <H3> The <CODE>-environment-pwd</CODE> Command </H3> | ||
|  | <!--docid::SEC326::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC327"></A> | ||
|  | <H4> Synopsis                </H4> | ||
|  | <!--docid::SEC327::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -environment-pwd | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show the current working directory. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC328"></A> | ||
|  | <H4> GDB Command                </H4> | ||
|  | <!--docid::SEC328::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`pwd'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC329"></A> | ||
|  | <H4> Example                </H4> | ||
|  | <!--docid::SEC329::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -environment-pwd | ||
|  | ^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Thread Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC330"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC305"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC347"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.9 GDB/MI Thread Commands </H2> | ||
|  | <!--docid::SEC330::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC331"></A> | ||
|  | <H3> The <CODE>-thread-info</CODE> Command </H3> | ||
|  | <!--docid::SEC331::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC332"></A> | ||
|  | <H4> Synopsis                 </H4> | ||
|  | <!--docid::SEC332::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -thread-info | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC333"></A> | ||
|  | <H4> GDB Command                 </H4> | ||
|  | <!--docid::SEC333::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | No equivalent. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC334"></A> | ||
|  | <H4> Example                 </H4> | ||
|  | <!--docid::SEC334::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC335"></A> | ||
|  | <H3> The <CODE>-thread-list-all-threads</CODE> Command </H3> | ||
|  | <!--docid::SEC335::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC336"></A> | ||
|  | <H4> Synopsis                  </H4> | ||
|  | <!--docid::SEC336::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -thread-list-all-threads | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC337"></A> | ||
|  | <H4> GDB Command                  </H4> | ||
|  | <!--docid::SEC337::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The equivalent GDB command is <SAMP>`info threads'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC338"></A> | ||
|  | <H4> Example                  </H4> | ||
|  | <!--docid::SEC338::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC339"></A> | ||
|  | <H3> The <CODE>-thread-list-ids</CODE> Command </H3> | ||
|  | <!--docid::SEC339::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC340"></A> | ||
|  | <H4> Synopsis                   </H4> | ||
|  | <!--docid::SEC340::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -thread-list-ids | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Produces a list of the currently known GDB thread ids.  At the | ||
|  | end of the list it also prints the total number of such threads. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC341"></A> | ||
|  | <H4> GDB Command                   </H4> | ||
|  | <!--docid::SEC341::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Part of <SAMP>`info threads'</SAMP> supplies the same information. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC342"></A> | ||
|  | <H4> Example                   </H4> | ||
|  | <!--docid::SEC342::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | No threads present, besides the main process: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -thread-list-ids | ||
|  | ^done,thread-ids={},number-of-threads="0" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Several threads: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -thread-list-ids | ||
|  | ^done,thread-ids={thread-id="3",thread-id="2",thread-id="1"}, | ||
|  | number-of-threads="3" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC343"></A> | ||
|  | <H3> The <CODE>-thread-select</CODE> Command </H3> | ||
|  | <!--docid::SEC343::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC344"></A> | ||
|  | <H4> Synopsis                    </H4> | ||
|  | <!--docid::SEC344::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -thread-select <VAR>threadnum</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Make <VAR>threadnum</VAR> the current thread.  It prints the number of the new | ||
|  | current thread, and the topmost frame for that thread. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC345"></A> | ||
|  | <H4> GDB Command                    </H4> | ||
|  | <!--docid::SEC345::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`thread'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC346"></A> | ||
|  | <H4> Example                    </H4> | ||
|  | <!--docid::SEC346::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-next | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range",thread-id="2",line="187", | ||
|  | file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c" | ||
|  | (gdb) | ||
|  | -thread-list-ids | ||
|  | ^done, | ||
|  | thread-ids={thread-id="3",thread-id="2",thread-id="1"}, | ||
|  | number-of-threads="3" | ||
|  | (gdb) | ||
|  | -thread-select 3 | ||
|  | ^done,new-thread-id="3", | ||
|  | frame={level="0",func="vprintf", | ||
|  | args=[{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""}, | ||
|  | {name="arg",value="0x2"}],file="vprintf.c",line="31"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Program Execution"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC347"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC330"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC388"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.10 GDB/MI Program Execution </H2> | ||
|  | <!--docid::SEC347::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | These are the asynchronous commands which generate the out-of-band | ||
|  | record <SAMP>`*stopped'</SAMP>.  Currently GDB only really executes | ||
|  | asynchronously with remote targets and this interaction is mimicked in | ||
|  | other cases. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC348"></A> | ||
|  | <H3> The <CODE>-exec-continue</CODE> Command </H3> | ||
|  | <!--docid::SEC348::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC349"></A> | ||
|  | <H4> Synopsis                     </H4> | ||
|  | <!--docid::SEC349::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-continue | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Resumes the execution of the inferior program until a breakpoint is | ||
|  | encountered, or until the inferior exits. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC350"></A> | ||
|  | <H4> GDB Command                     </H4> | ||
|  | <!--docid::SEC350::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB corresponding is <SAMP>`continue'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC351"></A> | ||
|  | <H4> Example                     </H4> | ||
|  | <!--docid::SEC351::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-continue | ||
|  | ^running | ||
|  | (gdb) | ||
|  | @Hello world | ||
|  | *stopped,reason="breakpoint-hit",bkptno="2",frame={func="foo",args=[], | ||
|  | file="hello.c",fullname="/home/foo/bar/hello.c",line="13"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC352"></A> | ||
|  | <H3> The <CODE>-exec-finish</CODE> Command </H3> | ||
|  | <!--docid::SEC352::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC353"></A> | ||
|  | <H4> Synopsis                      </H4> | ||
|  | <!--docid::SEC353::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-finish | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Resumes the execution of the inferior program until the current | ||
|  | function is exited.  Displays the results returned by the function. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC354"></A> | ||
|  | <H4> GDB Command                      </H4> | ||
|  | <!--docid::SEC354::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`finish'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC355"></A> | ||
|  | <H4> Example                      </H4> | ||
|  | <!--docid::SEC355::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Function returning <CODE>void</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-finish | ||
|  | ^running | ||
|  | (gdb) | ||
|  | @hello from foo | ||
|  | *stopped,reason="function-finished",frame={func="main",args=[], | ||
|  | file="hello.c",fullname="/home/foo/bar/hello.c",line="7"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Function returning other than <CODE>void</CODE>.  The name of the internal | ||
|  | GDB variable storing the result is printed, together with the | ||
|  | value itself. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-finish | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="function-finished",frame={addr="0x000107b0",func="foo", | ||
|  | args=[{name="a",value="1"],{name="b",value="9"}}, | ||
|  | file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | gdb-result-var="$1",return-value="0" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC356"></A> | ||
|  | <H3> The <CODE>-exec-interrupt</CODE> Command </H3> | ||
|  | <!--docid::SEC356::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC357"></A> | ||
|  | <H4> Synopsis                       </H4> | ||
|  | <!--docid::SEC357::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-interrupt | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Interrupts the background execution of the target.  Note how the token | ||
|  | associated with the stop message is the one for the execution command | ||
|  | that has been interrupted.  The token for the interrupt itself only | ||
|  | appears in the <SAMP>`^done'</SAMP> output.  If the user is trying to | ||
|  | interrupt a non-running program, an error message will be printed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC358"></A> | ||
|  | <H4> GDB Command                       </H4> | ||
|  | <!--docid::SEC358::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`interrupt'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC359"></A> | ||
|  | <H4> Example                       </H4> | ||
|  | <!--docid::SEC359::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 111-exec-continue | ||
|  | 111^running | ||
|  | 
 | ||
|  | (gdb) | ||
|  | 222-exec-interrupt | ||
|  | 222^done | ||
|  | (gdb) | ||
|  | 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt", | ||
|  | frame={addr="0x00010140",func="foo",args=[],file="try.c", | ||
|  | fullname="/home/foo/bar/try.c",line="13"} | ||
|  | (gdb) | ||
|  | 
 | ||
|  | (gdb) | ||
|  | -exec-interrupt | ||
|  | ^error,msg="mi_cmd_exec_interrupt: Inferior not executing." | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC360"></A> | ||
|  | <H3> The <CODE>-exec-next</CODE> Command </H3> | ||
|  | <!--docid::SEC360::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC361"></A> | ||
|  | <H4> Synopsis                        </H4> | ||
|  | <!--docid::SEC361::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-next | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Resumes execution of the inferior program, stopping when the beginning | ||
|  | of the next source line is reached. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC362"></A> | ||
|  | <H4> GDB Command                        </H4> | ||
|  | <!--docid::SEC362::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`next'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC363"></A> | ||
|  | <H4> Example                        </H4> | ||
|  | <!--docid::SEC363::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-next | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range",line="8",file="hello.c" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC364"></A> | ||
|  | <H3> The <CODE>-exec-next-instruction</CODE> Command </H3> | ||
|  | <!--docid::SEC364::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC365"></A> | ||
|  | <H4> Synopsis                         </H4> | ||
|  | <!--docid::SEC365::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-next-instruction | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Executes one machine instruction.  If the instruction is a function | ||
|  | call, continues until the function returns.  If the program stops at an | ||
|  | instruction in the middle of a source line, the address will be | ||
|  | printed as well. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC366"></A> | ||
|  | <H4> GDB Command                         </H4> | ||
|  | <!--docid::SEC366::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`nexti'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC367"></A> | ||
|  | <H4> Example                         </H4> | ||
|  | <!--docid::SEC367::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-next-instruction | ||
|  | ^running | ||
|  | 
 | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range", | ||
|  | addr="0x000100d4",line="5",file="hello.c" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC368"></A> | ||
|  | <H3> The <CODE>-exec-return</CODE> Command </H3> | ||
|  | <!--docid::SEC368::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC369"></A> | ||
|  | <H4> Synopsis                          </H4> | ||
|  | <!--docid::SEC369::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-return | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Makes current function return immediately.  Doesn't execute the inferior. | ||
|  | Displays the new current frame. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC370"></A> | ||
|  | <H4> GDB Command                          </H4> | ||
|  | <!--docid::SEC370::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`return'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC371"></A> | ||
|  | <H4> Example                          </H4> | ||
|  | <!--docid::SEC371::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 200-break-insert callee4 | ||
|  | 200^done,bkpt={number="1",addr="0x00010734", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"} | ||
|  | (gdb) | ||
|  | 000-exec-run | ||
|  | 000^running | ||
|  | (gdb) | ||
|  | 000*stopped,reason="breakpoint-hit",bkptno="1", | ||
|  | frame={func="callee4",args=[], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"} | ||
|  | (gdb) | ||
|  | 205-break-delete | ||
|  | 205^done | ||
|  | (gdb) | ||
|  | 111-exec-return | ||
|  | 111^done,frame={level="0",func="callee3", | ||
|  | args=[{name="strarg", | ||
|  | value="0x11940 \"A string argument.\""}], | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC372"></A> | ||
|  | <H3> The <CODE>-exec-run</CODE> Command </H3> | ||
|  | <!--docid::SEC372::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC373"></A> | ||
|  | <H4> Synopsis                           </H4> | ||
|  | <!--docid::SEC373::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-run | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Starts execution of the inferior from the beginning.  The inferior | ||
|  | executes until either a breakpoint is encountered or the program | ||
|  | exits.  In the latter case the output will include an exit code, if | ||
|  | the program has exited exceptionally. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC374"></A> | ||
|  | <H4> GDB Command                           </H4> | ||
|  | <!--docid::SEC374::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`run'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC375"></A> | ||
|  | <H4> Examples </H4> | ||
|  | <!--docid::SEC375::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -break-insert main | ||
|  | ^done,bkpt={number="1",addr="0x0001072c",file="recursive2.c",line="4"} | ||
|  | (gdb) | ||
|  | -exec-run | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="breakpoint-hit",bkptno="1", | ||
|  | frame={func="main",args=[],file="recursive2.c", | ||
|  | fullname="/home/foo/bar/recursive2.c",line="4"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Program exited normally: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-run | ||
|  | ^running | ||
|  | (gdb) | ||
|  | x = 55 | ||
|  | *stopped,reason="exited-normally" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Program exited exceptionally: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-run | ||
|  | ^running | ||
|  | (gdb) | ||
|  | x = 55 | ||
|  | *stopped,reason="exited",exit-code="01" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Another way the program can terminate is if it receives a signal such as | ||
|  | <CODE>SIGINT</CODE>.  In this case, GDB/MI displays this: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | *stopped,reason="exited-signalled",signal-name="SIGINT", | ||
|  | signal-meaning="Interrupt" | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC376"></A> | ||
|  | <H3> The <CODE>-exec-step</CODE> Command </H3> | ||
|  | <!--docid::SEC376::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC377"></A> | ||
|  | <H4> Synopsis                            </H4> | ||
|  | <!--docid::SEC377::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-step | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Resumes execution of the inferior program, stopping when the beginning | ||
|  | of the next source line is reached, if the next source line is not a | ||
|  | function call.  If it is, stop at the first instruction of the called | ||
|  | function. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC378"></A> | ||
|  | <H4> GDB Command                            </H4> | ||
|  | <!--docid::SEC378::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`step'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC379"></A> | ||
|  | <H4> Example                           </H4> | ||
|  | <!--docid::SEC379::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Stepping into a function: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-step | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range", | ||
|  | frame={func="foo",args=[{name="a",value="10"}, | ||
|  | {name="b",value="0"}],file="recursive2.c", | ||
|  | fullname="/home/foo/bar/recursive2.c",line="11"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Regular stepping: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-exec-step | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range",line="14",file="recursive2.c" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC380"></A> | ||
|  | <H3> The <CODE>-exec-step-instruction</CODE> Command </H3> | ||
|  | <!--docid::SEC380::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC381"></A> | ||
|  | <H4> Synopsis                             </H4> | ||
|  | <!--docid::SEC381::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-step-instruction | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Resumes the inferior which executes one machine instruction.  The | ||
|  | output, once GDB has stopped, will vary depending on whether | ||
|  | we have stopped in the middle of a source line or not.  In the former | ||
|  | case, the address at which the program stopped will be printed as | ||
|  | well. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC382"></A> | ||
|  | <H4> GDB Command                             </H4> | ||
|  | <!--docid::SEC382::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`stepi'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC383"></A> | ||
|  | <H4> Example                            </H4> | ||
|  | <!--docid::SEC383::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-step-instruction | ||
|  | ^running | ||
|  | 
 | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range", | ||
|  | frame={func="foo",args=[],file="try.c", | ||
|  | fullname="/home/foo/bar/try.c",line="10"} | ||
|  | (gdb) | ||
|  | -exec-step-instruction | ||
|  | ^running | ||
|  | 
 | ||
|  | (gdb) | ||
|  | *stopped,reason="end-stepping-range", | ||
|  | frame={addr="0x000100f4",func="foo",args=[],file="try.c", | ||
|  | fullname="/home/foo/bar/try.c",line="10"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC384"></A> | ||
|  | <H3> The <CODE>-exec-until</CODE> Command </H3> | ||
|  | <!--docid::SEC384::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC385"></A> | ||
|  | <H4> Synopsis                              </H4> | ||
|  | <!--docid::SEC385::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-until [ <VAR>location</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Executes the inferior until the <VAR>location</VAR> specified in the | ||
|  | argument is reached.  If there is no argument, the inferior executes | ||
|  | until a source line greater than the current one is reached.  The | ||
|  | reason for stopping in this case will be <SAMP>`location-reached'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC386"></A> | ||
|  | <H4> GDB Command                              </H4> | ||
|  | <!--docid::SEC386::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`until'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC387"></A> | ||
|  | <H4> Example                             </H4> | ||
|  | <!--docid::SEC387::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-until recursive2.c:6 | ||
|  | ^running | ||
|  | (gdb) | ||
|  | x = 55 | ||
|  | *stopped,reason="location-reached",frame={func="main",args=[], | ||
|  | file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Stack Manipulation"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC388"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC347"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC413"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.11 GDB/MI Stack Manipulation Commands </H2> | ||
|  | <!--docid::SEC388::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC389"></A> | ||
|  | <H3> The <CODE>-stack-info-frame</CODE> Command </H3> | ||
|  | <!--docid::SEC389::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC390"></A> | ||
|  | <H4> Synopsis                               </H4> | ||
|  | <!--docid::SEC390::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-info-frame | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Get info on the selected frame. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC391"></A> | ||
|  | <H4> GDB Command                               </H4> | ||
|  | <!--docid::SEC391::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info frame'</SAMP> or <SAMP>`frame'</SAMP> | ||
|  | (without arguments). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC392"></A> | ||
|  | <H4> Example                              </H4> | ||
|  | <!--docid::SEC392::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-info-frame | ||
|  | ^done,frame={level="1",addr="0x0001076c",func="callee3", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC393"></A> | ||
|  | <H3> The <CODE>-stack-info-depth</CODE> Command </H3> | ||
|  | <!--docid::SEC393::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC394"></A> | ||
|  | <H4> Synopsis                                </H4> | ||
|  | <!--docid::SEC394::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-info-depth [ <VAR>max-depth</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Return the depth of the stack.  If the integer argument <VAR>max-depth</VAR> | ||
|  | is specified, do not count beyond <VAR>max-depth</VAR> frames. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC395"></A> | ||
|  | <H4> GDB Command                                </H4> | ||
|  | <!--docid::SEC395::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | There's no equivalent GDB command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC396"></A> | ||
|  | <H4> Example                               </H4> | ||
|  | <!--docid::SEC396::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | For a stack with frame levels 0 through 11: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-info-depth | ||
|  | ^done,depth="12" | ||
|  | (gdb) | ||
|  | -stack-info-depth 4 | ||
|  | ^done,depth="4" | ||
|  | (gdb) | ||
|  | -stack-info-depth 12 | ||
|  | ^done,depth="12" | ||
|  | (gdb) | ||
|  | -stack-info-depth 11 | ||
|  | ^done,depth="11" | ||
|  | (gdb) | ||
|  | -stack-info-depth 13 | ||
|  | ^done,depth="12" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC397"></A> | ||
|  | <H3> The <CODE>-stack-list-arguments</CODE> Command </H3> | ||
|  | <!--docid::SEC397::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC398"></A> | ||
|  | <H4> Synopsis                                 </H4> | ||
|  | <!--docid::SEC398::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-list-arguments <VAR>show-values</VAR> | ||
|  |     [ <VAR>low-frame</VAR> <VAR>high-frame</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Display a list of the arguments for the frames between <VAR>low-frame</VAR> | ||
|  | and <VAR>high-frame</VAR> (inclusive).  If <VAR>low-frame</VAR> and | ||
|  | <VAR>high-frame</VAR> are not provided, list the arguments for the whole | ||
|  | call stack.  If the two arguments are equal, show the single frame | ||
|  | at the corresponding level.  It is an error if <VAR>low-frame</VAR> is | ||
|  | larger than the actual number of frames.  On the other hand, | ||
|  | <VAR>high-frame</VAR> may be larger than the actual number of frames, in | ||
|  | which case only existing frames will be returned. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The <VAR>show-values</VAR> argument must have a value of 0 or 1.  A value of | ||
|  | 0 means that only the names of the arguments are listed, a value of 1 | ||
|  | means that both names and values of the arguments are printed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC399"></A> | ||
|  | <H4> GDB Command                                 </H4> | ||
|  | <!--docid::SEC399::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | GDB does not have an equivalent command.  <CODE>gdbtk</CODE> has a | ||
|  | <SAMP>`gdb_get_args'</SAMP> command which partially overlaps with the | ||
|  | functionality of <SAMP>`-stack-list-arguments'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC400"></A> | ||
|  | <H4> Example                                </H4> | ||
|  | <!--docid::SEC400::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-list-frames | ||
|  | ^done, | ||
|  | stack=[ | ||
|  | frame={level="0",addr="0x00010734",func="callee4", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"}, | ||
|  | frame={level="1",addr="0x0001076c",func="callee3", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"}, | ||
|  | frame={level="2",addr="0x0001078c",func="callee2", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"}, | ||
|  | frame={level="3",addr="0x000107b4",func="callee1", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"}, | ||
|  | frame={level="4",addr="0x000107e0",func="main", | ||
|  | file="../../../devo/gdb/testsuite/gdb.mi/basics.c", | ||
|  | fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"}] | ||
|  | (gdb) | ||
|  | -stack-list-arguments 0 | ||
|  | ^done, | ||
|  | stack-args=[ | ||
|  | frame={level="0",args=[]}, | ||
|  | frame={level="1",args=[name="strarg"]}, | ||
|  | frame={level="2",args=[name="intarg",name="strarg"]}, | ||
|  | frame={level="3",args=[name="intarg",name="strarg",name="fltarg"]}, | ||
|  | frame={level="4",args=[]}] | ||
|  | (gdb) | ||
|  | -stack-list-arguments 1 | ||
|  | ^done, | ||
|  | stack-args=[ | ||
|  | frame={level="0",args=[]}, | ||
|  | frame={level="1", | ||
|  |  args=[{name="strarg",value="0x11940 \"A string argument.\""}]}, | ||
|  | frame={level="2",args=[ | ||
|  | {name="intarg",value="2"}, | ||
|  | {name="strarg",value="0x11940 \"A string argument.\""}]}, | ||
|  | {frame={level="3",args=[ | ||
|  | {name="intarg",value="2"}, | ||
|  | {name="strarg",value="0x11940 \"A string argument.\""}, | ||
|  | {name="fltarg",value="3.5"}]}, | ||
|  | frame={level="4",args=[]}] | ||
|  | (gdb) | ||
|  | -stack-list-arguments 0 2 2 | ||
|  | ^done,stack-args=[frame={level="2",args=[name="intarg",name="strarg"]}] | ||
|  | (gdb) | ||
|  | -stack-list-arguments 1 2 2 | ||
|  | ^done,stack-args=[frame={level="2", | ||
|  | args=[{name="intarg",value="2"}, | ||
|  | {name="strarg",value="0x11940 \"A string argument.\""}]}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC401"></A> | ||
|  | <H3> The <CODE>-stack-list-frames</CODE> Command </H3> | ||
|  | <!--docid::SEC401::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC402"></A> | ||
|  | <H4> Synopsis                                  </H4> | ||
|  | <!--docid::SEC402::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-list-frames [ <VAR>low-frame</VAR> <VAR>high-frame</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the frames currently on the stack.  For each frame it displays the | ||
|  | following info: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`<VAR>level</VAR>'</SAMP> | ||
|  | <DD>The frame number, 0 being the topmost frame, i.e., the innermost function. | ||
|  | <DT><SAMP>`<VAR>addr</VAR>'</SAMP> | ||
|  | <DD>The <CODE>$pc</CODE> value for that frame. | ||
|  | <DT><SAMP>`<VAR>func</VAR>'</SAMP> | ||
|  | <DD>Function name. | ||
|  | <DT><SAMP>`<VAR>file</VAR>'</SAMP> | ||
|  | <DD>File name of the source file where the function lives. | ||
|  | <DT><SAMP>`<VAR>line</VAR>'</SAMP> | ||
|  | <DD>Line number corresponding to the <CODE>$pc</CODE>. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | If invoked without arguments, this command prints a backtrace for the | ||
|  | whole stack.  If given two integer arguments, it shows the frames whose | ||
|  | levels are between the two arguments (inclusive).  If the two arguments | ||
|  | are equal, it shows the single frame at the corresponding level.  It is | ||
|  | an error if <VAR>low-frame</VAR> is larger than the actual number of | ||
|  | frames.  On the other hand, <VAR>high-frame</VAR> may be larger than the | ||
|  | actual number of frames, in which case only existing frames will be returned. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC403"></A> | ||
|  | <H4> GDB Command                                  </H4> | ||
|  | <!--docid::SEC403::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`backtrace'</SAMP> and <SAMP>`where'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC404"></A> | ||
|  | <H4> Example                                 </H4> | ||
|  | <!--docid::SEC404::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Full stack backtrace: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-list-frames | ||
|  | ^done,stack= | ||
|  | [frame={level="0",addr="0x0001076c",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"}, | ||
|  | frame={level="1",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="2",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="3",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="4",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="5",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="6",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="7",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="8",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="9",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="10",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="11",addr="0x00010738",func="main", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show frames between <VAR>low_frame</VAR> and <VAR>high_frame</VAR>: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-list-frames 3 5 | ||
|  | ^done,stack= | ||
|  | [frame={level="3",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="4",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}, | ||
|  | frame={level="5",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show a single frame: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-list-frames 3 3 | ||
|  | ^done,stack= | ||
|  | [frame={level="3",addr="0x000107a4",func="foo", | ||
|  |   file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC405"></A> | ||
|  | <H3> The <CODE>-stack-list-locals</CODE> Command </H3> | ||
|  | <!--docid::SEC405::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC406"></A> | ||
|  | <H4> Synopsis                                   </H4> | ||
|  | <!--docid::SEC406::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-list-locals <VAR>print-values</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Display the local variable names for the selected frame.  If | ||
|  | <VAR>print-values</VAR> is 0 or <CODE>--no-values</CODE>, print only the names of | ||
|  | the variables; if it is 1 or <CODE>--all-values</CODE>, print also their | ||
|  | values; and if it is 2 or <CODE>--simple-values</CODE>, print the name, | ||
|  | type and value for simple data types and the name and type for arrays, | ||
|  | structures and unions.  In this last case, a frontend can immediately | ||
|  | display the value of simple data types and create variable objects for | ||
|  | other data types when the user wishes to explore their values in | ||
|  | more detail. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC407"></A> | ||
|  | <H4> GDB Command                                   </H4> | ||
|  | <!--docid::SEC407::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <SAMP>`info locals'</SAMP> in GDB, <SAMP>`gdb_get_locals'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC408"></A> | ||
|  | <H4> Example                                  </H4> | ||
|  | <!--docid::SEC408::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-list-locals 0 | ||
|  | ^done,locals=[name="A",name="B",name="C"] | ||
|  | (gdb) | ||
|  | -stack-list-locals --all-values | ||
|  | ^done,locals=[{name="A",value="1"},{name="B",value="2"}, | ||
|  |   {name="C",value="{1, 2, 3}"}] | ||
|  | -stack-list-locals --simple-values | ||
|  | ^done,locals=[{name="A",type="int",value="1"}, | ||
|  |   {name="B",type="int",value="2"},{name="C",type="int [3]"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC409"></A> | ||
|  | <H3> The <CODE>-stack-select-frame</CODE> Command </H3> | ||
|  | <!--docid::SEC409::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC410"></A> | ||
|  | <H4> Synopsis                                    </H4> | ||
|  | <!--docid::SEC410::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -stack-select-frame <VAR>framenum</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Change the selected frame.  Select a different frame <VAR>framenum</VAR> on | ||
|  | the stack. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC411"></A> | ||
|  | <H4> GDB Command                                    </H4> | ||
|  | <!--docid::SEC411::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`frame'</SAMP>, <SAMP>`up'</SAMP>, | ||
|  | <SAMP>`down'</SAMP>, <SAMP>`select-frame'</SAMP>, <SAMP>`up-silent'</SAMP>, and <SAMP>`down-silent'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC412"></A> | ||
|  | <H4> Example                                   </H4> | ||
|  | <!--docid::SEC412::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -stack-select-frame 2 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Variable Objects"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC413"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC388"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC449"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.12 GDB/MI Variable Objects </H2> | ||
|  | <!--docid::SEC413::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC414"></A> | ||
|  | <H3> Introduction to Variable Objects </H3> | ||
|  | <!--docid::SEC414::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1287"></A> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Variable objects are "object-oriented" MI interface for examining and | ||
|  | changing values of expressions.  Unlike some other MI interfaces that | ||
|  | work with expressions, variable objects are specifically designed for | ||
|  | simple and efficient presentation in the frontend.  A variable object | ||
|  | is identified by string name.  When a variable object is created, the | ||
|  | frontend specifies the expression for that variable object.  The | ||
|  | expression can be a simple variable, or it can be an arbitrary complex | ||
|  | expression, and can even involve CPU registers.  After creating a | ||
|  | variable object, the frontend can invoke other variable object | ||
|  | operations--for example to obtain or change the value of a variable | ||
|  | object, or to change display format. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Variable objects have hierarchical tree structure.  Any variable object | ||
|  | that corresponds to a composite type, such as structure in C, has | ||
|  | a number of child variable objects, for example corresponding to each | ||
|  | element of a structure.  A child variable object can itself have  | ||
|  | children, recursively.  Recursion ends when we reach  | ||
|  | leaf variable objects, which always have built-in types.  Child variable | ||
|  | objects are created only by explicit request, so if a frontend  | ||
|  | is not interested in the children of a particular variable object, no | ||
|  | child will be created. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | For a leaf variable object it is possible to obtain its value as a | ||
|  | string, or set the value from a string.  String value can be also | ||
|  | obtained for a non-leaf variable object, but it's generally a string | ||
|  | that only indicates the type of the object, and does not list its | ||
|  | contents.  Assignment to a non-leaf variable object is not allowed. | ||
|  |   | ||
|  | A frontend does not need to read the values of all variable objects each time | ||
|  | the program stops.  Instead, MI provides an update command that lists all | ||
|  | variable objects whose values has changed since the last update | ||
|  | operation.  This considerably reduces the amount of data that must | ||
|  | be transferred to the frontend.  As noted above, children variable | ||
|  | objects are created on demand, and only leaf variable objects have a | ||
|  | real value.  As result, gdb will read target memory only for leaf | ||
|  | variables that frontend has created. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The automatic update is not always desirable.  For example, a frontend | ||
|  | might want to keep a value of some expression for future reference, | ||
|  | and never update it.  For another example,  fetching memory is | ||
|  | relatively slow for embedded targets, so a frontend might want | ||
|  | to disable automatic update for the variables that are either not | ||
|  | visible on the screen, or "closed".  This is possible using so | ||
|  | called "frozen variable objects".  Such variable objects are never | ||
|  | implicitly updated.   | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The following is the complete set of GDB/MI operations defined to | ||
|  | access this functionality: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE> | ||
|  | <TR><TD><STRONG>Operation</STRONG></TD> | ||
|  | </TD><TD> <STRONG>Description</STRONG> | ||
|  | 
 | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-create</CODE></TD> | ||
|  | </TD><TD> create a variable object | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-delete</CODE></TD> | ||
|  | </TD><TD> delete the variable object and/or its children | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-set-format</CODE></TD> | ||
|  | </TD><TD> set the display format of this variable | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-show-format</CODE></TD> | ||
|  | </TD><TD> show the display format of this variable | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-info-num-children</CODE></TD> | ||
|  | </TD><TD> tells how many children this object has | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-list-children</CODE></TD> | ||
|  | </TD><TD> return a list of the object's children | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-info-type</CODE></TD> | ||
|  | </TD><TD> show the type of this variable object | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-info-expression</CODE></TD> | ||
|  | </TD><TD> print parent-relative expression that this variable object represents | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-info-path-expression</CODE></TD> | ||
|  | </TD><TD> print full expression that this variable object represents | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-show-attributes</CODE></TD> | ||
|  | </TD><TD> is this variable editable? does it exist here? | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-evaluate-expression</CODE></TD> | ||
|  | </TD><TD> get the value of this variable | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-assign</CODE></TD> | ||
|  | </TD><TD> set the value of this variable | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-update</CODE></TD> | ||
|  | </TD><TD> update the variable and its children | ||
|  | </TR> | ||
|  | <TR><TD><CODE>-var-set-frozen</CODE></TD> | ||
|  | </TD><TD> set frozeness attribute | ||
|  | </TR></TABLE> | ||
|  | <P> | ||
|  | 
 | ||
|  | In the next subsection we describe each operation in detail and suggest | ||
|  | how it can be used. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC415"></A> | ||
|  | <H3> Description And Use of Operations on Variable Objects </H3> | ||
|  | <!--docid::SEC415::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC416"></A> | ||
|  | <H3> The <CODE>-var-create</CODE> Command </H3> | ||
|  | <!--docid::SEC416::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC417"></A> | ||
|  | <H4> Synopsis                                     </H4> | ||
|  | <!--docid::SEC417::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-create {<VAR>name</VAR> | "-"} | ||
|  |     {<VAR>frame-addr</VAR> | "*"} <VAR>expression</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | This operation creates a variable object, which allows the monitoring of | ||
|  | a variable, the result of an expression, a memory cell or a CPU | ||
|  | register. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The <VAR>name</VAR> parameter is the string by which the object can be | ||
|  | referenced.  It must be unique.  If <SAMP>`-'</SAMP> is specified, the varobj | ||
|  | system will generate a string "varNNNNNN" automatically.  It will be | ||
|  | unique provided that one does not specify <VAR>name</VAR> on that format. | ||
|  | The command fails if a duplicate name is found. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The frame under which the expression should be evaluated can be | ||
|  | specified by <VAR>frame-addr</VAR>.  A <SAMP>`*'</SAMP> indicates that the current | ||
|  | frame should be used. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <VAR>expression</VAR> is any expression valid on the current language set (must not | ||
|  | begin with a <SAMP>`*'</SAMP>), or one of the following: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | <SAMP>`*<VAR>addr</VAR>'</SAMP>, where <VAR>addr</VAR> is the address of a memory cell | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <SAMP>`*<VAR>addr</VAR>-<VAR>addr</VAR>'</SAMP> -- a memory address range (TBD) | ||
|  | <P> | ||
|  | 
 | ||
|  | <LI> | ||
|  | <SAMP>`$<VAR>regname</VAR>'</SAMP> -- a CPU register name | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC418"></A> | ||
|  | <H4> Result   </H4> | ||
|  | <!--docid::SEC418::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | This operation returns the name, number of children and the type of the | ||
|  | object created.  Type is returned as a string as the ones generated by | ||
|  | the GDB CLI: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> name="<VAR>name</VAR>",numchild="N",type="<VAR>type</VAR>" | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC419"></A> | ||
|  | <H3> The <CODE>-var-delete</CODE> Command </H3> | ||
|  | <!--docid::SEC419::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC420"></A> | ||
|  | <H4> Synopsis                                      </H4> | ||
|  | <!--docid::SEC420::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-delete [ -c ] <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Deletes a previously created variable object and all of its children. | ||
|  | With the <SAMP>`-c'</SAMP> option, just deletes the children. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Returns an error if the object <VAR>name</VAR> is not found. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC421"></A> | ||
|  | <H3> The <CODE>-var-set-format</CODE> Command </H3> | ||
|  | <!--docid::SEC421::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC422"></A> | ||
|  | <H4> Synopsis                                       </H4> | ||
|  | <!--docid::SEC422::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-set-format <VAR>name</VAR> <VAR>format-spec</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Sets the output format for the value of the object <VAR>name</VAR> to be | ||
|  | <VAR>format-spec</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The syntax for the <VAR>format-spec</VAR> is as follows: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> <VAR>format-spec</VAR> ==> | ||
|  |  {binary | decimal | hexadecimal | octal | natural} | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | The natural format is the default format choosen automatically | ||
|  | based on the variable type (like decimal for an <CODE>int</CODE>, hex | ||
|  | for pointers, etc.). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | For a variable with children, the format is set only on the  | ||
|  | variable itself, and the children are not affected.   | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC423"></A> | ||
|  | <H3> The <CODE>-var-show-format</CODE> Command </H3> | ||
|  | <!--docid::SEC423::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC424"></A> | ||
|  | <H4> Synopsis                                        </H4> | ||
|  | <!--docid::SEC424::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-show-format <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Returns the format used to display the value of the object <VAR>name</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> <VAR>format</VAR> ==> | ||
|  |  <VAR>format-spec</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC425"></A> | ||
|  | <H3> The <CODE>-var-info-num-children</CODE> Command </H3> | ||
|  | <!--docid::SEC425::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC426"></A> | ||
|  | <H4> Synopsis                                         </H4> | ||
|  | <!--docid::SEC426::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-info-num-children <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Returns the number of children of a variable object <VAR>name</VAR>: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> numchild=<VAR>n</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC427"></A> | ||
|  | <H3> The <CODE>-var-list-children</CODE> Command </H3> | ||
|  | <!--docid::SEC427::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC428"></A> | ||
|  | <H4> Synopsis                                          </H4> | ||
|  | <!--docid::SEC428::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-list-children [<VAR>print-values</VAR>] <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table><A NAME="-var-list-children"></A> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Return a list of the children of the specified variable object and | ||
|  | create variable objects for them, if they do not already exist.  With | ||
|  | a single argument or if <VAR>print-values</VAR> has a value for of 0 or | ||
|  | <CODE>--no-values</CODE>, print only the names of the variables; if | ||
|  | <VAR>print-values</VAR> is 1 or <CODE>--all-values</CODE>, also print their | ||
|  | values; and if it is 2 or <CODE>--simple-values</CODE> print the name and | ||
|  | value for simple data types and just the name for arrays, structures | ||
|  | and unions. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC429"></A> | ||
|  | <H4> Example                                    </H4> | ||
|  | <!--docid::SEC429::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  |  -var-list-children n | ||
|  |  ^done,numchild=<VAR>n</VAR>,children=[{name=<VAR>name</VAR>, | ||
|  |  numchild=<VAR>n</VAR>,type=<VAR>type</VAR>},(repeats N times)] | ||
|  | (gdb) | ||
|  |  -var-list-children --all-values n | ||
|  |  ^done,numchild=<VAR>n</VAR>,children=[{name=<VAR>name</VAR>, | ||
|  |  numchild=<VAR>n</VAR>,value=<VAR>value</VAR>,type=<VAR>type</VAR>},(repeats N times)] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC430"></A> | ||
|  | <H3> The <CODE>-var-info-type</CODE> Command </H3> | ||
|  | <!--docid::SEC430::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC431"></A> | ||
|  | <H4> Synopsis                                           </H4> | ||
|  | <!--docid::SEC431::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-info-type <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Returns the type of the specified variable <VAR>name</VAR>.  The type is | ||
|  | returned as a string in the same format as it is output by the | ||
|  | GDB CLI: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> type=<VAR>typename</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC432"></A> | ||
|  | <H3> The <CODE>-var-info-expression</CODE> Command </H3> | ||
|  | <!--docid::SEC432::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC433"></A> | ||
|  | <H4> Synopsis                                            </H4> | ||
|  | <!--docid::SEC433::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-info-expression <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Returns a string that is suitable for presenting this | ||
|  | variable object in user interface.  The string is generally | ||
|  | not valid expression in the current language, and cannot be evaluated. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | For example, if <CODE>a</CODE> is an array, and variable object | ||
|  | <CODE>A</CODE> was created for <CODE>a</CODE>, then we'll get this output: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) -var-info-expression A.1 | ||
|  | ^done,lang="C",exp="1" | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Here, the values of <CODE>lang</CODE> can be <CODE>{"C" | "C++" | "Java"}</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Note that the output of the <CODE>-var-list-children</CODE> command also | ||
|  | includes those expressions, so the <CODE>-var-info-expression</CODE> command | ||
|  | is of limited use. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC434"></A> | ||
|  | <H3> The <CODE>-var-info-path-expression</CODE> Command </H3> | ||
|  | <!--docid::SEC434::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC435"></A> | ||
|  | <H4> Synopsis                                             </H4> | ||
|  | <!--docid::SEC435::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-info-path-expression <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Returns an expression that can be evaluated in the current | ||
|  | context and will yield the same value that a variable object has. | ||
|  | Compare this with the <CODE>-var-info-expression</CODE> command, which | ||
|  | result can be used only for UI presentation.  Typical use of | ||
|  | the <CODE>-var-info-path-expression</CODE> command is creating a  | ||
|  | watchpoint from a variable object. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | For example, suppose <CODE>C</CODE> is a C<TT>++</TT> class, derived from class | ||
|  | <CODE>Base</CODE>, and that the <CODE>Base</CODE> class has a member called | ||
|  | <CODE>m_size</CODE>.  Assume a variable <CODE>c</CODE> is has the type of | ||
|  | <CODE>C</CODE> and a variable object <CODE>C</CODE> was created for variable | ||
|  | <CODE>c</CODE>.  Then, we'll get this output: | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) -var-info-path-expression C.Base.public.m_size | ||
|  | ^done,path_expr=((Base)c).m_size) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC436"></A> | ||
|  | <H3> The <CODE>-var-show-attributes</CODE> Command </H3> | ||
|  | <!--docid::SEC436::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC437"></A> | ||
|  | <H4> Synopsis                                              </H4> | ||
|  | <!--docid::SEC437::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-show-attributes <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List attributes of the specified variable object <VAR>name</VAR>: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> status=<VAR>attr</VAR> [ ( ,<VAR>attr</VAR> )* ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | where <VAR>attr</VAR> is <CODE>{ { editable | noneditable } | TBD }</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC438"></A> | ||
|  | <H3> The <CODE>-var-evaluate-expression</CODE> Command </H3> | ||
|  | <!--docid::SEC438::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC439"></A> | ||
|  | <H4> Synopsis                                               </H4> | ||
|  | <!--docid::SEC439::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-evaluate-expression <VAR>name</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Evaluates the expression that is represented by the specified variable | ||
|  | object and returns its value as a string.  The format of the | ||
|  | string can be changed using the <CODE>-var-set-format</CODE> command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> value=<VAR>value</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Note that one must invoke <CODE>-var-list-children</CODE> for a variable | ||
|  | before the value of a child variable can be evaluated. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC440"></A> | ||
|  | <H3> The <CODE>-var-assign</CODE> Command </H3> | ||
|  | <!--docid::SEC440::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC441"></A> | ||
|  | <H4> Synopsis                                                </H4> | ||
|  | <!--docid::SEC441::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-assign <VAR>name</VAR> <VAR>expression</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Assigns the value of <VAR>expression</VAR> to the variable object specified | ||
|  | by <VAR>name</VAR>.  The object must be <SAMP>`editable'</SAMP>.  If the variable's | ||
|  | value is altered by the assign, the variable will show up in any | ||
|  | subsequent <CODE>-var-update</CODE> list. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC442"></A> | ||
|  | <H4> Example                                     </H4> | ||
|  | <!--docid::SEC442::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -var-assign var1 3 | ||
|  | ^done,value="3" | ||
|  | (gdb) | ||
|  | -var-update * | ||
|  | ^done,changelist=[{name="var1",in_scope="true",type_changed="false"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC443"></A> | ||
|  | <H3> The <CODE>-var-update</CODE> Command </H3> | ||
|  | <!--docid::SEC443::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC444"></A> | ||
|  | <H4> Synopsis                                                 </H4> | ||
|  | <!--docid::SEC444::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-update [<VAR>print-values</VAR>] {<VAR>name</VAR> | "*"} | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Reevaluate the expressions corresponding to the variable object | ||
|  | <VAR>name</VAR> and all its direct and indirect children, and return the | ||
|  | list of variable objects whose values have changed; <VAR>name</VAR> must | ||
|  | be a root variable object.  Here, "changed" means that the result of | ||
|  | <CODE>-var-evaluate-expression</CODE> before and after the | ||
|  | <CODE>-var-update</CODE> is different.  If <SAMP>`*'</SAMP> is used as the variable | ||
|  | object names, all existing variable objects are updated, except | ||
|  | for frozen ones (see  <A HREF="gdb_25.html#-var-set-frozen">-var-set-frozen</A>).  The option | ||
|  | <VAR>print-values</VAR> determines whether both names and values, or just | ||
|  | names are printed.  The possible values of this options are the same | ||
|  | as for <CODE>-var-list-children</CODE> (see  <A HREF="gdb_25.html#-var-list-children">-var-list-children</A>).  It is | ||
|  | recommended to use the <SAMP>`--all-values'</SAMP> option, to reduce the | ||
|  | number of MI commands needed on each program stop. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC445"></A> | ||
|  | <H4> Example                                      </H4> | ||
|  | <!--docid::SEC445::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -var-assign var1 3 | ||
|  | ^done,value="3" | ||
|  | (gdb) | ||
|  | -var-update --all-values var1 | ||
|  | ^done,changelist=[{name="var1",value="3",in_scope="true", | ||
|  | type_changed="false"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="-var-update"></A> | ||
|  | The field in_scope may take three values: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE>"true"</CODE> | ||
|  | <DD>The variable object's current value is valid. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"false"</CODE> | ||
|  | <DD>The variable object does not currently hold a valid value but it may | ||
|  | hold one in the future if its associated expression comes back into | ||
|  | scope. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><CODE>"invalid"</CODE> | ||
|  | <DD>The variable object no longer holds a valid value. | ||
|  | This can occur when the executable file being debugged has changed, | ||
|  | either through recompilation or by using the GDB <CODE>file</CODE> | ||
|  | command.  The front end should normally choose to delete these variable | ||
|  | objects. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | In the future new values may be added to this list so the front should | ||
|  | be prepared for this possibility.  See section <A HREF="gdb_25.html#SEC249">GDB/MI Development and Front Ends</A>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC446"></A> | ||
|  | <H3> The <CODE>-var-set-frozen</CODE> Command </H3> | ||
|  | <!--docid::SEC446::--> | ||
|  | <A NAME="-var-set-frozen"></A> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC447"></A> | ||
|  | <H4> Synopsis                                                  </H4> | ||
|  | <!--docid::SEC447::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -var-set-frozen <VAR>name</VAR> <VAR>flag</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Set the frozenness flag on the variable object <VAR>name</VAR>.  The | ||
|  | <VAR>flag</VAR> parameter should be either <SAMP>`1'</SAMP> to make the variable | ||
|  | frozen or <SAMP>`0'</SAMP> to make it unfrozen.  If a variable object is | ||
|  | frozen, then neither itself, nor any of its children, are  | ||
|  | implicitly updated by <CODE>-var-update</CODE> of  | ||
|  | a parent variable or by <CODE>-var-update *</CODE>.  Only | ||
|  | <CODE>-var-update</CODE> of the variable itself will update its value and | ||
|  | values of its children.  After a variable object is unfrozen, it is | ||
|  | implicitly updated by all subsequent <CODE>-var-update</CODE> operations.   | ||
|  | Unfreezing a variable does not update it, only subsequent | ||
|  | <CODE>-var-update</CODE> does. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC448"></A> | ||
|  | <H4> Example                                       </H4> | ||
|  | <!--docid::SEC448::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -var-set-frozen V 1 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Data Manipulation"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC449"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC413"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC475"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.13 GDB/MI Data Manipulation </H2> | ||
|  | <!--docid::SEC449::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="IDX1288"></A> | ||
|  | <A NAME="IDX1289"></A> | ||
|  | This section describes the GDB/MI commands that manipulate data: | ||
|  | examine memory and registers, evaluate expressions, etc. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC450"></A> | ||
|  | <H3> The <CODE>-data-disassemble</CODE> Command </H3> | ||
|  | <!--docid::SEC450::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC451"></A> | ||
|  | <H4> Synopsis                                                   </H4> | ||
|  | <!--docid::SEC451::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-disassemble | ||
|  |     [ -s <VAR>start-addr</VAR> -e <VAR>end-addr</VAR> ] | ||
|  |   | [ -f <VAR>filename</VAR> -l <VAR>linenum</VAR> [ -n <VAR>lines</VAR> ] ] | ||
|  |   -- <VAR>mode</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Where: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`<VAR>start-addr</VAR>'</SAMP> | ||
|  | <DD>is the beginning address (or <CODE>$pc</CODE>) | ||
|  | <DT><SAMP>`<VAR>end-addr</VAR>'</SAMP> | ||
|  | <DD>is the end address | ||
|  | <DT><SAMP>`<VAR>filename</VAR>'</SAMP> | ||
|  | <DD>is the name of the file to disassemble | ||
|  | <DT><SAMP>`<VAR>linenum</VAR>'</SAMP> | ||
|  | <DD>is the line number to disassemble around | ||
|  | <DT><SAMP>`<VAR>lines</VAR>'</SAMP> | ||
|  | <DD>is the number of disassembly lines to be produced.  If it is -1, | ||
|  | the whole function will be disassembled, in case no <VAR>end-addr</VAR> is | ||
|  | specified.  If <VAR>end-addr</VAR> is specified as a non-zero value, and | ||
|  | <VAR>lines</VAR> is lower than the number of disassembly lines between | ||
|  | <VAR>start-addr</VAR> and <VAR>end-addr</VAR>, only <VAR>lines</VAR> lines are | ||
|  | displayed; if <VAR>lines</VAR> is higher than the number of lines between | ||
|  | <VAR>start-addr</VAR> and <VAR>end-addr</VAR>, only the lines up to <VAR>end-addr</VAR> | ||
|  | are displayed. | ||
|  | <DT><SAMP>`<VAR>mode</VAR>'</SAMP> | ||
|  | <DD>is either 0 (meaning only disassembly) or 1 (meaning mixed source and | ||
|  | disassembly). | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC452"></A> | ||
|  | <H4> Result    </H4> | ||
|  | <!--docid::SEC452::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The output for each instruction is composed of four fields: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI>Address | ||
|  | <LI>Func-name | ||
|  | <LI>Offset | ||
|  | <LI>Instruction | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | Note that whatever included in the instruction field, is not manipulated | ||
|  | directly by GDB/MI, i.e., it is not possible to adjust its format. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC453"></A> | ||
|  | <H4> GDB Command                                     </H4> | ||
|  | <!--docid::SEC453::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | There's no direct mapping from this command to the CLI. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC454"></A> | ||
|  | <H4> Example                                        </H4> | ||
|  | <!--docid::SEC454::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Disassemble from the current value of <CODE>$pc</CODE> to <CODE>$pc + 20</CODE>: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -data-disassemble -s $pc -e "$pc + 20" -- 0 | ||
|  | ^done, | ||
|  | asm_insns=[ | ||
|  | {address="0x000107c0",func-name="main",offset="4", | ||
|  | inst="mov  2, %o0"}, | ||
|  | {address="0x000107c4",func-name="main",offset="8", | ||
|  | inst="sethi  %hi(0x11800), %o2"}, | ||
|  | {address="0x000107c8",func-name="main",offset="12", | ||
|  | inst="or  %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"}, | ||
|  | {address="0x000107cc",func-name="main",offset="16", | ||
|  | inst="sethi  %hi(0x11800), %o2"}, | ||
|  | {address="0x000107d0",func-name="main",offset="20", | ||
|  | inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Disassemble the whole <CODE>main</CODE> function.  Line 32 is part of | ||
|  | <CODE>main</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-data-disassemble -f basics.c -l 32 -- 0 | ||
|  | ^done,asm_insns=[ | ||
|  | {address="0x000107bc",func-name="main",offset="0", | ||
|  | inst="save  %sp, -112, %sp"}, | ||
|  | {address="0x000107c0",func-name="main",offset="4", | ||
|  | inst="mov   2, %o0"}, | ||
|  | {address="0x000107c4",func-name="main",offset="8", | ||
|  | inst="sethi %hi(0x11800), %o2"}, | ||
|  | [<small>...</small>] | ||
|  | {address="0x0001081c",func-name="main",offset="96",inst="ret "}, | ||
|  | {address="0x00010820",func-name="main",offset="100",inst="restore "}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Disassemble 3 instructions from the start of <CODE>main</CODE>: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -data-disassemble -f basics.c -l 32 -n 3 -- 0 | ||
|  | ^done,asm_insns=[ | ||
|  | {address="0x000107bc",func-name="main",offset="0", | ||
|  | inst="save  %sp, -112, %sp"}, | ||
|  | {address="0x000107c0",func-name="main",offset="4", | ||
|  | inst="mov  2, %o0"}, | ||
|  | {address="0x000107c4",func-name="main",offset="8", | ||
|  | inst="sethi  %hi(0x11800), %o2"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Disassemble 3 instructions from the start of <CODE>main</CODE> in mixed mode: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -data-disassemble -f basics.c -l 32 -n 3 -- 1 | ||
|  | ^done,asm_insns=[ | ||
|  | src_and_asm_line={line="31", | ||
|  | file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \ | ||
|  |   testsuite/gdb.mi/basics.c",line_asm_insn=[ | ||
|  | {address="0x000107bc",func-name="main",offset="0", | ||
|  | inst="save  %sp, -112, %sp"}]}, | ||
|  | src_and_asm_line={line="32", | ||
|  | file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \ | ||
|  |   testsuite/gdb.mi/basics.c",line_asm_insn=[ | ||
|  | {address="0x000107c0",func-name="main",offset="4", | ||
|  | inst="mov  2, %o0"}, | ||
|  | {address="0x000107c4",func-name="main",offset="8", | ||
|  | inst="sethi  %hi(0x11800), %o2"}]}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC455"></A> | ||
|  | <H3> The <CODE>-data-evaluate-expression</CODE> Command </H3> | ||
|  | <!--docid::SEC455::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC456"></A> | ||
|  | <H4> Synopsis                                                    </H4> | ||
|  | <!--docid::SEC456::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-evaluate-expression <VAR>expr</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Evaluate <VAR>expr</VAR> as an expression.  The expression could contain an | ||
|  | inferior function call.  The function call will execute synchronously. | ||
|  | If the expression contains spaces, it must be enclosed in double quotes. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC457"></A> | ||
|  | <H4> GDB Command                                      </H4> | ||
|  | <!--docid::SEC457::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`print'</SAMP>, <SAMP>`output'</SAMP>, and | ||
|  | <SAMP>`call'</SAMP>.  In <CODE>gdbtk</CODE> only, there's a corresponding | ||
|  | <SAMP>`gdb_eval'</SAMP> command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC458"></A> | ||
|  | <H4> Example                                         </H4> | ||
|  | <!--docid::SEC458::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | In the following example, the numbers that precede the commands are the | ||
|  | <EM>tokens</EM> described in <A HREF="gdb_25.html#SEC245">GDB/MI Command Syntax</A>.  Notice how GDB/MI returns the same tokens in its | ||
|  | output. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>211-data-evaluate-expression A | ||
|  | 211^done,value="1" | ||
|  | (gdb) | ||
|  | 311-data-evaluate-expression &A | ||
|  | 311^done,value="0xefffeb7c" | ||
|  | (gdb) | ||
|  | 411-data-evaluate-expression A+3 | ||
|  | 411^done,value="4" | ||
|  | (gdb) | ||
|  | 511-data-evaluate-expression "A + 3" | ||
|  | 511^done,value="4" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC459"></A> | ||
|  | <H3> The <CODE>-data-list-changed-registers</CODE> Command </H3> | ||
|  | <!--docid::SEC459::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC460"></A> | ||
|  | <H4> Synopsis                                                     </H4> | ||
|  | <!--docid::SEC460::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-list-changed-registers | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Display a list of the registers that have changed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC461"></A> | ||
|  | <H4> GDB Command                                       </H4> | ||
|  | <!--docid::SEC461::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | GDB doesn't have a direct analog for this command; <CODE>gdbtk</CODE> | ||
|  | has the corresponding command <SAMP>`gdb_changed_register_list'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC462"></A> | ||
|  | <H4> Example                                          </H4> | ||
|  | <!--docid::SEC462::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | On a PPC MBX board: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -exec-continue | ||
|  | ^running | ||
|  | 
 | ||
|  | (gdb) | ||
|  | *stopped,reason="breakpoint-hit",bkptno="1",frame={func="main", | ||
|  | args=[],file="try.c",fullname="/home/foo/bar/try.c",line="5"} | ||
|  | (gdb) | ||
|  | -data-list-changed-registers | ||
|  | ^done,changed-registers=["0","1","2","4","5","6","7","8","9", | ||
|  | "10","11","13","14","15","16","17","18","19","20","21","22","23", | ||
|  | "24","25","26","27","28","30","31","64","65","66","67","69"] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC463"></A> | ||
|  | <H3> The <CODE>-data-list-register-names</CODE> Command </H3> | ||
|  | <!--docid::SEC463::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC464"></A> | ||
|  | <H4> Synopsis                                                      </H4> | ||
|  | <!--docid::SEC464::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-list-register-names [ ( <VAR>regno</VAR> )+ ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show a list of register names for the current target.  If no arguments | ||
|  | are given, it shows a list of the names of all the registers.  If | ||
|  | integer numbers are given as arguments, it will print a list of the | ||
|  | names of the registers corresponding to the arguments.  To ensure | ||
|  | consistency between a register name and its number, the output list may | ||
|  | include empty register names. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC465"></A> | ||
|  | <H4> GDB Command                                        </H4> | ||
|  | <!--docid::SEC465::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | GDB does not have a command which corresponds to | ||
|  | <SAMP>`-data-list-register-names'</SAMP>.  In <CODE>gdbtk</CODE> there is a | ||
|  | corresponding command <SAMP>`gdb_regnames'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC466"></A> | ||
|  | <H4> Example                                           </H4> | ||
|  | <!--docid::SEC466::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | For the PPC MBX board: | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -data-list-register-names | ||
|  | ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7", | ||
|  | "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18", | ||
|  | "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29", | ||
|  | "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9", | ||
|  | "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20", | ||
|  | "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31", | ||
|  | "", "pc","ps","cr","lr","ctr","xer"] | ||
|  | (gdb) | ||
|  | -data-list-register-names 1 2 3 | ||
|  | ^done,register-names=["r1","r2","r3"] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC467"></A> | ||
|  | <H3> The <CODE>-data-list-register-values</CODE> Command </H3> | ||
|  | <!--docid::SEC467::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC468"></A> | ||
|  | <H4> Synopsis                                                       </H4> | ||
|  | <!--docid::SEC468::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-list-register-values <VAR>fmt</VAR> [ ( <VAR>regno</VAR> )*] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Display the registers' contents.  <VAR>fmt</VAR> is the format according to | ||
|  | which the registers' contents are to be returned, followed by an optional | ||
|  | list of numbers specifying the registers to display.  A missing list of | ||
|  | numbers indicates that the contents of all the registers must be returned. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Allowed formats for <VAR>fmt</VAR> are: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><CODE>x</CODE> | ||
|  | <DD>Hexadecimal | ||
|  | <DT><CODE>o</CODE> | ||
|  | <DD>Octal | ||
|  | <DT><CODE>t</CODE> | ||
|  | <DD>Binary | ||
|  | <DT><CODE>d</CODE> | ||
|  | <DD>Decimal | ||
|  | <DT><CODE>r</CODE> | ||
|  | <DD>Raw | ||
|  | <DT><CODE>N</CODE> | ||
|  | <DD>Natural | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC469"></A> | ||
|  | <H4> GDB Command                                         </H4> | ||
|  | <!--docid::SEC469::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB commands are <SAMP>`info reg'</SAMP>, <SAMP>`info | ||
|  | all-reg'</SAMP>, and (in <CODE>gdbtk</CODE>) <SAMP>`gdb_fetch_registers'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC470"></A> | ||
|  | <H4> Example                                            </H4> | ||
|  | <!--docid::SEC470::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | For a PPC MBX board (note: line breaks are for readability only, they | ||
|  | don't appear in the actual output): | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -data-list-register-values r 64 65 | ||
|  | ^done,register-values=[{number="64",value="0xfe00a300"}, | ||
|  | {number="65",value="0x00029002"}] | ||
|  | (gdb) | ||
|  | -data-list-register-values x | ||
|  | ^done,register-values=[{number="0",value="0xfe0043c8"}, | ||
|  | {number="1",value="0x3fff88"},{number="2",value="0xfffffffe"}, | ||
|  | {number="3",value="0x0"},{number="4",value="0xa"}, | ||
|  | {number="5",value="0x3fff68"},{number="6",value="0x3fff58"}, | ||
|  | {number="7",value="0xfe011e98"},{number="8",value="0x2"}, | ||
|  | {number="9",value="0xfa202820"},{number="10",value="0xfa202808"}, | ||
|  | {number="11",value="0x1"},{number="12",value="0x0"}, | ||
|  | {number="13",value="0x4544"},{number="14",value="0xffdfffff"}, | ||
|  | {number="15",value="0xffffffff"},{number="16",value="0xfffffeff"}, | ||
|  | {number="17",value="0xefffffed"},{number="18",value="0xfffffffe"}, | ||
|  | {number="19",value="0xffffffff"},{number="20",value="0xffffffff"}, | ||
|  | {number="21",value="0xffffffff"},{number="22",value="0xfffffff7"}, | ||
|  | {number="23",value="0xffffffff"},{number="24",value="0xffffffff"}, | ||
|  | {number="25",value="0xffffffff"},{number="26",value="0xfffffffb"}, | ||
|  | {number="27",value="0xffffffff"},{number="28",value="0xf7bfffff"}, | ||
|  | {number="29",value="0x0"},{number="30",value="0xfe010000"}, | ||
|  | {number="31",value="0x0"},{number="32",value="0x0"}, | ||
|  | {number="33",value="0x0"},{number="34",value="0x0"}, | ||
|  | {number="35",value="0x0"},{number="36",value="0x0"}, | ||
|  | {number="37",value="0x0"},{number="38",value="0x0"}, | ||
|  | {number="39",value="0x0"},{number="40",value="0x0"}, | ||
|  | {number="41",value="0x0"},{number="42",value="0x0"}, | ||
|  | {number="43",value="0x0"},{number="44",value="0x0"}, | ||
|  | {number="45",value="0x0"},{number="46",value="0x0"}, | ||
|  | {number="47",value="0x0"},{number="48",value="0x0"}, | ||
|  | {number="49",value="0x0"},{number="50",value="0x0"}, | ||
|  | {number="51",value="0x0"},{number="52",value="0x0"}, | ||
|  | {number="53",value="0x0"},{number="54",value="0x0"}, | ||
|  | {number="55",value="0x0"},{number="56",value="0x0"}, | ||
|  | {number="57",value="0x0"},{number="58",value="0x0"}, | ||
|  | {number="59",value="0x0"},{number="60",value="0x0"}, | ||
|  | {number="61",value="0x0"},{number="62",value="0x0"}, | ||
|  | {number="63",value="0x0"},{number="64",value="0xfe00a300"}, | ||
|  | {number="65",value="0x29002"},{number="66",value="0x202f04b5"}, | ||
|  | {number="67",value="0xfe0043b0"},{number="68",value="0xfe00b3e4"}, | ||
|  | {number="69",value="0x20002b03"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC471"></A> | ||
|  | <H3> The <CODE>-data-read-memory</CODE> Command </H3> | ||
|  | <!--docid::SEC471::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC472"></A> | ||
|  | <H4> Synopsis                                                        </H4> | ||
|  | <!--docid::SEC472::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -data-read-memory [ -o <VAR>byte-offset</VAR> ] | ||
|  |    <VAR>address</VAR> <VAR>word-format</VAR> <VAR>word-size</VAR> | ||
|  |    <VAR>nr-rows</VAR> <VAR>nr-cols</VAR> [ <VAR>aschar</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | where: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`<VAR>address</VAR>'</SAMP> | ||
|  | <DD>An expression specifying the address of the first memory word to be | ||
|  | read.  Complex expressions containing embedded white space should be | ||
|  | quoted using the C convention. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>word-format</VAR>'</SAMP> | ||
|  | <DD>The format to be used to print the memory words.  The notation is the | ||
|  | same as for GDB's <CODE>print</CODE> command (see section <A HREF="gdb_9.html#SEC63">Output Formats</A>). | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>word-size</VAR>'</SAMP> | ||
|  | <DD>The size of each memory word in bytes. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>nr-rows</VAR>'</SAMP> | ||
|  | <DD>The number of rows in the output table. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>nr-cols</VAR>'</SAMP> | ||
|  | <DD>The number of columns in the output table. | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>aschar</VAR>'</SAMP> | ||
|  | <DD>If present, indicates that each row should include an ASCII dump.  The | ||
|  | value of <VAR>aschar</VAR> is used as a padding character when a byte is not a | ||
|  | member of the printable ASCII character set (printable ASCII | ||
|  | characters are those whose code is between 32 and 126, inclusively). | ||
|  | <P> | ||
|  | 
 | ||
|  | <DT><SAMP>`<VAR>byte-offset</VAR>'</SAMP> | ||
|  | <DD>An offset to add to the <VAR>address</VAR> before fetching memory. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | This command displays memory contents as a table of <VAR>nr-rows</VAR> by | ||
|  | <VAR>nr-cols</VAR> words, each word being <VAR>word-size</VAR> bytes.  In total, | ||
|  | <CODE><VAR>nr-rows</VAR> * <VAR>nr-cols</VAR> * <VAR>word-size</VAR></CODE> bytes are read | ||
|  | (returned as <SAMP>`total-bytes'</SAMP>).  Should less than the requested number | ||
|  | of bytes be returned by the target, the missing words are identified | ||
|  | using <SAMP>`N/A'</SAMP>.  The number of bytes read from the target is returned | ||
|  | in <SAMP>`nr-bytes'</SAMP> and the starting address used to read memory in | ||
|  | <SAMP>`addr'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The address of the next/previous row or page is available in | ||
|  | <SAMP>`next-row'</SAMP> and <SAMP>`prev-row'</SAMP>, <SAMP>`next-page'</SAMP> and | ||
|  | <SAMP>`prev-page'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC473"></A> | ||
|  | <H4> GDB Command                                          </H4> | ||
|  | <!--docid::SEC473::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`x'</SAMP>.  <CODE>gdbtk</CODE> has | ||
|  | <SAMP>`gdb_get_mem'</SAMP> memory read command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC474"></A> | ||
|  | <H4> Example                                             </H4> | ||
|  | <!--docid::SEC474::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Read six bytes of memory starting at <CODE>bytes+6</CODE> but then offset by | ||
|  | <CODE>-6</CODE> bytes.  Format as three rows of two columns.  One byte per | ||
|  | word.  Display each word in hex. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 9-data-read-memory -o -6 -- bytes+6 x 1 3 2 | ||
|  | 9^done,addr="0x00001390",nr-bytes="6",total-bytes="6", | ||
|  | next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396", | ||
|  | prev-page="0x0000138a",memory=[ | ||
|  | {addr="0x00001390",data=["0x00","0x01"]}, | ||
|  | {addr="0x00001392",data=["0x02","0x03"]}, | ||
|  | {addr="0x00001394",data=["0x04","0x05"]}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Read two bytes of memory starting at address <CODE>shorts + 64</CODE> and | ||
|  | display as a single word formatted in decimal. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 5-data-read-memory shorts+64 d 2 1 1 | ||
|  | 5^done,addr="0x00001510",nr-bytes="2",total-bytes="2", | ||
|  | next-row="0x00001512",prev-row="0x0000150e", | ||
|  | next-page="0x00001512",prev-page="0x0000150e",memory=[ | ||
|  | {addr="0x00001510",data=["128"]}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Read thirty two bytes of memory starting at <CODE>bytes+16</CODE> and format | ||
|  | as eight rows of four columns.  Include a string encoding with <SAMP>`x'</SAMP> | ||
|  | used as the non-printable character. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 4-data-read-memory bytes+16 x 1 8 4 x | ||
|  | 4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32", | ||
|  | next-row="0x000013c0",prev-row="0x0000139c", | ||
|  | next-page="0x000013c0",prev-page="0x00001380",memory=[ | ||
|  | {addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"}, | ||
|  | {addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"}, | ||
|  | {addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"}, | ||
|  | {addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"}, | ||
|  | {addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"}, | ||
|  | {addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"}, | ||
|  | {addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"}, | ||
|  | {addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Tracepoint Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC475"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC449"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC476"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.14 GDB/MI Tracepoint Commands </H2> | ||
|  | <!--docid::SEC475::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The tracepoint commands are not yet implemented. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Symbol Query"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC476"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC475"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC521"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.15 GDB/MI Symbol Query Commands </H2> | ||
|  | <!--docid::SEC476::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC477"></A> | ||
|  | <H3> The <CODE>-symbol-info-address</CODE> Command </H3> | ||
|  | <!--docid::SEC477::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC478"></A> | ||
|  | <H4> Synopsis                                                         </H4> | ||
|  | <!--docid::SEC478::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-info-address <VAR>symbol</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Describe where <VAR>symbol</VAR> is stored. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC479"></A> | ||
|  | <H4> GDB Command                                           </H4> | ||
|  | <!--docid::SEC479::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info address'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC480"></A> | ||
|  | <H4> Example                                              </H4> | ||
|  | <!--docid::SEC480::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC481"></A> | ||
|  | <H3> The <CODE>-symbol-info-file</CODE> Command </H3> | ||
|  | <!--docid::SEC481::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC482"></A> | ||
|  | <H4> Synopsis                                                          </H4> | ||
|  | <!--docid::SEC482::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-info-file | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show the file for the symbol. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC483"></A> | ||
|  | <H4> GDB Command                                            </H4> | ||
|  | <!--docid::SEC483::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | There's no equivalent GDB command.  <CODE>gdbtk</CODE> has | ||
|  | <SAMP>`gdb_find_file'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC484"></A> | ||
|  | <H4> Example                                               </H4> | ||
|  | <!--docid::SEC484::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC485"></A> | ||
|  | <H3> The <CODE>-symbol-info-function</CODE> Command </H3> | ||
|  | <!--docid::SEC485::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC486"></A> | ||
|  | <H4> Synopsis                                                           </H4> | ||
|  | <!--docid::SEC486::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-info-function | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show which function the symbol lives in. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC487"></A> | ||
|  | <H4> GDB Command                                             </H4> | ||
|  | <!--docid::SEC487::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <SAMP>`gdb_get_function'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC488"></A> | ||
|  | <H4> Example                                                </H4> | ||
|  | <!--docid::SEC488::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC489"></A> | ||
|  | <H3> The <CODE>-symbol-info-line</CODE> Command </H3> | ||
|  | <!--docid::SEC489::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC490"></A> | ||
|  | <H4> Synopsis                                                            </H4> | ||
|  | <!--docid::SEC490::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-info-line | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show the core addresses of the code for a source line. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC491"></A> | ||
|  | <H4> GDB Command                                              </H4> | ||
|  | <!--docid::SEC491::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info line'</SAMP>. | ||
|  | <CODE>gdbtk</CODE> has the <SAMP>`gdb_get_line'</SAMP> and <SAMP>`gdb_get_file'</SAMP> commands. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC492"></A> | ||
|  | <H4> Example                                                 </H4> | ||
|  | <!--docid::SEC492::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC493"></A> | ||
|  | <H3> The <CODE>-symbol-info-symbol</CODE> Command </H3> | ||
|  | <!--docid::SEC493::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC494"></A> | ||
|  | <H4> Synopsis                                                             </H4> | ||
|  | <!--docid::SEC494::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-info-symbol <VAR>addr</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Describe what symbol is at location <VAR>addr</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC495"></A> | ||
|  | <H4> GDB Command                                               </H4> | ||
|  | <!--docid::SEC495::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info symbol'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC496"></A> | ||
|  | <H4> Example                                                  </H4> | ||
|  | <!--docid::SEC496::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC497"></A> | ||
|  | <H3> The <CODE>-symbol-list-functions</CODE> Command </H3> | ||
|  | <!--docid::SEC497::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC498"></A> | ||
|  | <H4> Synopsis                                                              </H4> | ||
|  | <!--docid::SEC498::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-list-functions | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the functions in the executable. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC499"></A> | ||
|  | <H4> GDB Command                                                </H4> | ||
|  | <!--docid::SEC499::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <SAMP>`info functions'</SAMP> in GDB, <SAMP>`gdb_listfunc'</SAMP> and | ||
|  | <SAMP>`gdb_search'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC500"></A> | ||
|  | <H4> Example                                                   </H4> | ||
|  | <!--docid::SEC500::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC501"></A> | ||
|  | <H3> The <CODE>-symbol-list-lines</CODE> Command </H3> | ||
|  | <!--docid::SEC501::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC502"></A> | ||
|  | <H4> Synopsis                                                               </H4> | ||
|  | <!--docid::SEC502::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-list-lines <VAR>filename</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Print the list of lines that contain code and their associated program | ||
|  | addresses for the given source filename.  The entries are sorted in | ||
|  | ascending PC order. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC503"></A> | ||
|  | <H4> GDB Command                                                 </H4> | ||
|  | <!--docid::SEC503::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | There is no corresponding GDB command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC504"></A> | ||
|  | <H4> Example                                                    </H4> | ||
|  | <!--docid::SEC504::--> | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -symbol-list-lines basics.c | ||
|  | ^done,lines=[{pc="0x08048554",line="7"},{pc="0x0804855a",line="8"}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table><P> | ||
|  | 
 | ||
|  | <A NAME="SEC505"></A> | ||
|  | <H3> The <CODE>-symbol-list-types</CODE> Command </H3> | ||
|  | <!--docid::SEC505::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC506"></A> | ||
|  | <H4> Synopsis                                                                </H4> | ||
|  | <!--docid::SEC506::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-list-types | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List all the type names. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC507"></A> | ||
|  | <H4> GDB Command                                                  </H4> | ||
|  | <!--docid::SEC507::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding commands are <SAMP>`info types'</SAMP> in GDB, | ||
|  | <SAMP>`gdb_search'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC508"></A> | ||
|  | <H4> Example                                                     </H4> | ||
|  | <!--docid::SEC508::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC509"></A> | ||
|  | <H3> The <CODE>-symbol-list-variables</CODE> Command </H3> | ||
|  | <!--docid::SEC509::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC510"></A> | ||
|  | <H4> Synopsis                                                                 </H4> | ||
|  | <!--docid::SEC510::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-list-variables | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List all the global and static variable names. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC511"></A> | ||
|  | <H4> GDB Command                                                   </H4> | ||
|  | <!--docid::SEC511::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <SAMP>`info variables'</SAMP> in GDB, <SAMP>`gdb_search'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC512"></A> | ||
|  | <H4> Example                                                      </H4> | ||
|  | <!--docid::SEC512::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC513"></A> | ||
|  | <H3> The <CODE>-symbol-locate</CODE> Command </H3> | ||
|  | <!--docid::SEC513::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC514"></A> | ||
|  | <H4> Synopsis                                                                  </H4> | ||
|  | <!--docid::SEC514::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-locate | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC515"></A> | ||
|  | <H4> GDB Command                                                    </H4> | ||
|  | <!--docid::SEC515::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <SAMP>`gdb_loc'</SAMP> in <CODE>gdbtk</CODE>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC516"></A> | ||
|  | <H4> Example                                                       </H4> | ||
|  | <!--docid::SEC516::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC517"></A> | ||
|  | <H3> The <CODE>-symbol-type</CODE> Command </H3> | ||
|  | <!--docid::SEC517::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC518"></A> | ||
|  | <H4> Synopsis                                                                   </H4> | ||
|  | <!--docid::SEC518::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -symbol-type <VAR>variable</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show type of <VAR>variable</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC519"></A> | ||
|  | <H4> GDB Command                                                     </H4> | ||
|  | <!--docid::SEC519::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`ptype'</SAMP>, <CODE>gdbtk</CODE> has | ||
|  | <SAMP>`gdb_obj_variable'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC520"></A> | ||
|  | <H4> Example                                                        </H4> | ||
|  | <!--docid::SEC520::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI File Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC521"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC476"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC554"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.16 GDB/MI File Commands </H2> | ||
|  | <!--docid::SEC521::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | This section describes the GDB/MI commands to specify executable file names | ||
|  | and to read in and obtain symbol table information. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC522"></A> | ||
|  | <H3> The <CODE>-file-exec-and-symbols</CODE> Command </H3> | ||
|  | <!--docid::SEC522::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC523"></A> | ||
|  | <H4> Synopsis                                                                    </H4> | ||
|  | <!--docid::SEC523::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-exec-and-symbols <VAR>file</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Specify the executable file to be debugged.  This file is the one from | ||
|  | which the symbol table is also read.  If no file is specified, the | ||
|  | command clears the executable and symbol information.  If breakpoints | ||
|  | are set when using this command with no arguments, GDB will produce | ||
|  | error messages.  Otherwise, no output is produced, except a completion | ||
|  | notification. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC524"></A> | ||
|  | <H4> GDB Command                                                      </H4> | ||
|  | <!--docid::SEC524::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`file'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC525"></A> | ||
|  | <H4> Example                                                         </H4> | ||
|  | <!--docid::SEC525::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC526"></A> | ||
|  | <H3> The <CODE>-file-exec-file</CODE> Command </H3> | ||
|  | <!--docid::SEC526::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC527"></A> | ||
|  | <H4> Synopsis                                                                     </H4> | ||
|  | <!--docid::SEC527::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-exec-file <VAR>file</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Specify the executable file to be debugged.  Unlike | ||
|  | <SAMP>`-file-exec-and-symbols'</SAMP>, the symbol table is <EM>not</EM> read | ||
|  | from this file.  If used without argument, GDB clears the information | ||
|  | about the executable file.  No output is produced, except a completion | ||
|  | notification. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC528"></A> | ||
|  | <H4> GDB Command                                                       </H4> | ||
|  | <!--docid::SEC528::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`exec-file'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC529"></A> | ||
|  | <H4> Example                                                          </H4> | ||
|  | <!--docid::SEC529::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC530"></A> | ||
|  | <H3> The <CODE>-file-list-exec-sections</CODE> Command </H3> | ||
|  | <!--docid::SEC530::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC531"></A> | ||
|  | <H4> Synopsis                                                                      </H4> | ||
|  | <!--docid::SEC531::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-list-exec-sections | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the sections of the current executable file. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC532"></A> | ||
|  | <H4> GDB Command                                                        </H4> | ||
|  | <!--docid::SEC532::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The GDB command <SAMP>`info file'</SAMP> shows, among the rest, the same | ||
|  | information as this command.  <CODE>gdbtk</CODE> has a corresponding command | ||
|  | <SAMP>`gdb_load_info'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC533"></A> | ||
|  | <H4> Example                                                           </H4> | ||
|  | <!--docid::SEC533::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC534"></A> | ||
|  | <H3> The <CODE>-file-list-exec-source-file</CODE> Command </H3> | ||
|  | <!--docid::SEC534::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC535"></A> | ||
|  | <H4> Synopsis                                                                       </H4> | ||
|  | <!--docid::SEC535::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-list-exec-source-file | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the line number, the current source file, and the absolute path | ||
|  | to the current source file for the current executable.  The macro | ||
|  | information field has a value of <SAMP>`1'</SAMP> or <SAMP>`0'</SAMP> depending on | ||
|  | whether or not the file includes preprocessor macro information. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC536"></A> | ||
|  | <H4> GDB Command                                                         </H4> | ||
|  | <!--docid::SEC536::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The GDB equivalent is <SAMP>`info source'</SAMP> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC537"></A> | ||
|  | <H4> Example                                                            </H4> | ||
|  | <!--docid::SEC537::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | 123-file-list-exec-source-file | ||
|  | 123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC538"></A> | ||
|  | <H3> The <CODE>-file-list-exec-source-files</CODE> Command </H3> | ||
|  | <!--docid::SEC538::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC539"></A> | ||
|  | <H4> Synopsis                                                                        </H4> | ||
|  | <!--docid::SEC539::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-list-exec-source-files | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the source files for the current executable. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | It will always output the filename, but only when GDB can find | ||
|  | the absolute file name of a source file, will it output the fullname. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC540"></A> | ||
|  | <H4> GDB Command                                                          </H4> | ||
|  | <!--docid::SEC540::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The GDB equivalent is <SAMP>`info sources'</SAMP>. | ||
|  | <CODE>gdbtk</CODE> has an analogous command <SAMP>`gdb_listfiles'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC541"></A> | ||
|  | <H4> Example                                                             </H4> | ||
|  | <!--docid::SEC541::--> | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -file-list-exec-source-files | ||
|  | ^done,files=[ | ||
|  | {file=foo.c,fullname=/home/foo.c}, | ||
|  | {file=/home/bar.c,fullname=/home/bar.c}, | ||
|  | {file=gdb_could_not_find_fullpath.c}] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table><P> | ||
|  | 
 | ||
|  | <A NAME="SEC542"></A> | ||
|  | <H3> The <CODE>-file-list-shared-libraries</CODE> Command </H3> | ||
|  | <!--docid::SEC542::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC543"></A> | ||
|  | <H4> Synopsis                                                                         </H4> | ||
|  | <!--docid::SEC543::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-list-shared-libraries | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the shared libraries in the program. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC544"></A> | ||
|  | <H4> GDB Command                                                           </H4> | ||
|  | <!--docid::SEC544::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info shared'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC545"></A> | ||
|  | <H4> Example                                                              </H4> | ||
|  | <!--docid::SEC545::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC546"></A> | ||
|  | <H3> The <CODE>-file-list-symbol-files</CODE> Command </H3> | ||
|  | <!--docid::SEC546::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC547"></A> | ||
|  | <H4> Synopsis                                                                          </H4> | ||
|  | <!--docid::SEC547::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-list-symbol-files | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List symbol files. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC548"></A> | ||
|  | <H4> GDB Command                                                            </H4> | ||
|  | <!--docid::SEC548::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`info file'</SAMP> (part of it). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC549"></A> | ||
|  | <H4> Example                                                               </H4> | ||
|  | <!--docid::SEC549::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC550"></A> | ||
|  | <H3> The <CODE>-file-symbol-file</CODE> Command </H3> | ||
|  | <!--docid::SEC550::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC551"></A> | ||
|  | <H4> Synopsis                                                                           </H4> | ||
|  | <!--docid::SEC551::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -file-symbol-file <VAR>file</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Read symbol table info from the specified <VAR>file</VAR> argument.  When | ||
|  | used without arguments, clears GDB's symbol table info.  No output is | ||
|  | produced, except for a completion notification. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC552"></A> | ||
|  | <H4> GDB Command                                                             </H4> | ||
|  | <!--docid::SEC552::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`symbol-file'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC553"></A> | ||
|  | <H4> Example                                                                </H4> | ||
|  | <!--docid::SEC553::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Target Manipulation"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC554"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC521"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC595"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.17 GDB/MI Target Manipulation Commands </H2> | ||
|  | <!--docid::SEC554::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC555"></A> | ||
|  | <H3> The <CODE>-target-attach</CODE> Command </H3> | ||
|  | <!--docid::SEC555::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC556"></A> | ||
|  | <H4> Synopsis                                                                            </H4> | ||
|  | <!--docid::SEC556::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-attach <VAR>pid</VAR> | <VAR>file</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Attach to a process <VAR>pid</VAR> or a file <VAR>file</VAR> outside of GDB. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC557"></A> | ||
|  | <H4> GDB Command                                                              </H4> | ||
|  | <!--docid::SEC557::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`attach'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC558"></A> | ||
|  | <H4> Example                                                                 </H4> | ||
|  | <!--docid::SEC558::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC559"></A> | ||
|  | <H3> The <CODE>-target-compare-sections</CODE> Command </H3> | ||
|  | <!--docid::SEC559::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC560"></A> | ||
|  | <H4> Synopsis                                                                             </H4> | ||
|  | <!--docid::SEC560::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-compare-sections [ <VAR>section</VAR> ] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Compare data of section <VAR>section</VAR> on target to the exec file. | ||
|  | Without the argument, all sections are compared. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC561"></A> | ||
|  | <H4> GDB Command                                                               </H4> | ||
|  | <!--docid::SEC561::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The GDB equivalent is <SAMP>`compare-sections'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC562"></A> | ||
|  | <H4> Example                                                                  </H4> | ||
|  | <!--docid::SEC562::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC563"></A> | ||
|  | <H3> The <CODE>-target-detach</CODE> Command </H3> | ||
|  | <!--docid::SEC563::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC564"></A> | ||
|  | <H4> Synopsis                                                                              </H4> | ||
|  | <!--docid::SEC564::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-detach | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Detach from the remote target which normally resumes its execution. | ||
|  | There's no output. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC565"></A> | ||
|  | <H4> GDB Command                                                                </H4> | ||
|  | <!--docid::SEC565::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`detach'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC566"></A> | ||
|  | <H4> Example                                                                   </H4> | ||
|  | <!--docid::SEC566::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-detach | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC567"></A> | ||
|  | <H3> The <CODE>-target-disconnect</CODE> Command </H3> | ||
|  | <!--docid::SEC567::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC568"></A> | ||
|  | <H4> Synopsis                                                                               </H4> | ||
|  | <!--docid::SEC568::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-disconnect | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Disconnect from the remote target.  There's no output and the target is | ||
|  | generally not resumed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC569"></A> | ||
|  | <H4> GDB Command                                                                 </H4> | ||
|  | <!--docid::SEC569::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`disconnect'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC570"></A> | ||
|  | <H4> Example                                                                    </H4> | ||
|  | <!--docid::SEC570::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-disconnect | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC571"></A> | ||
|  | <H3> The <CODE>-target-download</CODE> Command </H3> | ||
|  | <!--docid::SEC571::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC572"></A> | ||
|  | <H4> Synopsis                                                                                </H4> | ||
|  | <!--docid::SEC572::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-download | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Loads the executable onto the remote target. | ||
|  | It prints out an update message every half second, which includes the fields: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`section'</SAMP> | ||
|  | <DD>The name of the section. | ||
|  | <DT><SAMP>`section-sent'</SAMP> | ||
|  | <DD>The size of what has been sent so far for that section. | ||
|  | <DT><SAMP>`section-size'</SAMP> | ||
|  | <DD>The size of the section. | ||
|  | <DT><SAMP>`total-sent'</SAMP> | ||
|  | <DD>The total size of what was sent so far (the current and the previous sections). | ||
|  | <DT><SAMP>`total-size'</SAMP> | ||
|  | <DD>The size of the overall executable to download. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | Each message is sent as status record (see section <A HREF="gdb_25.html#SEC247">GDB/MI Output Syntax</A>). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | In addition, it prints the name and size of the sections, as they are | ||
|  | downloaded.  These messages include the following fields: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`section'</SAMP> | ||
|  | <DD>The name of the section. | ||
|  | <DT><SAMP>`section-size'</SAMP> | ||
|  | <DD>The size of the section. | ||
|  | <DT><SAMP>`total-size'</SAMP> | ||
|  | <DD>The size of the overall executable to download. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | At the end, a summary is printed. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC573"></A> | ||
|  | <H4> GDB Command                                                                  </H4> | ||
|  | <!--docid::SEC573::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`load'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC574"></A> | ||
|  | <H4> Example                                                                     </H4> | ||
|  | <!--docid::SEC574::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Note: each status message appears on a single line.  Here the messages | ||
|  | have been broken down so that they can fit onto a page. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-download | ||
|  | +download,{section=".text",section-size="6668",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="512",section-size="6668", | ||
|  | total-sent="512",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="1024",section-size="6668", | ||
|  | total-sent="1024",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="1536",section-size="6668", | ||
|  | total-sent="1536",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="2048",section-size="6668", | ||
|  | total-sent="2048",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="2560",section-size="6668", | ||
|  | total-sent="2560",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="3072",section-size="6668", | ||
|  | total-sent="3072",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="3584",section-size="6668", | ||
|  | total-sent="3584",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="4096",section-size="6668", | ||
|  | total-sent="4096",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="4608",section-size="6668", | ||
|  | total-sent="4608",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="5120",section-size="6668", | ||
|  | total-sent="5120",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="5632",section-size="6668", | ||
|  | total-sent="5632",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="6144",section-size="6668", | ||
|  | total-sent="6144",total-size="9880"} | ||
|  | +download,{section=".text",section-sent="6656",section-size="6668", | ||
|  | total-sent="6656",total-size="9880"} | ||
|  | +download,{section=".init",section-size="28",total-size="9880"} | ||
|  | +download,{section=".fini",section-size="28",total-size="9880"} | ||
|  | +download,{section=".data",section-size="3156",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="512",section-size="3156", | ||
|  | total-sent="7236",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="1024",section-size="3156", | ||
|  | total-sent="7748",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="1536",section-size="3156", | ||
|  | total-sent="8260",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="2048",section-size="3156", | ||
|  | total-sent="8772",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="2560",section-size="3156", | ||
|  | total-sent="9284",total-size="9880"} | ||
|  | +download,{section=".data",section-sent="3072",section-size="3156", | ||
|  | total-sent="9796",total-size="9880"} | ||
|  | ^done,address="0x10004",load-size="9880",transfer-rate="6586", | ||
|  | write-rate="429" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC575"></A> | ||
|  | <H3> The <CODE>-target-exec-status</CODE> Command </H3> | ||
|  | <!--docid::SEC575::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC576"></A> | ||
|  | <H4> Synopsis                                                                                 </H4> | ||
|  | <!--docid::SEC576::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-exec-status | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Provide information on the state of the target (whether it is running or | ||
|  | not, for instance). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC577"></A> | ||
|  | <H4> GDB Command                                                                   </H4> | ||
|  | <!--docid::SEC577::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | There's no equivalent GDB command. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC578"></A> | ||
|  | <H4> Example                                                                      </H4> | ||
|  | <!--docid::SEC578::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC579"></A> | ||
|  | <H3> The <CODE>-target-list-available-targets</CODE> Command </H3> | ||
|  | <!--docid::SEC579::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC580"></A> | ||
|  | <H4> Synopsis                                                                                  </H4> | ||
|  | <!--docid::SEC580::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-list-available-targets | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | List the possible targets to connect to. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC581"></A> | ||
|  | <H4> GDB Command                                                                    </H4> | ||
|  | <!--docid::SEC581::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`help target'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC582"></A> | ||
|  | <H4> Example                                                                       </H4> | ||
|  | <!--docid::SEC582::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC583"></A> | ||
|  | <H3> The <CODE>-target-list-current-targets</CODE> Command </H3> | ||
|  | <!--docid::SEC583::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC584"></A> | ||
|  | <H4> Synopsis                                                                                   </H4> | ||
|  | <!--docid::SEC584::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-list-current-targets | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Describe the current target. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC585"></A> | ||
|  | <H4> GDB Command                                                                     </H4> | ||
|  | <!--docid::SEC585::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding information is printed by <SAMP>`info file'</SAMP> (among | ||
|  | other things). | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC586"></A> | ||
|  | <H4> Example                                                                        </H4> | ||
|  | <!--docid::SEC586::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC587"></A> | ||
|  | <H3> The <CODE>-target-list-parameters</CODE> Command </H3> | ||
|  | <!--docid::SEC587::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC588"></A> | ||
|  | <H4> Synopsis                                                                                    </H4> | ||
|  | <!--docid::SEC588::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-list-parameters | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC589"></A> | ||
|  | <H4> GDB Command                                                                      </H4> | ||
|  | <!--docid::SEC589::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | No equivalent. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC590"></A> | ||
|  | <H4> Example                                                                         </H4> | ||
|  | <!--docid::SEC590::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC591"></A> | ||
|  | <H3> The <CODE>-target-select</CODE> Command </H3> | ||
|  | <!--docid::SEC591::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC592"></A> | ||
|  | <H4> Synopsis                                                                                     </H4> | ||
|  | <!--docid::SEC592::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-select <VAR>type</VAR> <VAR>parameters <small>...</small></VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Connect GDB to the remote target.  This command takes two args: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <DL COMPACT> | ||
|  | <DT><SAMP>`<VAR>type</VAR>'</SAMP> | ||
|  | <DD>The type of target, for instance <SAMP>`async'</SAMP>, <SAMP>`remote'</SAMP>, etc. | ||
|  | <DT><SAMP>`<VAR>parameters</VAR>'</SAMP> | ||
|  | <DD>Device names, host names and the like.  See section <A HREF="gdb_17.html#SEC160">Commands for Managing Targets</A>, for more details. | ||
|  | </DL> | ||
|  | <P> | ||
|  | 
 | ||
|  | The output is a connection notification, followed by the address at | ||
|  | which the target program is, in the following form: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>^connected,addr="<VAR>address</VAR>",func="<VAR>function name</VAR>", | ||
|  |   args=[<VAR>arg list</VAR>] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC593"></A> | ||
|  | <H4> GDB Command                                                                       </H4> | ||
|  | <!--docid::SEC593::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`target'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC594"></A> | ||
|  | <H4> Example                                                                          </H4> | ||
|  | <!--docid::SEC594::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-select async /dev/ttya | ||
|  | ^connected,addr="0xfe00a300",func="??",args=[] | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI File Transfer Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC595"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC554"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC608"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.18 GDB/MI File Transfer Commands </H2> | ||
|  | <!--docid::SEC595::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC596"></A> | ||
|  | <H3> The <CODE>-target-file-put</CODE> Command </H3> | ||
|  | <!--docid::SEC596::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC597"></A> | ||
|  | <H4> Synopsis                                                                                      </H4> | ||
|  | <!--docid::SEC597::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-file-put <VAR>hostfile</VAR> <VAR>targetfile</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Copy file <VAR>hostfile</VAR> from the host system (the machine running | ||
|  | GDB) to <VAR>targetfile</VAR> on the target system. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC598"></A> | ||
|  | <H4> GDB Command                                                                        </H4> | ||
|  | <!--docid::SEC598::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`remote put'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC599"></A> | ||
|  | <H4> Example                                                                           </H4> | ||
|  | <!--docid::SEC599::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-file-put localfile remotefile | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC600"></A> | ||
|  | <H3> The <CODE>-target-file-put</CODE> Command  </H3> | ||
|  | <!--docid::SEC600::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC601"></A> | ||
|  | <H4> Synopsis                                                                                       </H4> | ||
|  | <!--docid::SEC601::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-file-get <VAR>targetfile</VAR> <VAR>hostfile</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Copy file <VAR>targetfile</VAR> from the target system to <VAR>hostfile</VAR> | ||
|  | on the host system. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC602"></A> | ||
|  | <H4> GDB Command                                                                         </H4> | ||
|  | <!--docid::SEC602::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`remote get'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC603"></A> | ||
|  | <H4> Example                                                                            </H4> | ||
|  | <!--docid::SEC603::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-file-get remotefile localfile | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC604"></A> | ||
|  | <H3> The <CODE>-target-file-delete</CODE> Command </H3> | ||
|  | <!--docid::SEC604::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC605"></A> | ||
|  | <H4> Synopsis                                                                                        </H4> | ||
|  | <!--docid::SEC605::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -target-file-delete <VAR>targetfile</VAR> | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Delete <VAR>targetfile</VAR> from the target system. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC606"></A> | ||
|  | <H4> GDB Command                                                                          </H4> | ||
|  | <!--docid::SEC606::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`remote delete'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC607"></A> | ||
|  | <H4> Example                                                                             </H4> | ||
|  | <!--docid::SEC607::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -target-file-delete remotefile | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="GDB/MI Miscellaneous Commands"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <A NAME="SEC608"></A> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC595"> < </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> > </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">   <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC242"> Up </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> 24.19 Miscellaneous GDB/MI Commands </H2> | ||
|  | <!--docid::SEC608::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC609"></A> | ||
|  | <H3> The <CODE>-gdb-exit</CODE> Command </H3> | ||
|  | <!--docid::SEC609::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC610"></A> | ||
|  | <H4> Synopsis                                                                                         </H4> | ||
|  | <!--docid::SEC610::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -gdb-exit | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Exit GDB immediately. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC611"></A> | ||
|  | <H4> GDB Command                                                                           </H4> | ||
|  | <!--docid::SEC611::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Approximately corresponds to <SAMP>`quit'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC612"></A> | ||
|  | <H4> Example                                                                              </H4> | ||
|  | <!--docid::SEC612::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -gdb-exit | ||
|  | ^exit | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC613"></A> | ||
|  | <H3> The <CODE>-exec-abort</CODE> Command </H3> | ||
|  | <!--docid::SEC613::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC614"></A> | ||
|  | <H4> Synopsis                                                                                          </H4> | ||
|  | <!--docid::SEC614::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -exec-abort | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Kill the inferior running program. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC615"></A> | ||
|  | <H4> GDB Command                                                                            </H4> | ||
|  | <!--docid::SEC615::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`kill'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC616"></A> | ||
|  | <H4> Example                                                                               </H4> | ||
|  | <!--docid::SEC616::--> | ||
|  | N.A. | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC617"></A> | ||
|  | <H3> The <CODE>-gdb-set</CODE> Command </H3> | ||
|  | <!--docid::SEC617::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC618"></A> | ||
|  | <H4> Synopsis                                                                                           </H4> | ||
|  | <!--docid::SEC618::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -gdb-set | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Set an internal GDB variable. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC619"></A> | ||
|  | <H4> GDB Command                                                                             </H4> | ||
|  | <!--docid::SEC619::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`set'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC620"></A> | ||
|  | <H4> Example                                                                                </H4> | ||
|  | <!--docid::SEC620::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -gdb-set $foo=3 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC621"></A> | ||
|  | <H3> The <CODE>-gdb-show</CODE> Command </H3> | ||
|  | <!--docid::SEC621::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC622"></A> | ||
|  | <H4> Synopsis                                                                                            </H4> | ||
|  | <!--docid::SEC622::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -gdb-show | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show the current value of a GDB variable. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC623"></A> | ||
|  | <H4> GDB Command                                                                              </H4> | ||
|  | <!--docid::SEC623::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`show'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC624"></A> | ||
|  | <H4> Example                                                                                 </H4> | ||
|  | <!--docid::SEC624::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -gdb-show annotate | ||
|  | ^done,value="0" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC625"></A> | ||
|  | <H3> The <CODE>-gdb-version</CODE> Command </H3> | ||
|  | <!--docid::SEC625::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC626"></A> | ||
|  | <H4> Synopsis                                                                                             </H4> | ||
|  | <!--docid::SEC626::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> -gdb-version | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show version information for GDB.  Used mostly in testing. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC627"></A> | ||
|  | <H4> GDB Command                                                                               </H4> | ||
|  | <!--docid::SEC627::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The GDB equivalent is <SAMP>`show version'</SAMP>.  GDB by | ||
|  | default shows this information when you start an interactive session. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC628"></A> | ||
|  | <H4> Example                                                                                  </H4> | ||
|  | <!--docid::SEC628::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -gdb-version | ||
|  | ~GNU gdb 5.2.1 | ||
|  | ~Copyright 2000 Free Software Foundation, Inc. | ||
|  | ~GDB is free software, covered by the GNU General Public License, and | ||
|  | ~you are welcome to change it and/or distribute copies of it under | ||
|  | ~ certain conditions. | ||
|  | ~Type "show copying" to see the conditions. | ||
|  | ~There is absolutely no warranty for GDB.  Type "show warranty" for | ||
|  | ~ details. | ||
|  | ~This GDB was configured as | ||
|  |  "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi". | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC629"></A> | ||
|  | <H3> The <CODE>-list-features</CODE> Command </H3> | ||
|  | <!--docid::SEC629::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | Returns a list of particular features of the MI protocol that | ||
|  | this version of gdb implements.  A feature can be a command, | ||
|  | or a new field in an output of some command, or even an | ||
|  | important bugfix.  While a frontend can sometimes detect presence | ||
|  | of a feature at runtime, it is easier to perform detection at debugger | ||
|  | startup.  | ||
|  | </P><P> | ||
|  | 
 | ||
|  | The command returns a list of strings, with each string naming an | ||
|  | available feature.  Each returned string is just a name, it does not | ||
|  | have any internal structure.  The list of possible feature names  | ||
|  | is given below. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Example output: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) -list-features | ||
|  | ^done,result=["feature1","feature2"] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | The current list of features is: | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <UL> | ||
|  | <LI> | ||
|  | <SAMP>`frozen-varobjs'</SAMP>---indicates presence of the | ||
|  | <CODE>-var-set-frozen</CODE> command, as well as possible presense of the | ||
|  | <CODE>frozen</CODE> field in the output of <CODE>-varobj-create</CODE>. | ||
|  | <LI> | ||
|  | <SAMP>`pending-breakpoints'</SAMP>---indicates presence of the <CODE>-f</CODE> | ||
|  | option to the <CODE>-break-insert</CODE> command. | ||
|  | <P> | ||
|  | 
 | ||
|  | </UL> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC630"></A> | ||
|  | <H3> The <CODE>-interpreter-exec</CODE> Command </H3> | ||
|  | <!--docid::SEC630::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC631"></A> | ||
|  | <H3> Synopsis                                                                                              </H3> | ||
|  | <!--docid::SEC631::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-interpreter-exec <VAR>interpreter</VAR> <VAR>command</VAR> | ||
|  | </FONT></pre></td></tr></table><A NAME="-interpreter-exec"></A> | ||
|  | </P><P> | ||
|  | 
 | ||
|  | Execute the specified <VAR>command</VAR> in the given <VAR>interpreter</VAR>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC632"></A> | ||
|  | <H3> GDB Command                                                                                </H3> | ||
|  | <!--docid::SEC632::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`interpreter-exec'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC633"></A> | ||
|  | <H3> Example                                                                                   </H3> | ||
|  | <!--docid::SEC633::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -interpreter-exec console "break main" | ||
|  | &"During symbol reading, couldn't parse type; debugger out of date?.\n" | ||
|  | &"During symbol reading, bad structure-type format.\n" | ||
|  | ~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n" | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC634"></A> | ||
|  | <H3> The <CODE>-inferior-tty-set</CODE> Command </H3> | ||
|  | <!--docid::SEC634::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC635"></A> | ||
|  | <H3> Synopsis                                                                                               </H3> | ||
|  | <!--docid::SEC635::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-inferior-tty-set /dev/pts/1 | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Set terminal for future runs of the program being debugged. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC636"></A> | ||
|  | <H3> GDB Command                                                                                 </H3> | ||
|  | <!--docid::SEC636::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`set inferior-tty'</SAMP> /dev/pts/1. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC637"></A> | ||
|  | <H3> Example                                                                                    </H3> | ||
|  | <!--docid::SEC637::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -inferior-tty-set /dev/pts/1 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC638"></A> | ||
|  | <H3> The <CODE>-inferior-tty-show</CODE> Command </H3> | ||
|  | <!--docid::SEC638::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC639"></A> | ||
|  | <H3> Synopsis                                                                                                </H3> | ||
|  | <!--docid::SEC639::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-inferior-tty-show | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Show terminal for future runs of program being debugged. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC640"></A> | ||
|  | <H3> GDB Command                                                                                  </H3> | ||
|  | <!--docid::SEC640::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | The corresponding GDB command is <SAMP>`show inferior-tty'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC641"></A> | ||
|  | <H3> Example                                                                                     </H3> | ||
|  | <!--docid::SEC641::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -inferior-tty-set /dev/pts/1 | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -inferior-tty-show | ||
|  | ^done,inferior_tty_terminal="/dev/pts/1" | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC642"></A> | ||
|  | <H3> The <CODE>-enable-timings</CODE> Command </H3> | ||
|  | <!--docid::SEC642::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <A NAME="SEC643"></A> | ||
|  | <H3> Synopsis                                                                                                 </H3> | ||
|  | <!--docid::SEC643::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>-enable-timings [yes | no] | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | Toggle the printing of the wallclock, user and system times for an MI | ||
|  | command as a field in its output.  This command is to help frontend | ||
|  | developers optimize the performance of their code.  No argument is | ||
|  | equivalent to <SAMP>`yes'</SAMP>. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC644"></A> | ||
|  | <H3> GDB Command                                                                                   </H3> | ||
|  | <!--docid::SEC644::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | No equivalent. | ||
|  | </P><P> | ||
|  | 
 | ||
|  | <A NAME="SEC645"></A> | ||
|  | <H3> Example                                                                                      </H3> | ||
|  | <!--docid::SEC645::--> | ||
|  | <P> | ||
|  | 
 | ||
|  | <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre>(gdb) | ||
|  | -enable-timings | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -break-insert main | ||
|  | ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y", | ||
|  | addr="0x080484ed",func="main",file="myprog.c", | ||
|  | fullname="/home/nickrob/myprog.c",line="73",times="0"}, | ||
|  | time={wallclock="0.05185",user="0.00800",system="0.00000"} | ||
|  | (gdb) | ||
|  | -enable-timings no | ||
|  | ^done | ||
|  | (gdb) | ||
|  | -exec-run | ||
|  | ^running | ||
|  | (gdb) | ||
|  | *stopped,reason="breakpoint-hit",bkptno="1",thread-id="0", | ||
|  | frame={addr="0x080484ed",func="main",args=[{name="argc",value="1"}, | ||
|  | {name="argv",value="0xbfb60364"}],file="myprog.c", | ||
|  | fullname="/home/nickrob/myprog.c",line="73"} | ||
|  | (gdb) | ||
|  | </FONT></pre></td></tr></table></P><P> | ||
|  | 
 | ||
|  | <A NAME="Annotations"></A> | ||
|  | <HR SIZE="6"> | ||
|  | <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> | ||
|  | <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_25.html#SEC248"> << </A>]</TD> | ||
|  | <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="gdb_26.html#SEC646"> >> </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> |