1 @c \input texinfo @c -*-texinfo-*-
2 @c @c %**start of header
3 @c @setfilename gdbmi.info
4 @c @settitle GDB/MI Machine Interface
5 @c @setchapternewpage off
9 @c This file documents GDB/MI, a Machine Interface to GDB.
11 @c Copyright 2000, 2001 Free Software Foundation, Inc.
12 @c Contributed by Cygnus Solutions.
14 @c Permission is granted to copy, distribute and/or modify this document
15 @c under the terms of the GNU Free Documentation License, Version 1.1 or
16 @c any later version published by the Free Software Foundation; with no
17 @c Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
18 @c and with the Back-Cover Texts as in (a) below.
20 @c (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
21 @c this GNU Manual, like GNU software. Copies published by the Free
22 @c Software Foundation raise funds for GNU development.''
25 @c @c This title page illustrates only one of the
26 @c @c two methods of forming a title page.
30 @c @subtitle Version 0.3
32 @c @author Andrew Cagney, Fernando Nasser and Elena Zannoni
34 @c @c The following two commands
35 @c @c start the copyright page.
37 @c @vskip 0pt plus 1filll
39 @c Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc.
41 @c Permission is granted to copy, distribute and/or modify this document
42 @c under the terms of the GNU Free Documentation License, Version 1.1 or
43 @c any later version published by the Free Software Foundation; with no
44 @c Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
45 @c and with the Back-Cover Texts as in (a) below.
47 @c (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
48 @c this GNU Manual, like GNU software. Copies published by the Free
49 @c Software Foundation raise funds for GNU development.''
52 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% CHAPTER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54 @chapter The @sc{gdb/mi} Interface
56 @unnumberedsec Function and Purpose
58 @cindex @sc{gdb/mi}, its purpose
59 @sc{gdb/mi} is a line based machine oriented text interface to @value{GDBN}. It is
60 specifically intended to support the development of systems which use
61 the debugger as just one small component of a larger system.
63 This chapter is a specification of the @sc{gdb/mi} interface. It is written
64 in the form of a reference manual.
66 Note that @sc{gdb/mi} is still under construction, so some of the
67 features described below are incomplete and subject to change.
69 @unnumberedsec Notation and Terminology
71 @cindex notational conventions, for @sc{gdb/mi}
72 This chapter uses the following notation:
76 @code{|} separates two alternatives.
79 @code{[ @var{something} ]} indicates that @var{something} is optional:
80 it may or may not be given.
83 @code{( @var{group} )*} means that @var{group} inside the parentheses
84 may repeat zero or more times.
87 @code{( @var{group} )+} means that @var{group} inside the parentheses
88 may repeat one or more times.
91 @code{"@var{string}"} means a literal @var{string}.
98 @heading Acknowledgments
100 In alphabetic order: Andrew Cagney, Fernando Nasser, Stan Shebs and
104 * GDB/MI Command Syntax::
105 * GDB/MI Compatibility with CLI::
106 * GDB/MI Output Records::
107 * GDB/MI Command Description Format::
108 * GDB/MI Breakpoint Table Commands::
109 * GDB/MI Data Manipulation::
110 * GDB/MI Program Control::
111 * GDB/MI Miscellaneous Commands::
113 * GDB/MI Kod Commands::
114 * GDB/MI Memory Overlay Commands::
115 * GDB/MI Signal Handling Commands::
117 * GDB/MI Stack Manipulation::
118 * GDB/MI Symbol Query::
119 * GDB/MI Target Manipulation::
120 * GDB/MI Thread Commands::
121 * GDB/MI Tracepoint Commands::
122 * GDB/MI Variable Objects::
125 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
126 @node GDB/MI Command Syntax
127 @section @sc{gdb/mi} Command Syntax
130 * GDB/MI Input Syntax::
131 * GDB/MI Output Syntax::
132 * GDB/MI Simple Examples::
135 @node GDB/MI Input Syntax
136 @subsection @sc{gdb/mi} Input Syntax
138 @cindex input syntax for @sc{gdb/mi}
139 @cindex @sc{gdb/mi}, input syntax
141 @item @var{command} @expansion{}
142 @code{@var{cli-command} | @var{mi-command}}
144 @item @var{cli-command} @expansion{}
145 @code{[ @var{token} ] @var{cli-command} @var{nl}}, where
146 @var{cli-command} is any existing @value{GDBN} CLI command.
148 @item @var{mi-command} @expansion{}
149 @code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
150 @code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
152 @item @var{token} @expansion{}
153 "any sequence of digits"
155 @item @var{option} @expansion{}
156 @code{"-" @var{parameter} [ " " @var{parameter} ]}
158 @item @var{parameter} @expansion{}
159 @code{@var{non-blank-sequence} | @var{c-string}}
161 @item @var{operation} @expansion{}
162 @emph{any of the operations described in this chapter}
164 @item @var{non-blank-sequence} @expansion{}
165 @emph{anything, provided it doesn't contain special characters such as
166 "-", @var{nl}, """ and of course " "}
168 @item @var{c-string} @expansion{}
169 @code{""" @var{seven-bit-iso-c-string-content} """}
171 @item @var{nl} @expansion{}
180 The CLI commands are still handled by the @sc{mi} interpreter; their
181 output is described below.
184 The @code{@var{token}}, when present, is passed back when the command
188 Some @sc{mi} commands accept optional arguments as part of the parameter
189 list. Each option is identified by a leading @samp{-} (dash) and may be
190 followed by an optional argument parameter. Options occur first in the
191 parameter list and can be delimited from normal parameters using
192 @samp{--} (this is useful when some parameters begin with a dash).
199 We want easy access to the existing CLI syntax (for debugging).
202 We want it to be easy to spot a @sc{mi} operation.
205 @node GDB/MI Output Syntax
206 @subsection @sc{gdb/mi} Output Syntax
208 @cindex output syntax of @sc{gdb/mi}
209 @cindex @sc{gdb/mi}, output syntax
210 The output from @sc{gdb/mi} consists of zero or more out-of-band records
211 followed, optionally, by a single result record. This result record
212 is for the most recent command. The sequence of output records is
213 terminated by @samp{(@value{GDBP})}.
215 If an input command was prefixed with a @code{@var{token}} then the
216 corresponding output for that command will also be prefixed by that same
220 @item @var{output} @expansion{}
221 @code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
223 @item @var{result-record} @expansion{}
224 @code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
226 @item @var{out-of-band-record} @expansion{}
227 @code{@var{async-record} | @var{stream-record}}
229 @item @var{async-record} @expansion{}
230 @code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
232 @item @var{exec-async-output} @expansion{}
233 @code{[ @var{token} ] "*" @var{async-output}}
235 @item @var{status-async-output} @expansion{}
236 @code{[ @var{token} ] "+" @var{async-output}}
238 @item @var{notify-async-output} @expansion{}
239 @code{[ @var{token} ] "=" @var{async-output}}
241 @item @var{async-output} @expansion{}
242 @code{@var{async-class} ( "," @var{result} )* @var{nl}}
244 @item @var{result-class} @expansion{}
245 @code{"done" | "running" | "connected" | "error" | "exit"}
247 @item @var{async-class} @expansion{}
248 @code{"stopped" | @var{others}} (where @var{others} will be added
249 depending on the needs---this is still in development).
251 @item @var{result} @expansion{}
252 @code{ @var{variable} "=" @var{value}}
254 @item @var{variable} @expansion{}
255 @code{ @var{string} }
257 @item @var{value} @expansion{}
258 @code{ @var{const} | @var{tuple} | @var{list} }
260 @item @var{const} @expansion{}
261 @code{@var{c-string}}
263 @item @var{tuple} @expansion{}
264 @code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
266 @item @var{list} @expansion{}
267 @code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
268 @var{result} ( "," @var{result} )* "]" }
270 @item @var{stream-record} @expansion{}
271 @code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
273 @item @var{console-stream-output} @expansion{}
274 @code{"~" @var{c-string}}
276 @item @var{target-stream-output} @expansion{}
277 @code{"@@" @var{c-string}}
279 @item @var{log-stream-output} @expansion{}
280 @code{"&" @var{c-string}}
282 @item @var{nl} @expansion{}
285 @item @var{token} @expansion{}
286 @emph{any sequence of digits}.
294 All output sequences end in a single line containing a period.
297 The @code{@var{token}} is from the corresponding request. If an execution
298 command is interrupted by the @samp{-exec-interrupt} command, the
299 @var{token} associated with the @samp{*stopped} message is the one of the
300 original execution command, not the one of the interrupt command.
303 @cindex status output in @sc{gdb/mi}
304 @var{status-async-output} contains on-going status information about the
305 progress of a slow operation. It can be discarded. All status output is
306 prefixed by @samp{+}.
309 @cindex async output in @sc{gdb/mi}
310 @var{exec-async-output} contains asynchronous state change on the target
311 (stopped, started, disappeared). All async output is prefixed by
315 @cindex notify output in @sc{gdb/mi}
316 @var{notify-async-output} contains supplementary information that the
317 client should handle (e.g., a new breakpoint information). All notify
318 output is prefixed by @samp{=}.
321 @cindex console output in @sc{gdb/mi}
322 @var{console-stream-output} is output that should be displayed as is in the
323 console. It is the textual response to a CLI command. All the console
324 output is prefixed by @samp{~}.
327 @cindex target output in @sc{gdb/mi}
328 @var{target-stream-output} is the output produced by the target program.
329 All the target output is prefixed by @samp{@@}.
332 @cindex log output in @sc{gdb/mi}
333 @var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
334 instance messages that should be displayed as part of an error log. All
335 the log output is prefixed by @samp{&}.
338 @cindex list output in @sc{gdb/mi}
339 New @sc{gdb/mi} commands should only output @var{lists} containing
345 @xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
346 details about the various output records.
348 @node GDB/MI Simple Examples
349 @subsection Simple Examples of @sc{gdb/mi} Interaction
350 @cindex @sc{gdb/mi}, simple examples
352 This subsection presents several simple examples of interaction using
353 the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
354 following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
355 the output received from @sc{gdb/mi}.
357 @subsubheading Target Stop
359 Here's an example of stopping the inferior process:
370 <- *stop,reason="stop",address="0x123",source="a.c:123"
374 @subsubheading Simple CLI Command
376 Here's an example of a simple CLI command being passed through
377 @sc{gdb/mi} and on to the CLI.
385 @subsubheading Command With Side Effects
388 -> -symbol-file xyz.exe
389 <- *breakpoint,nr="3",address="0x123",source="a.c:123"
393 @subsubheading A Bad Command
395 Here's what happens if you pass a non-existent command:
399 <- error,"Rubbish not found"
403 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
404 @node GDB/MI Compatibility with CLI
405 @section @sc{gdb/mi} Compatibility with CLI
407 @cindex compatibility, @sc{gdb/mi} and CLI
408 @cindex @sc{gdb/mi}, compatibility with CLI
409 To help users familiar with @value{GDBN}'s existing CLI interface, @sc{gdb/mi}
410 accepts existing CLI commands. As specified by the syntax, such
411 commands can be directly entered into the @sc{gdb/mi} interface and @value{GDBN} will
414 This mechanism is provided as an aid to developers of @sc{gdb/mi}
415 clients and not as a reliable interface into the CLI. Since the command
416 is being interpreteted in an environment that assumes @sc{gdb/mi}
417 behaviour, the exact output of such commands is likely to end up being
418 an un-supported hybrid of @sc{gdb/mi} and CLI output.
420 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
421 @node GDB/MI Output Records
422 @section @sc{gdb/mi} Output Records
425 * GDB/MI Result Records::
426 * GDB/MI Stream Records::
427 * GDB/MI Out-of-band Records::
430 @node GDB/MI Result Records
431 @subsection @sc{gdb/mi} Result Records
433 @cindex result records in @sc{gdb/mi}
434 @cindex @sc{gdb/mi}, result records
435 In addition to a number of out-of-band notifications, the response to a
436 @sc{gdb/mi} command includes one of the following result indications:
440 @item "^done" [ "," @var{results} ]
441 The synchronous operation was successful, @code{@var{results}} are the return
446 @c Is this one correct? Should it be an out-of-band notification?
447 The asynchronous operation was successfully started. The target is
450 @item "^error" "," @var{c-string}
452 The operation failed. The @code{@var{c-string}} contains the corresponding
456 @node GDB/MI Stream Records
457 @subsection @sc{gdb/mi} Stream Records
459 @cindex @sc{gdb/mi}, stream records
460 @cindex stream records in @sc{gdb/mi}
461 @value{GDBN} internally maintains a number of output streams: the console, the
462 target, and the log. The output intended for each of these streams is
463 funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
465 Each stream record begins with a unique @dfn{prefix character} which
466 identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
467 Syntax}). In addition to the prefix, each stream record contains a
468 @code{@var{string-output}}. This is either raw text (with an implicit new
469 line) or a quoted C string (which does not contain an implicit newline).
472 @item "~" @var{string-output}
473 The console output stream contains text that should be displayed in the
474 CLI console window. It contains the textual responses to CLI commands.
476 @item "@@" @var{string-output}
477 The target output stream contains any textual output from the running
480 @item "&" @var{string-output}
481 The log stream contains debugging messages being produced by @value{GDBN}'s
485 @node GDB/MI Out-of-band Records
486 @subsection @sc{gdb/mi} Out-of-band Records
488 @cindex out-of-band records in @sc{gdb/mi}
489 @cindex @sc{gdb/mi}, out-of-band records
490 @dfn{Out-of-band} records are used to notify the @sc{gdb/mi} client of
491 additional changes that have occurred. Those changes can either be a
492 consequence of @sc{gdb/mi} (e.g., a breakpoint modified) or a result of
493 target activity (e.g., target stopped).
495 The following is a preliminary list of possible out-of-band records.
502 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
503 @node GDB/MI Command Description Format
504 @section @sc{gdb/mi} Command Description Format
506 The remaining sections describe blocks of commands. Each block of
507 commands is laid out in a fashion similar to this section.
509 Note the the line breaks shown in the examples are here only for
510 readability. They don't appear in the real output.
511 Also note that the commands with a non-available example (N.A.@:) are
514 @subheading Motivation
516 The motivation for this collection of commands.
518 @subheading Introduction
520 A brief introduction to this collection of commands as a whole.
524 For each command in the block, the following is described:
526 @subsubheading Synopsis
529 -command @var{args}@dots{}
532 @subsubheading @value{GDBN} Command
534 The corresponding @value{GDBN} CLI command.
536 @subsubheading Result
538 @subsubheading Out-of-band
542 @subsubheading Example
545 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
546 @node GDB/MI Breakpoint Table Commands
547 @section @sc{gdb/mi} Breakpoint table commands
549 @cindex breakpoint commands for @sc{gdb/mi}
550 @cindex @sc{gdb/mi}, breakpoint commands
551 This section documents @sc{gdb/mi} commands for manipulating
554 @subheading The @code{-break-after} Command
557 @subsubheading Synopsis
560 -break-after @var{number} @var{count}
563 The breakpoint number @var{number} is not in effect until it has been
564 hit @var{count} times. To see how this is reflected in the output of
565 the @samp{-break-list} command, see the description of the
566 @samp{-break-list} command below.
568 @subsubheading @value{GDBN} Command
570 The corresponding @value{GDBN} command is @samp{ignore}.
572 @subsubheading Example
577 ^done,bkpt=@{number="1",addr="0x000100d0",file="hello.c",line="5"@}
584 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
585 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
586 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
587 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
588 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
589 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
590 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
591 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
592 addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
598 @subheading The @code{-break-catch} Command
601 @subheading The @code{-break-commands} Command
602 @findex -break-commands
606 @subheading The @code{-break-condition} Command
607 @findex -break-condition
609 @subsubheading Synopsis
612 -break-condition @var{number} @var{expr}
615 Breakpoint @var{number} will stop the program only if the condition in
616 @var{expr} is true. The condition becomes part of the
617 @samp{-break-list} output (see the description of the @samp{-break-list}
620 @subsubheading @value{GDBN} Command
622 The corresponding @value{GDBN} command is @samp{condition}.
624 @subsubheading Example
632 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
633 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
634 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
635 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
636 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
637 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
638 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
639 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
640 addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
641 times="0",ignore="3"@}]@}
645 @subheading The @code{-break-delete} Command
646 @findex -break-delete
648 @subsubheading Synopsis
651 -break-delete ( @var{breakpoint} )+
654 Delete the breakpoint(s) whose number(s) are specified in the argument
655 list. This is obviously reflected in the breakpoint list.
657 @subsubheading @value{GDBN} command
659 The corresponding @value{GDBN} command is @samp{delete}.
661 @subsubheading Example
669 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
670 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
671 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
672 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
673 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
674 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
675 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
680 @subheading The @code{-break-disable} Command
681 @findex -break-disable
683 @subsubheading Synopsis
686 -break-disable ( @var{breakpoint} )+
689 Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
690 break list is now set to @samp{n} for the named @var{breakpoint}(s).
692 @subsubheading @value{GDBN} Command
694 The corresponding @value{GDBN} command is @samp{disable}.
696 @subsubheading Example
704 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
705 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
706 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
707 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
708 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
709 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
710 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
711 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
712 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
716 @subheading The @code{-break-enable} Command
717 @findex -break-enable
719 @subsubheading Synopsis
722 -break-enable ( @var{breakpoint} )+
725 Enable (previously disabled) @var{breakpoint}(s).
727 @subsubheading @value{GDBN} Command
729 The corresponding @value{GDBN} command is @samp{enable}.
731 @subsubheading Example
739 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
740 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
741 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
742 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
743 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
744 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
745 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
746 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
747 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
751 @subheading The @code{-break-info} Command
754 @subsubheading Synopsis
757 -break-info @var{breakpoint}
761 Get information about a single breakpoint.
763 @subsubheading @value{GDBN} command
765 The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
767 @subsubheading Example
770 @subheading The @code{-break-insert} Command
771 @findex -break-insert
773 @subsubheading Synopsis
776 -break-insert [ -t ] [ -h ] [ -r ]
777 [ -c @var{condition} ] [ -i @var{ignore-count} ]
778 [ -p @var{thread} ] [ @var{line} | @var{addr} ]
782 If specified, @var{line}, can be one of:
789 @item filename:linenum
790 @item filename:function
794 The possible optional parameters of this command are:
798 Insert a tempoary breakpoint.
800 Insert a hardware breakpoint.
801 @item -c @var{condition}
802 Make the breakpoint conditional on @var{condition}.
803 @item -i @var{ignore-count}
804 Initialize the @var{ignore-count}.
806 Insert a regular breakpoint in all the functions whose names match the
807 given regular expression. Other flags are not applicable to regular
811 @subsubheading Result
813 The result is in the form:
816 ^done,bkptno="@var{number}",func="@var{funcname}",
817 file="@var{filename}",line="@var{lineno}"
821 where @var{number} is the @value{GDBN} number for this breakpoint, @var{funcname}
822 is the name of the function where the breakpoint was inserted,
823 @var{filename} is the name of the source file which contains this
824 function, and @var{lineno} is the source line number within that file.
826 Note: this format is open to change.
827 @c An out-of-band breakpoint instead of part of the result?
829 @subsubheading @value{GDBN} Command
831 The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
832 @samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
834 @subsubheading Example
839 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
842 ^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",line="11"@}
845 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
846 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
847 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
848 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
849 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
850 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
851 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
852 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
853 addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
854 bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
855 addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}]@}
857 -break-insert -r foo.*
859 ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c",line="11"@}
863 @subheading The @code{-break-list} Command
866 @subsubheading Synopsis
872 Displays the list of inserted breakpoints, showing the following fields:
876 number of the breakpoint
878 type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
880 should the breakpoint be deleted or disabled when it is hit: @samp{keep}
883 is the breakpoint enabled or no: @samp{y} or @samp{n}
885 memory location at which the breakpoint is set
887 logical location of the breakpoint, expressed by function name, file
890 number of times the breakpoint has been hit
893 If there are no breakpoints or watchpoints, the @code{BreakpointTable}
894 @code{body} field is an empty list.
896 @subsubheading @value{GDBN} Command
898 The corresponding @value{GDBN} command is @samp{info break}.
900 @subsubheading Example
905 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
906 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
907 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
908 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
909 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
910 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
911 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
912 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
913 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
914 bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
915 addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}]@}
919 Here's an example of the result when there are no breakpoints:
924 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
925 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
926 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
927 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
928 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
929 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
930 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
935 @subheading The @code{-break-watch} Command
938 @subsubheading Synopsis
941 -break-watch [ -a | -r ]
944 Create a watchpoint. With the @samp{-a} option it will create an
945 @dfn{access} watchpoint, i.e. a watchpoint that triggers either on a
946 read from or on a write to the memory location. With the @samp{-r}
947 option, the watchpoint created is a @dfn{read} watchpoint, i.e. it will
948 trigger only when the memory location is accessed for reading. Without
949 either of the options, the watchpoint created is a regular watchpoint,
950 i.e. it will trigger when the memory location is accessed for writing.
951 @xref{Set Watchpoints, , Setting watchpoints}.
953 Note that @samp{-break-list} will report a single list of watchpoints and
954 breakpoints inserted.
956 @subsubheading @value{GDBN} Command
958 The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
961 @subsubheading Example
963 Setting a watchpoint on a variable in the @code{main} function:
968 ^done,wpt=@{number="2",exp="x"@}
972 ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
973 value=@{old="-268439212",new="55"@},
974 frame=@{func="main",args=[],file="recursive2.c",line="5"@}
978 Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
979 the program execution twice: first for the variable changing value, then
980 for the watchpoint going out of scope.
985 ^done,wpt=@{number="5",exp="C"@}
989 ^done,reason="watchpoint-trigger",
990 wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
991 frame=@{func="callee4",args=[],
992 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
996 ^done,reason="watchpoint-scope",wpnum="5",
997 frame=@{func="callee3",args=[@{name="strarg",
998 value="0x11940 \"A string argument.\""@}],
999 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
1003 Listing breakpoints and watchpoints, at different points in the program
1004 execution. Note that once the watchpoint goes out of scope, it is
1010 ^done,wpt=@{number="2",exp="C"@}
1013 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
1014 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1015 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1016 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1017 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1018 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1019 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1020 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1021 addr="0x00010734",func="callee4",
1022 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
1023 bkpt=@{number="2",type="watchpoint",disp="keep",
1024 enabled="y",addr="",what="C",times="0"@}]@}
1028 ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
1029 value=@{old="-276895068",new="3"@},
1030 frame=@{func="callee4",args=[],
1031 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
1034 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
1035 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1036 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1037 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1038 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1039 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1040 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1041 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1042 addr="0x00010734",func="callee4",
1043 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
1044 bkpt=@{number="2",type="watchpoint",disp="keep",
1045 enabled="y",addr="",what="C",times="-5"@}]@}
1049 ^done,reason="watchpoint-scope",wpnum="2",
1050 frame=@{func="callee3",args=[@{name="strarg",
1051 value="0x11940 \"A string argument.\""@}],
1052 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
1055 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
1056 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1057 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1058 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1059 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1060 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1061 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1062 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1063 addr="0x00010734",func="callee4",
1064 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
1068 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1069 @node GDB/MI Data Manipulation
1070 @section @sc{gdb/mi} Data Manipulation
1072 @cindex data manipulation, in @sc{gdb/mi}
1073 @cindex @sc{gdb/mi}, data manipulation
1074 This section describes the @sc{gdb/mi} commands that manipulate data:
1075 examine memory and registers, evaluate expressions, etc.
1077 @c REMOVED FROM THE INTERFACE.
1078 @c @subheading -data-assign
1079 @c Change the value of a program variable. Plenty of side effects.
1080 @c @subsubheading GDB command
1082 @c @subsubheading Example
1085 @subheading The @code{-data-disassemble} Command
1086 @findex -data-disassemble
1088 @subsubheading Synopsis
1092 [ -s @var{start-addr} -e @var{end-addr} ]
1093 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
1101 @item @var{start-addr}
1102 is the beginning address (or @code{$pc})
1103 @item @var{end-addr}
1105 @item @var{filename}
1106 is the name of the file to disassemble
1108 is the line number to disassemble around
1110 is the the number of disassembly lines to be produced. If it is -1,
1111 the whole function will be disassembled, in case no @var{end-addr} is
1112 specified. If @var{end-addr} is specified as a non-zero value, and
1113 @var{lines} is lower than the number of disassembly lines between
1114 @var{start-addr} and @var{end-addr}, only @var{lines} lines are
1115 displayed; if @var{lines} is higher than the number of lines between
1116 @var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
1119 is either 0 (meaning only disassembly) or 1 (meaning mixed source and
1123 @subsubheading Result
1125 The output for each instruction is composed of four fields:
1134 Note that whatever included in the instruction field, is not manipulated
1135 directely by @sc{gdb/mi}, i.e. it is not possible to adjust its format.
1137 @subsubheading @value{GDBN} Command
1139 There's no direct mapping from this command to the CLI.
1141 @subsubheading Example
1143 Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
1147 -data-disassemble -s $pc -e "$pc + 20" -- 0
1150 @{address="0x000107c0",func-name="main",offset="4",
1151 inst="mov 2, %o0"@},
1152 @{address="0x000107c4",func-name="main",offset="8",
1153 inst="sethi %hi(0x11800), %o2"@},
1154 @{address="0x000107c8",func-name="main",offset="12",
1155 inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
1156 @{address="0x000107cc",func-name="main",offset="16",
1157 inst="sethi %hi(0x11800), %o2"@},
1158 @{address="0x000107d0",func-name="main",offset="20",
1159 inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
1163 Disassemble the whole @code{main} function. Line 32 is part of
1167 -data-disassemble -f basics.c -l 32 -- 0
1169 @{address="0x000107bc",func-name="main",offset="0",
1170 inst="save %sp, -112, %sp"@},
1171 @{address="0x000107c0",func-name="main",offset="4",
1172 inst="mov 2, %o0"@},
1173 @{address="0x000107c4",func-name="main",offset="8",
1174 inst="sethi %hi(0x11800), %o2"@},
1176 @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
1177 @{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
1181 Disassemble 3 instructions from the start of @code{main}:
1185 -data-disassemble -f basics.c -l 32 -n 3 -- 0
1187 @{address="0x000107bc",func-name="main",offset="0",
1188 inst="save %sp, -112, %sp"@},
1189 @{address="0x000107c0",func-name="main",offset="4",
1190 inst="mov 2, %o0"@},
1191 @{address="0x000107c4",func-name="main",offset="8",
1192 inst="sethi %hi(0x11800), %o2"@}]
1196 Disassemble 3 instructions from the start of @code{main} in mixed mode:
1200 -data-disassemble -f basics.c -l 32 -n 3 -- 1
1202 src_and_asm_line=@{line="31",
1203 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
1204 testsuite/gdb.mi/basics.c",line_asm_insn=[
1205 @{address="0x000107bc",func-name="main",offset="0",
1206 inst="save %sp, -112, %sp"@}]@},
1207 src_and_asm_line=@{line="32",
1208 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
1209 testsuite/gdb.mi/basics.c",line_asm_insn=[
1210 @{address="0x000107c0",func-name="main",offset="4",
1211 inst="mov 2, %o0"@},
1212 @{address="0x000107c4",func-name="main",offset="8",
1213 inst="sethi %hi(0x11800), %o2"@}]@}]
1218 @subheading The @code{-data-evaluate-expression} Command
1219 @findex -data-evaluate-expression
1221 @subsubheading Synopsis
1224 -data-evaluate-expression @var{expr}
1227 Evaluate @var{expr} as an expression. The expression could contain an
1228 inferior function call. The function call will execute synchronously.
1229 If the expression contains spaces, it must be enclosed in double quotes.
1231 @subsubheading @value{GDBN} Command
1233 The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
1234 @samp{call}. In @code{gdbtk} only, there's a corresponding
1235 @samp{gdb_eval} command.
1237 @subsubheading Example
1239 In the following example, the numbers that precede the commands are the
1240 @dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
1241 Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
1245 211-data-evaluate-expression A
1248 311-data-evaluate-expression &A
1249 311^done,value="0xefffeb7c"
1251 411-data-evaluate-expression A+3
1254 511-data-evaluate-expression "A + 3"
1260 @subheading The @code{-data-list-changed-registers} Command
1261 @findex -data-list-changed-registers
1263 @subsubheading Synopsis
1266 -data-list-changed-registers
1269 Display a list of the registers that have changed.
1271 @subsubheading @value{GDBN} Command
1273 @value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
1274 has the corresponding command @samp{gdb_changed_register_list}.
1276 @subsubheading Example
1286 *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
1287 args=[],file="try.c",line="5"@}
1289 -data-list-changed-registers
1290 ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
1291 "10","11","13","14","15","16","17","18","19","20","21","22","23",
1292 "24","25","26","27","28","30","31","64","65","66","67","69"]
1297 @subheading The @code{-data-list-register-names} Command
1298 @findex -data-list-register-names
1300 @subsubheading Synopsis
1303 -data-list-register-names [ ( @var{regno} )+ ]
1306 Show a list of register names for the current target. If no arguments
1307 are given, it shows a list of the names of all the registers. If
1308 integer numbers are given as arguments, it will print a list of the
1309 names of the registers corresponding to the arguments. To ensure
1310 consistency between a register name and its number, the output list may
1311 include empty register names.
1313 @subsubheading @value{GDBN} Command
1315 @value{GDBN} does not have a command which corresponds to
1316 @samp{-data-list-register-names}. In @code{gdbtk} there is a
1317 corresponding command @samp{gdb_regnames}.
1319 @subsubheading Example
1321 For the PPC MBX board:
1324 -data-list-register-names
1325 ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
1326 "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
1327 "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
1328 "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
1329 "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
1330 "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
1331 "", "pc","ps","cr","lr","ctr","xer"]
1333 -data-list-register-names 1 2 3
1334 ^done,register-names=["r1","r2","r3"]
1338 @subheading The @code{-data-list-register-values} Command
1339 @findex -data-list-register-values
1341 @subsubheading Synopsis
1344 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
1347 Display the registers' contents. @var{fmt} is the format according to
1348 which the registers' contents are to be returned, followed by an optional
1349 list of numbers specifying the registers to display. A missing list of
1350 numbers indicates that the contents of all the registers must be returned.
1352 Allowed formats for @var{fmt} are:
1369 @subsubheading @value{GDBN} Command
1371 The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
1372 all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
1374 @subsubheading Example
1376 For a PPC MBX board (note: line breaks are for readability only, they
1377 don't appear in the actual output):
1381 -data-list-register-values r 64 65
1382 ^done,register-values=[@{number="64",value="0xfe00a300"@},
1383 @{number="65",value="0x00029002"@}]
1385 -data-list-register-values x
1386 ^done,register-values=[@{number="0",value="0xfe0043c8"@},
1387 @{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
1388 @{number="3",value="0x0"@},@{number="4",value="0xa"@},
1389 @{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
1390 @{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
1391 @{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
1392 @{number="11",value="0x1"@},@{number="12",value="0x0"@},
1393 @{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
1394 @{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
1395 @{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
1396 @{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
1397 @{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
1398 @{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
1399 @{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
1400 @{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
1401 @{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
1402 @{number="31",value="0x0"@},@{number="32",value="0x0"@},
1403 @{number="33",value="0x0"@},@{number="34",value="0x0"@},
1404 @{number="35",value="0x0"@},@{number="36",value="0x0"@},
1405 @{number="37",value="0x0"@},@{number="38",value="0x0"@},
1406 @{number="39",value="0x0"@},@{number="40",value="0x0"@},
1407 @{number="41",value="0x0"@},@{number="42",value="0x0"@},
1408 @{number="43",value="0x0"@},@{number="44",value="0x0"@},
1409 @{number="45",value="0x0"@},@{number="46",value="0x0"@},
1410 @{number="47",value="0x0"@},@{number="48",value="0x0"@},
1411 @{number="49",value="0x0"@},@{number="50",value="0x0"@},
1412 @{number="51",value="0x0"@},@{number="52",value="0x0"@},
1413 @{number="53",value="0x0"@},@{number="54",value="0x0"@},
1414 @{number="55",value="0x0"@},@{number="56",value="0x0"@},
1415 @{number="57",value="0x0"@},@{number="58",value="0x0"@},
1416 @{number="59",value="0x0"@},@{number="60",value="0x0"@},
1417 @{number="61",value="0x0"@},@{number="62",value="0x0"@},
1418 @{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
1419 @{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
1420 @{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
1421 @{number="69",value="0x20002b03"@}]
1426 @subheading The @code{-data-read-memory} Command
1427 @findex -data-read-memory
1429 @subsubheading Synopsis
1432 -data-read-memory [ -o @var{byte-offset} ]
1433 @var{address} @var{word-format} @var{word-size}
1434 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
1442 An expression specifying the address of the first memory word to be
1443 read. Complex expressions containing embedded white space should be
1444 quoted using the C convention.
1446 @item @var{word-format}
1447 The format to be used to print the memory words. The notation is the
1448 same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
1451 @item @var{word-size}
1452 The size of each memory word in bytes.
1455 The number of rows in the output table.
1458 The number of columns in the output table.
1461 If present, indicates that each row should include an @sc{ascii} dump. The
1462 value of @var{aschar} is used as a padding character when a byte is not a
1463 member of the printable @sc{ascii} character set (printable @sc{ascii}
1464 characters are those whose code is between 32 and 126, inclusively).
1466 @item @var{byte-offset}
1467 An offset to add to the @var{address} before fetching memory.
1470 This command displays memory contents as a table of @var{nr-rows} by
1471 @var{nr-cols} words, each word being @var{word-size} bytes. In total,
1472 @code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
1473 (returned as @samp{total-bytes}). Should less then the requested number
1474 of bytes be returned by the target, the missing words are identified
1475 using @samp{N/A}. The number of bytes read from the target is returned
1476 in @samp{nr-bytes} and the starting address used to read memory in
1479 The address of the next/previous row or page is available in
1480 @samp{next-row} and @samp{prev-row}, @samp{next-page} and
1483 @subsubheading @value{GDBN} Command
1485 The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
1486 @samp{gdb_get_mem} memory read command.
1488 @subsubheading Example
1490 Read six bytes of memory starting at @code{bytes+6} but then offset by
1491 @code{-6} bytes. Format as three rows of two columns. One byte per
1492 word. Display each word in hex.
1496 9-data-read-memory -o -6 -- bytes+6 x 1 3 2
1497 9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
1498 next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
1499 prev-page="0x0000138a",memory=[
1500 @{addr="0x00001390",data=["0x00","0x01"]@},
1501 @{addr="0x00001392",data=["0x02","0x03"]@},
1502 @{addr="0x00001394",data=["0x04","0x05"]@}]
1506 Read two bytes of memory starting at address @code{shorts + 64} and
1507 display as a single word formatted in decimal.
1511 5-data-read-memory shorts+64 d 2 1 1
1512 5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
1513 next-row="0x00001512",prev-row="0x0000150e",
1514 next-page="0x00001512",prev-page="0x0000150e",memory=[
1515 @{addr="0x00001510",data=["128"]@}]
1519 Read thirty two bytes of memory starting at @code{bytes+16} and format
1520 as eight rows of four columns. Include a string encoding with @samp{x}
1521 used as the non-printable character.
1525 4-data-read-memory bytes+16 x 1 8 4 x
1526 4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
1527 next-row="0x000013c0",prev-row="0x0000139c",
1528 next-page="0x000013c0",prev-page="0x00001380",memory=[
1529 @{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
1530 @{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
1531 @{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
1532 @{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
1533 @{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
1534 @{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
1535 @{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
1536 @{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
1540 @subheading The @code{-display-delete} Command
1541 @findex -display-delete
1543 @subsubheading Synopsis
1546 -display-delete @var{number}
1549 Delete the display @var{number}.
1551 @subsubheading @value{GDBN} Command
1553 The corresponding @value{GDBN} command is @samp{delete display}.
1555 @subsubheading Example
1559 @subheading The @code{-display-disable} Command
1560 @findex -display-disable
1562 @subsubheading Synopsis
1565 -display-disable @var{number}
1568 Disable display @var{number}.
1570 @subsubheading @value{GDBN} Command
1572 The corresponding @value{GDBN} command is @samp{disable display}.
1574 @subsubheading Example
1578 @subheading The @code{-display-enable} Command
1579 @findex -display-enable
1581 @subsubheading Synopsis
1584 -display-enable @var{number}
1587 Enable display @var{number}.
1589 @subsubheading @value{GDBN} Command
1591 The corresponding @value{GDBN} command is @samp{enable display}.
1593 @subsubheading Example
1597 @subheading The @code{-display-insert} Command
1598 @findex -display-insert
1600 @subsubheading Synopsis
1603 -display-insert @var{expression}
1606 Display @var{expression} every time the program stops.
1608 @subsubheading @value{GDBN} Command
1610 The corresponding @value{GDBN} command is @samp{display}.
1612 @subsubheading Example
1616 @subheading The @code{-display-list} Command
1617 @findex -display-list
1619 @subsubheading Synopsis
1625 List the displays. Do not show the current values.
1627 @subsubheading @value{GDBN} Command
1629 The corresponding @value{GDBN} command is @samp{info display}.
1631 @subsubheading Example
1635 @subheading The @code{-environment-cd} Command
1636 @findex -environment-cd
1638 @subsubheading Synopsis
1641 -environment-cd @var{pathdir}
1644 Set @value{GDBN}'s working directory.
1646 @subsubheading @value{GDBN} Command
1648 The corresponding @value{GDBN} command is @samp{cd}.
1650 @subsubheading Example
1654 -environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
1660 @subheading The @code{-environment-directory} Command
1661 @findex -environment-directory
1663 @subsubheading Synopsis
1666 -environment-directory @var{pathdir}
1669 Add directory @var{pathdir} to beginning of search path for source files.
1671 @subsubheading @value{GDBN} Command
1673 The corresponding @value{GDBN} command is @samp{dir}.
1675 @subsubheading Example
1679 -environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
1685 @subheading The @code{-environment-path} Command
1686 @findex -environment-path
1688 @subsubheading Synopsis
1691 -environment-path ( @var{pathdir} )+
1694 Add directories @var{pathdir} to beginning of search path for object files.
1696 @subsubheading @value{GDBN} Command
1698 The corresponding @value{GDBN} command is @samp{path}.
1700 @subsubheading Example
1704 -environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb
1710 @subheading The @code{-environment-pwd} Command
1711 @findex -environment-pwd
1713 @subsubheading Synopsis
1719 Show the current working directory.
1721 @subsubheading @value{GDBN} command
1723 The corresponding @value{GDBN} command is @samp{pwd}.
1725 @subsubheading Example
1730 ~Working directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb.
1735 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1736 @node GDB/MI Program Control
1737 @section @sc{gdb/mi} Program control
1739 @subsubheading Program termination
1741 As a result of execution, the inferior program can run to completion, if
1742 it doesn't encounter any breakpoints. In this case the output will
1743 include an exit code, if the program has exited exceptionally.
1745 @subsubheading Examples
1748 Program exited normally:
1756 *stopped,reason="exited-normally"
1761 Program exited exceptionally:
1769 *stopped,reason="exited",exit-code="01"
1773 Another way the program can terminate is if it receives a signal such as
1774 @code{SIGINT}. In this case, @sc{gdb/mi} displays this:
1778 *stopped,reason="exited-signalled",signal-name="SIGINT",
1779 signal-meaning="Interrupt"
1783 @subheading The @code{-exec-abort} Command
1786 @subsubheading Synopsis
1792 Kill the inferior running program.
1794 @subsubheading @value{GDBN} Command
1796 The corresponding @value{GDBN} command is @samp{kill}.
1798 @subsubheading Example
1802 @subheading The @code{-exec-arguments} Command
1803 @findex -exec-arguments
1805 @subsubheading Synopsis
1808 -exec-arguments @var{args}
1811 Set the inferior program arguments, to be used in the next
1814 @subsubheading @value{GDBN} Command
1816 The corresponding @value{GDBN} command is @samp{set args}.
1818 @subsubheading Example
1821 Don't have one around.
1824 @subheading The @code{-exec-continue} Command
1825 @findex -exec-continue
1827 @subsubheading Synopsis
1833 Asynchronous command. Resumes the execution of the inferior program
1834 until a breakpoint is encountered, or until the inferior exits.
1836 @subsubheading @value{GDBN} Command
1838 The corresponding @value{GDBN} corresponding is @samp{continue}.
1840 @subsubheading Example
1847 *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
1848 file="hello.c",line="13"@}
1853 @subheading The @code{-exec-finish} Command
1854 @findex -exec-finish
1856 @subsubheading Synopsis
1862 Asynchronous command. Resumes the execution of the inferior program
1863 until the current function is exited. Displays the results returned by
1866 @subsubheading @value{GDBN} Command
1868 The corresponding @value{GDBN} command is @samp{finish}.
1870 @subsubheading Example
1872 Function returning @code{void}.
1879 *stopped,reason="function-finished",frame=@{func="main",args=[],
1880 file="hello.c",line="7"@}
1884 Function returning other than @code{void}. The name of the internal
1885 @value{GDBN} variable storing the result is printed, together with the
1892 *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
1893 args=[@{name="a",value="1"],@{name="b",value="9"@}@},
1894 file="recursive2.c",line="14"@},
1895 gdb-result-var="$1",return-value="0"
1900 @subheading The @code{-exec-interrupt} Command
1901 @findex -exec-interrupt
1903 @subsubheading Synopsis
1909 Asynchronous command. Interrupts the background execution of the target.
1910 Note how the token associated with the stop message is the one for the
1911 execution command that has been interrupted. The token for the interrupt
1912 itself only appears in the @samp{^done} output. If the user is trying to
1913 interrupt a non-running program, an error message will be printed.
1915 @subsubheading @value{GDBN} Command
1917 The corresponding @value{GDBN} command is @samp{interrupt}.
1919 @subsubheading Example
1930 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
1931 frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
1936 ^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
1941 @subheading The @code{-exec-next} Command
1944 @subsubheading Synopsis
1950 Asynchronous command. Resumes execution of the inferior program, stopping
1951 when the beginning of the next source line is reached.
1953 @subsubheading @value{GDBN} Command
1955 The corresponding @value{GDBN} command is @samp{next}.
1957 @subsubheading Example
1963 *stopped,reason="end-stepping-range",line="8",file="hello.c"
1968 @subheading The @code{-exec-next-instruction} Command
1969 @findex -exec-next-instruction
1971 @subsubheading Synopsis
1974 -exec-next-instruction
1977 Asynchronous command. Executes one machine instruction. If the
1978 instruction is a function call continues until the function returns. If
1979 the program stops at an instruction in the middle of a source line, the
1980 address will be printed as well.
1982 @subsubheading @value{GDBN} Command
1984 The corresponding @value{GDBN} command is @samp{nexti}.
1986 @subsubheading Example
1990 -exec-next-instruction
1994 *stopped,reason="end-stepping-range",
1995 addr="0x000100d4",line="5",file="hello.c"
2000 @subheading The @code{-exec-return} Command
2001 @findex -exec-return
2003 @subsubheading Synopsis
2009 Makes current function return immediately. Doesn't execute the inferior.
2010 Displays the new current frame.
2012 @subsubheading @value{GDBN} Command
2014 The corresponding @value{GDBN} command is @samp{return}.
2016 @subsubheading Example
2020 200-break-insert callee4
2021 200^done,bkpt=@{number="1",addr="0x00010734",
2022 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
2027 000*stopped,reason="breakpoint-hit",bkptno="1",
2028 frame=@{func="callee4",args=[],
2029 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
2035 111^done,frame=@{level="0 ",func="callee3",
2036 args=[@{name="strarg",
2037 value="0x11940 \"A string argument.\""@}],
2038 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
2043 @subheading The @code{-exec-run} Command
2046 @subsubheading Synopsis
2052 Asynchronous command. Starts execution of the inferior from the
2053 beginning. The inferior executes until either a breakpoint is
2054 encountered or the program exits.
2056 @subsubheading @value{GDBN} Command
2058 The corresponding @value{GDBN} command is @samp{run}.
2060 @subsubheading Example
2065 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
2070 *stopped,reason="breakpoint-hit",bkptno="1",
2071 frame=@{func="main",args=[],file="recursive2.c",line="4"@}
2076 @subheading The @code{-exec-show-arguments} Command
2077 @findex -exec-show-arguments
2079 @subsubheading Synopsis
2082 -exec-show-arguments
2085 Print the arguments of the program.
2087 @subsubheading @value{GDBN} Command
2089 The corresponding @value{GDBN} command is @samp{show args}.
2091 @subsubheading Example
2094 @c @subheading -exec-signal
2096 @subheading The @code{-exec-step} Command
2099 @subsubheading Synopsis
2105 Asynchronous command. Resumes execution of the inferior program, stopping
2106 when the beginning of the next source line is reached, if the next
2107 source line is not a function call. If it is, stop at the first
2108 instruction of the called function.
2110 @subsubheading @value{GDBN} Command
2112 The corresponding @value{GDBN} command is @samp{step}.
2114 @subsubheading Example
2116 Stepping into a function:
2122 *stopped,reason="end-stepping-range",
2123 frame=@{func="foo",args=[@{name="a",value="10"@},
2124 @{name="b",value="0"@}],file="recursive2.c",line="11"@}
2134 *stopped,reason="end-stepping-range",line="14",file="recursive2.c"
2139 @subheading The @code{-exec-step-instruction} Command
2140 @findex -exec-step-instruction
2142 @subsubheading Synopsis
2145 -exec-step-instruction
2148 Asynchronous command. Resumes the inferior which executes one machine
2149 instruction. The output, once @value{GDBN} has stopped, will vary depending on
2150 whether we have stopped in the middle of a source line or not. In the
2151 former case, the address at which the program stopped will be printed as
2154 @subsubheading @value{GDBN} Command
2156 The corresponding @value{GDBN} command is @samp{stepi}.
2158 @subsubheading Example
2162 -exec-step-instruction
2166 *stopped,reason="end-stepping-range",
2167 frame=@{func="foo",args=[],file="try.c",line="10"@}
2169 -exec-step-instruction
2173 *stopped,reason="end-stepping-range",
2174 frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
2179 @subheading The @code{-exec-until} Command
2182 @subsubheading Synopsis
2185 -exec-until [ @var{location} ]
2188 Asynchronous command. Executes the inferior until the @var{location}
2189 specified in the argument is reached. If there is no argument, the inferior
2190 executes until a source line greater than the current one is reached.
2191 The reason for stopping in this case will be @samp{location-reached}.
2193 @subsubheading @value{GDBN} Command
2195 The corresponding @value{GDBN} command is @samp{until}.
2197 @subsubheading Example
2201 -exec-until recursive2.c:6
2205 *stopped,reason="location-reached",frame=@{func="main",args=[],
2206 file="recursive2.c",line="6"@}
2211 @subheading -file-clear
2212 Is this going away????
2216 @subheading The @code{-file-exec-and-symbols} Command
2217 @findex -file-exec-and-symbols
2219 @subsubheading Synopsis
2222 -file-exec-and-symbols @var{file}
2225 Specify the executable file to be debugged. This file is the one from
2226 which the symbol table is also read. If no file is specified, the
2227 command clears the executable and symbol information. If breakpoints
2228 are set when using this command with no arguments, @value{GDBN} will produce
2229 error messages. Otherwise, no output is produced, except a completion
2232 @subsubheading @value{GDBN} Command
2234 The corresponding @value{GDBN} command is @samp{file}.
2236 @subsubheading Example
2240 -file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2246 @subheading The @code{-file-exec-file} Command
2247 @findex -file-exec-file
2249 @subsubheading Synopsis
2252 -file-exec-file @var{file}
2255 Specify the executable file to be debugged. Unlike
2256 @samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
2257 from this file. If used without argument, @value{GDBN} clears the information
2258 about the executable file. No output is produced, except a completion
2261 @subsubheading @value{GDBN} Command
2263 The corresponding @value{GDBN} command is @samp{exec-file}.
2265 @subsubheading Example
2269 -file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2275 @subheading The @code{-file-list-exec-sections} Command
2276 @findex -file-list-exec-sections
2278 @subsubheading Synopsis
2281 -file-list-exec-sections
2284 List the sections of the current executable file.
2286 @subsubheading @value{GDBN} Command
2288 The @value{GDBN} command @samp{info file} shows, among the rest, the same
2289 information as this command. @code{gdbtk} has a corresponding command
2290 @samp{gdb_load_info}.
2292 @subsubheading Example
2296 @subheading The @code{-file-list-exec-source-files} Command
2297 @findex -file-list-exec-source-files
2299 @subsubheading Synopsis
2302 -file-list-exec-source-files
2305 List the source files for the current executable.
2307 @subsubheading @value{GDBN} Command
2309 There's no @value{GDBN} command which directly corresponds to this one.
2310 @code{gdbtk} has an analogous command @samp{gdb_listfiles}.
2312 @subsubheading Example
2316 @subheading The @code{-file-list-shared-libraries} Command
2317 @findex -file-list-shared-libraries
2319 @subsubheading Synopsis
2322 -file-list-shared-libraries
2325 List the shared libraries in the program.
2327 @subsubheading @value{GDBN} Command
2329 The corresponding @value{GDBN} command is @samp{info shared}.
2331 @subsubheading Example
2335 @subheading The @code{-file-list-symbol-files} Command
2336 @findex -file-list-symbol-files
2338 @subsubheading Synopsis
2341 -file-list-symbol-files
2346 @subsubheading @value{GDBN} Command
2348 The corresponding @value{GDBN} command is @samp{info file} (part of it).
2350 @subsubheading Example
2354 @subheading The @code{-file-symbol-file} Command
2355 @findex -file-symbol-file
2357 @subsubheading Synopsis
2360 -file-symbol-file @var{file}
2363 Read symbol table info from the specified @var{file} argument. When
2364 used without arguments, clears @value{GDBN}'s symbol table info. No output is
2365 produced, except for a completion notification.
2367 @subsubheading @value{GDBN} Command
2369 The corresponding @value{GDBN} command is @samp{symbol-file}.
2371 @subsubheading Example
2375 -file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2380 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2381 @node GDB/MI Miscellaneous Commands
2382 @section Miscellaneous @value{GDBN} commands in @sc{gdb/mi}
2384 @c @subheading -gdb-complete
2386 @subheading The @code{-gdb-exit} Command
2389 @subsubheading Synopsis
2395 Exit @value{GDBN} immediately.
2397 @subsubheading @value{GDBN} Command
2399 Approximately corresponds to @samp{quit}.
2401 @subsubheading Example
2408 @subheading The @code{-gdb-set} Command
2411 @subsubheading Synopsis
2417 Set an internal @value{GDBN} variable.
2418 @c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
2420 @subsubheading @value{GDBN} Command
2422 The corresponding @value{GDBN} command is @samp{set}.
2424 @subsubheading Example
2434 @subheading The @code{-gdb-show} Command
2437 @subsubheading Synopsis
2443 Show the current value of a @value{GDBN} variable.
2445 @subsubheading @value{GDBN} command
2447 The corresponding @value{GDBN} command is @samp{show}.
2449 @subsubheading Example
2458 @c @subheading -gdb-source
2461 @subheading The @code{-gdb-version} Command
2462 @findex -gdb-version
2464 @subsubheading Synopsis
2470 Show version information for @value{GDBN}. Used mostly in testing.
2472 @subsubheading @value{GDBN} Command
2474 There's no equivalent @value{GDBN} command. @value{GDBN} by default shows this
2475 information when you start an interactive session.
2477 @subsubheading Example
2479 @c This example modifies the actual output from GDB to avoid overfull
2485 ~Copyright 2000 Free Software Foundation, Inc.
2486 ~GDB is free software, covered by the GNU General Public License, and
2487 ~you are welcome to change it and/or distribute copies of it under
2488 ~ certain conditions.
2489 ~Type "show copying" to see the conditions.
2490 ~There is absolutely no warranty for GDB. Type "show warranty" for
2492 ~This GDB was configured as
2493 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
2499 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2500 @node GDB/MI Kod Commands
2501 @section @sc{gdb/mi} Kod Commands
2503 The Kod commands are not implemented.
2505 @c @subheading -kod-info
2507 @c @subheading -kod-list
2509 @c @subheading -kod-list-object-types
2511 @c @subheading -kod-show
2513 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2514 @node GDB/MI Memory Overlay Commands
2515 @section @sc{gdb/mi} Memory Overlay Commands
2517 The memory overlay commands are not implemented.
2519 @c @subheading -overlay-auto
2521 @c @subheading -overlay-list-mapping-state
2523 @c @subheading -overlay-list-overlays
2525 @c @subheading -overlay-map
2527 @c @subheading -overlay-off
2529 @c @subheading -overlay-on
2531 @c @subheading -overlay-unmap
2533 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2534 @node GDB/MI Signal Handling Commands
2535 @section @sc{gdb/mi} Signal Handling Commands
2537 Signal handling commands are not implemented.
2539 @c @subheading -signal-handle
2541 @c @subheading -signal-list-handle-actions
2543 @c @subheading -signal-list-signal-types
2547 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2548 @node GDB/MI Stack Manipulation
2549 @section @sc{gdb/mi} Stack Manipulation Commands
2552 @subheading The @code{-stack-info-frame} Command
2553 @findex -stack-info-frame
2555 @subsubheading Synopsis
2561 Get info on the current frame.
2563 @subsubheading @value{GDBN} Command
2565 The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
2566 (without arguments).
2568 @subsubheading Example
2571 @subheading The @code{-stack-info-depth} Command
2572 @findex -stack-info-depth
2574 @subsubheading Synopsis
2577 -stack-info-depth [ @var{max-depth} ]
2580 Return the depth of the stack. If the integer argument @var{max-depth}
2581 is specified, do not count beyond @var{max-depth} frames.
2583 @subsubheading @value{GDBN} Command
2585 There's no equivalent @value{GDBN} command.
2587 @subsubheading Example
2589 For a stack with frame levels 0 through 11:
2599 -stack-info-depth 12
2602 -stack-info-depth 11
2605 -stack-info-depth 13
2610 @subheading The @code{-stack-list-arguments} Command
2611 @findex -stack-list-arguments
2613 @subsubheading Synopsis
2616 -stack-list-arguments @var{show-values}
2617 [ @var{low-frame} @var{high-frame} ]
2620 Display a list of the arguments for the frames between @var{low-frame}
2621 and @var{high-frame} (inclusive). If @var{low-frame} and
2622 @var{high-frame} are not provided, list the arguments for the whole call
2625 The @var{show-values} argument must have a value of 0 or 1. A value of
2626 0 means that only the names of the arguments are listed, a value of 1
2627 means that both names and values of the arguments are printed.
2629 @subsubheading @value{GDBN} Command
2631 @value{GDBN} does not have an equivalent command. @code{gdbtk} has a
2632 @samp{gdb_get_args} command which partially overlaps with the
2633 functionality of @samp{-stack-list-arguments}.
2635 @subsubheading Example
2642 frame=@{level="0 ",addr="0x00010734",func="callee4",
2643 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
2644 frame=@{level="1 ",addr="0x0001076c",func="callee3",
2645 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
2646 frame=@{level="2 ",addr="0x0001078c",func="callee2",
2647 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
2648 frame=@{level="3 ",addr="0x000107b4",func="callee1",
2649 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
2650 frame=@{level="4 ",addr="0x000107e0",func="main",
2651 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
2653 -stack-list-arguments 0
2656 frame=@{level="0",args=[]@},
2657 frame=@{level="1",args=[name="strarg"]@},
2658 frame=@{level="2",args=[name="intarg",name="strarg"]@},
2659 frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
2660 frame=@{level="4",args=[]@}]
2662 -stack-list-arguments 1
2665 frame=@{level="0",args=[]@},
2667 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
2668 frame=@{level="2",args=[
2669 @{name="intarg",value="2"@},
2670 @{name="strarg",value="0x11940 \"A string argument.\""@}]@},
2671 @{frame=@{level="3",args=[
2672 @{name="intarg",value="2"@},
2673 @{name="strarg",value="0x11940 \"A string argument.\""@},
2674 @{name="fltarg",value="3.5"@}]@},
2675 frame=@{level="4",args=[]@}]
2677 -stack-list-arguments 0 2 2
2678 ^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
2680 -stack-list-arguments 1 2 2
2681 ^done,stack-args=[frame=@{level="2",
2682 args=[@{name="intarg",value="2"@},
2683 @{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
2687 @c @subheading -stack-list-exception-handlers
2690 @subheading The @code{-stack-list-frames} Command
2691 @findex -stack-list-frames
2693 @subsubheading Synopsis
2696 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
2699 List the frames currently on the stack. For each frame it displays the
2704 The frame number, 0 being the topmost frame, i.e. the innermost function.
2706 The @code{$pc} value for that frame.
2710 File name of the source file where the function lives.
2712 Line number corresponding to the @code{$pc}.
2715 If invoked without arguments, this command prints a backtrace for the
2716 whole stack. If given two integer arguments, it shows the frames whose
2717 levels are between the two arguments (inclusive). If the two arguments
2718 are equal, it shows the single frame at the corresponding level.
2720 @subsubheading @value{GDBN} Command
2722 The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
2724 @subsubheading Example
2726 Full stack backtrace:
2732 [frame=@{level="0 ",addr="0x0001076c",func="foo",
2733 file="recursive2.c",line="11"@},
2734 frame=@{level="1 ",addr="0x000107a4",func="foo",
2735 file="recursive2.c",line="14"@},
2736 frame=@{level="2 ",addr="0x000107a4",func="foo",
2737 file="recursive2.c",line="14"@},
2738 frame=@{level="3 ",addr="0x000107a4",func="foo",
2739 file="recursive2.c",line="14"@},
2740 frame=@{level="4 ",addr="0x000107a4",func="foo",
2741 file="recursive2.c",line="14"@},
2742 frame=@{level="5 ",addr="0x000107a4",func="foo",
2743 file="recursive2.c",line="14"@},
2744 frame=@{level="6 ",addr="0x000107a4",func="foo",
2745 file="recursive2.c",line="14"@},
2746 frame=@{level="7 ",addr="0x000107a4",func="foo",
2747 file="recursive2.c",line="14"@},
2748 frame=@{level="8 ",addr="0x000107a4",func="foo",
2749 file="recursive2.c",line="14"@},
2750 frame=@{level="9 ",addr="0x000107a4",func="foo",
2751 file="recursive2.c",line="14"@},
2752 frame=@{level="10",addr="0x000107a4",func="foo",
2753 file="recursive2.c",line="14"@},
2754 frame=@{level="11",addr="0x00010738",func="main",
2755 file="recursive2.c",line="4"@}]
2759 Show frames between @var{low_frame} and @var{high_frame}:
2763 -stack-list-frames 3 5
2765 [frame=@{level="3 ",addr="0x000107a4",func="foo",
2766 file="recursive2.c",line="14"@},
2767 frame=@{level="4 ",addr="0x000107a4",func="foo",
2768 file="recursive2.c",line="14"@},
2769 frame=@{level="5 ",addr="0x000107a4",func="foo",
2770 file="recursive2.c",line="14"@}]
2774 Show a single frame:
2778 -stack-list-frames 3 3
2780 [frame=@{level="3 ",addr="0x000107a4",func="foo",
2781 file="recursive2.c",line="14"@}]
2786 @subheading The @code{-stack-list-locals} Command
2787 @findex -stack-list-locals
2789 @subsubheading Synopsis
2792 -stack-list-locals @var{print-values}
2795 Display the local variable names for the current frame. With an
2796 argument of 0 prints only the names of the variables, with argument of 1
2797 prints also their values.
2799 @subsubheading @value{GDBN} Command
2801 @samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
2803 @subsubheading Example
2807 -stack-list-locals 0
2808 ^done,locals=[name="A",name="B",name="C"]
2810 -stack-list-locals 1
2811 ^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
2812 @{name="C",value="3"@}]
2817 @subheading The @code{-stack-select-frame} Command
2818 @findex -stack-select-frame
2820 @subsubheading Synopsis
2823 -stack-select-frame @var{framenum}
2826 Change the current frame. Select a different frame @var{framenum} on
2829 @subsubheading @value{GDBN} Command
2831 The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
2832 @samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
2834 @subsubheading Example
2838 -stack-select-frame 2
2843 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2844 @node GDB/MI Symbol Query
2845 @section @sc{gdb/mi} Symbol Query Commands
2848 @subheading The @code{-symbol-info-address} Command
2849 @findex -symbol-info-address
2851 @subsubheading Synopsis
2854 -symbol-info-address @var{symbol}
2857 Describe where @var{symbol} is stored.
2859 @subsubheading @value{GDBN} Command
2861 The corresponding @value{GDBN} command is @samp{info address}.
2863 @subsubheading Example
2867 @subheading The @code{-symbol-info-file} Command
2868 @findex -symbol-info-file
2870 @subsubheading Synopsis
2876 Show the file for the symbol.
2878 @subsubheading @value{GDBN} Command
2880 There's no equivalent @value{GDBN} command. @code{gdbtk} has
2881 @samp{gdb_find_file}.
2883 @subsubheading Example
2887 @subheading The @code{-symbol-info-function} Command
2888 @findex -symbol-info-function
2890 @subsubheading Synopsis
2893 -symbol-info-function
2896 Show which function the symbol lives in.
2898 @subsubheading @value{GDBN} Command
2900 @samp{gdb_get_function} in @code{gdbtk}.
2902 @subsubheading Example
2906 @subheading The @code{-symbol-info-line} Command
2907 @findex -symbol-info-line
2909 @subsubheading Synopsis
2915 Show the core addresses of the code for a source line.
2917 @subsubheading @value{GDBN} Command
2919 The corresponding @value{GDBN} comamnd is @samp{info line}.
2920 @code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
2922 @subsubheading Example
2926 @subheading The @code{-symbol-info-symbol} Command
2927 @findex -symbol-info-symbol
2929 @subsubheading Synopsis
2932 -symbol-info-symbol @var{addr}
2935 Describe what symbol is at location @var{addr}.
2937 @subsubheading @value{GDBN} Command
2939 The corresponding @value{GDBN} command is @samp{info symbol}.
2941 @subsubheading Example
2945 @subheading The @code{-symbol-list-functions} Command
2946 @findex -symbol-list-functions
2948 @subsubheading Synopsis
2951 -symbol-list-functions
2954 List the functions in the executable.
2956 @subsubheading @value{GDBN} Command
2958 @samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
2959 @samp{gdb_search} in @code{gdbtk}.
2961 @subsubheading Example
2965 @subheading The @code{-symbol-list-types} Command
2966 @findex -symbol-list-types
2968 @subsubheading Synopsis
2974 List all the type names.
2976 @subsubheading @value{GDBN} Command
2978 The corresponding commands are @samp{info types} in @value{GDBN},
2979 @samp{gdb_search} in @code{gdbtk}.
2981 @subsubheading Example
2985 @subheading The @code{-symbol-list-variables} Command
2986 @findex -symbol-list-variables
2988 @subsubheading Synopsis
2991 -symbol-list-variables
2994 List all the global and static variable names.
2996 @subsubheading @value{GDBN} Command
2998 @samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
3000 @subsubheading Example
3004 @subheading The @code{-symbol-locate} Command
3005 @findex -symbol-locate
3007 @subsubheading Synopsis
3013 @subsubheading @value{GDBN} Command
3015 @samp{gdb_loc} in @code{gdbtk}.
3017 @subsubheading Example
3021 @subheading The @code{-symbol-type} Command
3022 @findex -symbol-type
3024 @subsubheading Synopsis
3027 -symbol-type @var{variable}
3030 Show type of @var{variable}.
3032 @subsubheading @value{GDBN} Command
3034 The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
3035 @samp{gdb_obj_variable}.
3037 @subsubheading Example
3041 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3042 @node GDB/MI Target Manipulation
3043 @section @sc{gdb/mi} Target Manipulation Commands
3046 @subheading The @code{-target-attach} Command
3047 @findex -target-attach
3049 @subsubheading Synopsis
3052 -target-attach @var{pid} | @var{file}
3055 Attach to a process @var{pid} or a file @var{file} outside of @value{GDBN}.
3057 @subsubheading @value{GDBN} command
3059 The corresponding @value{GDBN} command is @samp{attach}.
3061 @subsubheading Example
3065 @subheading The @code{-target-compare-sections} Command
3066 @findex -target-compare-sections
3068 @subsubheading Synopsis
3071 -target-compare-sections [ @var{section} ]
3074 Compare data of section @var{section} on target to the exec file.
3075 Without the argument, all sections are compared.
3077 @subsubheading @value{GDBN} Command
3079 The @value{GDBN} equivalent is @samp{compare-sections}.
3081 @subsubheading Example
3085 @subheading The @code{-target-detach} Command
3086 @findex -target-detach
3088 @subsubheading Synopsis
3094 Disconnect from the remote target. There's no output.
3096 @subsubheading @value{GDBN} command
3098 The corresponding @value{GDBN} command is @samp{detach}.
3100 @subsubheading Example
3110 @subheading The @code{-target-download} Command
3111 @findex -target-download
3113 @subsubheading Synopsis
3119 Loads the executable onto the remote target.
3120 It prints out an update message every half second, which includes the fields:
3124 The name of the section.
3126 The size of what has been sent so far for that section.
3128 The size of the section.
3130 The total size of what was sent so far (the current and the previous sections).
3132 The size of the overall executable to download.
3136 Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
3137 @sc{gdb/mi} Output Syntax}).
3139 In addition, it prints the name and size of the sections, as they are
3140 downloaded. These messages include the following fields:
3144 The name of the section.
3146 The size of the section.
3148 The size of the overall executable to download.
3152 At the end, a summary is printed.
3154 @subsubheading @value{GDBN} Command
3156 The corresponding @value{GDBN} command is @samp{load}.
3158 @subsubheading Example
3160 Note: each status message appears on a single line. Here the messages
3161 have been broken down so that they can fit onto a page.
3166 +download,@{section=".text",section-size="6668",total-size="9880"@}
3167 +download,@{section=".text",section-sent="512",section-size="6668",
3168 total-sent="512",total-size="9880"@}
3169 +download,@{section=".text",section-sent="1024",section-size="6668",
3170 total-sent="1024",total-size="9880"@}
3171 +download,@{section=".text",section-sent="1536",section-size="6668",
3172 total-sent="1536",total-size="9880"@}
3173 +download,@{section=".text",section-sent="2048",section-size="6668",
3174 total-sent="2048",total-size="9880"@}
3175 +download,@{section=".text",section-sent="2560",section-size="6668",
3176 total-sent="2560",total-size="9880"@}
3177 +download,@{section=".text",section-sent="3072",section-size="6668",
3178 total-sent="3072",total-size="9880"@}
3179 +download,@{section=".text",section-sent="3584",section-size="6668",
3180 total-sent="3584",total-size="9880"@}
3181 +download,@{section=".text",section-sent="4096",section-size="6668",
3182 total-sent="4096",total-size="9880"@}
3183 +download,@{section=".text",section-sent="4608",section-size="6668",
3184 total-sent="4608",total-size="9880"@}
3185 +download,@{section=".text",section-sent="5120",section-size="6668",
3186 total-sent="5120",total-size="9880"@}
3187 +download,@{section=".text",section-sent="5632",section-size="6668",
3188 total-sent="5632",total-size="9880"@}
3189 +download,@{section=".text",section-sent="6144",section-size="6668",
3190 total-sent="6144",total-size="9880"@}
3191 +download,@{section=".text",section-sent="6656",section-size="6668",
3192 total-sent="6656",total-size="9880"@}
3193 +download,@{section=".init",section-size="28",total-size="9880"@}
3194 +download,@{section=".fini",section-size="28",total-size="9880"@}
3195 +download,@{section=".data",section-size="3156",total-size="9880"@}
3196 +download,@{section=".data",section-sent="512",section-size="3156",
3197 total-sent="7236",total-size="9880"@}
3198 +download,@{section=".data",section-sent="1024",section-size="3156",
3199 total-sent="7748",total-size="9880"@}
3200 +download,@{section=".data",section-sent="1536",section-size="3156",
3201 total-sent="8260",total-size="9880"@}
3202 +download,@{section=".data",section-sent="2048",section-size="3156",
3203 total-sent="8772",total-size="9880"@}
3204 +download,@{section=".data",section-sent="2560",section-size="3156",
3205 total-sent="9284",total-size="9880"@}
3206 +download,@{section=".data",section-sent="3072",section-size="3156",
3207 total-sent="9796",total-size="9880"@}
3208 ^done,address="0x10004",load-size="9880",transfer-rate="6586",
3214 @subheading The @code{-target-exec-status} Command
3215 @findex -target-exec-status
3217 @subsubheading Synopsis
3223 Provide information on the state of the target (whether it is running or
3226 @subsubheading @value{GDBN} Command
3228 There's no equivalent @value{GDBN} command.
3230 @subsubheading Example
3234 @subheading The @code{-target-list-available-targets} Command
3235 @findex -target-list-available-targets
3237 @subsubheading Synopsis
3240 -target-list-available-targets
3243 List the possible targets to connect to.
3245 @subsubheading @value{GDBN} Command
3247 The corresponding @value{GDBN} command is @samp{help target}.
3249 @subsubheading Example
3253 @subheading The @code{-target-list-current-targets} Command
3254 @findex -target-list-current-targets
3256 @subsubheading Synopsis
3259 -target-list-current-targets
3262 Describe the current target.
3264 @subsubheading @value{GDBN} Command
3266 The corresponding information is printed by @samp{info file} (among
3269 @subsubheading Example
3273 @subheading The @code{-target-list-parameters} Command
3274 @findex -target-list-parameters
3276 @subsubheading Synopsis
3279 -target-list-parameters
3284 @subsubheading @value{GDBN} Command
3288 @subsubheading Example
3292 @subheading The @code{-target-select} Command
3293 @findex -target-select
3295 @subsubheading Synopsis
3298 -target-select @var{type} @var{parameters @dots{}}
3301 Connect @value{GDBN} to the remote target. This command takes two args:
3305 The type of target, for instance @samp{async}, @samp{remote}, etc.
3306 @item @var{parameters}
3307 Device names, host names and the like. @xref{Target Commands, ,
3308 Commands for managing targets}, for more details.
3311 The output is a connection notification, followed by the address at
3312 which the target program is, in the following form:
3315 ^connected,addr="@var{address}",func="@var{function name}",
3316 args=[@var{arg list}]
3319 @subsubheading @value{GDBN} Command
3321 The corresponding @value{GDBN} command is @samp{target}.
3323 @subsubheading Example
3327 -target-select async /dev/ttya
3328 ^connected,addr="0xfe00a300",func="??",args=[]
3332 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3333 @node GDB/MI Thread Commands
3334 @section @sc{gdb/mi} Thread Commands
3337 @subheading The @code{-thread-info} Command
3338 @findex -thread-info
3340 @subsubheading Synopsis
3346 @subsubheading @value{GDBN} command
3350 @subsubheading Example
3354 @subheading The @code{-thread-list-all-threads} Command
3355 @findex -thread-list-all-threads
3357 @subsubheading Synopsis
3360 -thread-list-all-threads
3363 @subsubheading @value{GDBN} Command
3365 The equivalent @value{GDBN} command is @samp{info threads}.
3367 @subsubheading Example
3371 @subheading The @code{-thread-list-ids} Command
3372 @findex -thread-list-ids
3374 @subsubheading Synopsis
3380 Produces a list of the currently known @value{GDBN} thread ids. At the
3381 end of the list it also prints the total number of such threads.
3383 @subsubheading @value{GDBN} Command
3385 Part of @samp{info threads} supplies the same information.
3387 @subsubheading Example
3389 No threads present, besides the main process:
3394 ^done,thread-ids=@{@},number-of-threads="0"
3404 ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
3405 number-of-threads="3"
3410 @subheading The @code{-thread-select} Command
3411 @findex -thread-select
3413 @subsubheading Synopsis
3416 -thread-select @var{threadnum}
3419 Make @var{threadnum} the current thread. It prints the number of the new
3420 current thread, and the topmost frame for that thread.
3422 @subsubheading @value{GDBN} Command
3424 The corresponding @value{GDBN} command is @samp{thread}.
3426 @subsubheading Example
3433 *stopped,reason="end-stepping-range",thread-id="2",line="187",
3434 file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
3438 thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
3439 number-of-threads="3"
3442 ^done,new-thread-id="3",
3443 frame=@{level="0 ",func="vprintf",
3444 args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
3445 @{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
3449 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3450 @node GDB/MI Tracepoint Commands
3451 @section @sc{gdb/mi} Tracepoint Commands
3453 The tracepoint commands are not yet implemented.
3455 @c @subheading -trace-actions
3457 @c @subheading -trace-delete
3459 @c @subheading -trace-disable
3461 @c @subheading -trace-dump
3463 @c @subheading -trace-enable
3465 @c @subheading -trace-exists
3467 @c @subheading -trace-find
3469 @c @subheading -trace-frame-number
3471 @c @subheading -trace-info
3473 @c @subheading -trace-insert
3475 @c @subheading -trace-list
3477 @c @subheading -trace-pass-count
3479 @c @subheading -trace-save
3481 @c @subheading -trace-start
3483 @c @subheading -trace-stop
3486 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3487 @node GDB/MI Variable Objects
3488 @section @sc{gdb/mi} Variable Objects
3491 @subheading Motivation for Variable Objects in @sc{gdb/mi}
3493 For the implementation of a variable debugger window (locals, watched
3494 expressions, etc.), we are proposing the adaptation of the existing code
3495 used by @code{Insight}.
3497 The two main reasons for that are:
3501 It has been proven in practice (it is already on its second generation).
3504 It will shorten development time (needless to say how important it is
3508 The original interface was designed to be used by Tcl code, so it was
3509 slightly changed so it could be used through @sc{gdb/mi}. This section
3510 describes the @sc{gdb/mi} operations that will be available and gives some
3511 hints about their use.
3513 @emph{Note}: In addition to the set of operations described here, we
3514 expect the @sc{gui} implementation of a variable window to require, at
3515 least, the following operations:
3518 @item @code{-gdb-show} @code{output-radix}
3519 @item @code{-stack-list-arguments}
3520 @item @code{-stack-list-locals}
3521 @item @code{-stack-select-frame}
3524 @subheading Introduction to Variable Objects in @sc{gdb/mi}
3526 @cindex variable objects in @sc{gdb/mi}
3527 The basic idea behind variable objects is the creation of a named object
3528 to represent a variable, an expression, a memory location or even a CPU
3529 register. For each object created, a set of operations is available for
3530 examining or changing its properties.
3532 Furthermore, complex data types, such as C structures, are represented
3533 in a tree format. For instance, the @code{struct} type variable is the
3534 root and the children will represent the struct members. If a child
3535 is itself of a complex type, it will also have children of its own.
3536 Appropriate language differences are handled for C, C@t{++} and Java.
3538 When returning the actual values of the objects, this facility allows
3539 for the individual selection of the display format used in the result
3540 creation. It can be chosen among: binary, decimal, hexadecimal, octal
3541 and natural. Natural refers to a default format automatically
3542 chosen based on the variable type (like decimal for an @code{int}, hex
3543 for pointers, etc.).
3545 The following is the complete set of @sc{gdb/mi} operations defined to
3546 access this functionality:
3548 @multitable @columnfractions .4 .6
3549 @item @strong{Operation}
3550 @tab @strong{Description}
3552 @item @code{-var-create}
3553 @tab create a variable object
3554 @item @code{-var-delete}
3555 @tab delete the variable object and its children
3556 @item @code{-var-set-format}
3557 @tab set the display format of this variable
3558 @item @code{-var-show-format}
3559 @tab show the display format of this variable
3560 @item @code{-var-info-num-children}
3561 @tab tells how many children this object has
3562 @item @code{-var-list-children}
3563 @tab return a list of the object's children
3564 @item @code{-var-info-type}
3565 @tab show the type of this variable object
3566 @item @code{-var-info-expression}
3567 @tab print what this variable object represents
3568 @item @code{-var-show-attributes}
3569 @tab is this variable editable? does it exist here?
3570 @item @code{-var-evaluate-expression}
3571 @tab get the value of this variable
3572 @item @code{-var-assign}
3573 @tab set the value of this variable
3574 @item @code{-var-update}
3575 @tab update the variable and its children
3578 In the next subsection we describe each operation in detail and suggest
3581 @subheading Description And Use of Operations on Variable Objects
3583 @subheading The @code{-var-create} Command
3586 @subsubheading Synopsis
3589 -var-create @{@var{name} | "-"@}
3590 @{@var{frame-addr} | "*"@} @var{expression}
3593 This operation creates a variable object, which allows the monitoring of
3594 a variable, the result of an expression, a memory cell or a CPU
3597 The @var{name} parameter is the string by which the object can be
3598 referenced. It must be unique. If @samp{-} is specified, the varobj
3599 system will generate a string ``varNNNNNN'' automatically. It will be
3600 unique provided that one does not specify @var{name} on that format.
3601 The command fails if a duplicate name is found.
3603 The frame under which the expression should be evaluated can be
3604 specified by @var{frame-addr}. A @samp{*} indicates that the current
3605 frame should be used.
3607 @var{expression} is any expression valid on the current language set (must not
3608 begin with a @samp{*}), or one of the following:
3612 @samp{*@var{addr}}, where @var{addr} is the address of a memory cell
3615 @samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
3618 @samp{$@var{regname}} --- a CPU register name
3621 @subsubheading Result
3623 This operation returns the name, number of children and the type of the
3624 object created. Type is returned as a string as the ones generated by
3625 the @value{GDBN} CLI:
3628 name="@var{name}",numchild="N",type="@var{type}"
3632 @subheading The @code{-var-delete} Command
3635 @subsubheading Synopsis
3638 -var-delete @var{name}
3641 Deletes a previously created variable object and all of its children.
3643 Returns an error if the object @var{name} is not found.
3646 @subheading The @code{-var-set-format} Command
3647 @findex -var-set-format
3649 @subsubheading Synopsis
3652 -var-set-format @var{name} @var{format-spec}
3655 Sets the output format for the value of the object @var{name} to be
3658 The syntax for the @var{format-spec} is as follows:
3661 @var{format-spec} @expansion{}
3662 @{binary | decimal | hexadecimal | octal | natural@}
3666 @subheading The @code{-var-show-format} Command
3667 @findex -var-show-format
3669 @subsubheading Synopsis
3672 -var-show-format @var{name}
3675 Returns the format used to display the value of the object @var{name}.
3678 @var{format} @expansion{}
3683 @subheading The @code{-var-info-num-children} Command
3684 @findex -var-info-num-children
3686 @subsubheading Synopsis
3689 -var-info-num-children @var{name}
3692 Returns the number of children of a variable object @var{name}:
3699 @subheading The @code{-var-list-children} Command
3700 @findex -var-list-children
3702 @subsubheading Synopsis
3705 -var-list-children @var{name}
3708 Returns a list of the children of the specified variable object:
3711 numchild=@var{n},children=@{@{name=@var{name},
3712 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}@}
3716 @subheading The @code{-var-info-type} Command
3717 @findex -var-info-type
3719 @subsubheading Synopsis
3722 -var-info-type @var{name}
3725 Returns the type of the specified variable @var{name}. The type is
3726 returned as a string in the same format as it is output by the
3734 @subheading The @code{-var-info-expression} Command
3735 @findex -var-info-expression
3737 @subsubheading Synopsis
3740 -var-info-expression @var{name}
3743 Returns what is represented by the variable object @var{name}:
3746 lang=@var{lang-spec},exp=@var{expression}
3750 where @var{lang-spec} is @code{@{"C" | "C++" | "Java"@}}.
3752 @subheading The @code{-var-show-attributes} Command
3753 @findex -var-show-attributes
3755 @subsubheading Synopsis
3758 -var-show-attributes @var{name}
3761 List attributes of the specified variable object @var{name}:
3764 status=@var{attr} [ ( ,@var{attr} )* ]
3768 where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
3770 @subheading The @code{-var-evaluate-expression} Command
3771 @findex -var-evaluate-expression
3773 @subsubheading Synopsis
3776 -var-evaluate-expression @var{name}
3779 Evaluates the expression that is represented by the specified variable
3780 object and returns its value as a string in the current format specified
3787 @subheading The @code{-var-assign} Command
3790 @subsubheading Synopsis
3793 -var-assign @var{name} @var{expression}
3796 Assigns the value of @var{expression} to the variable object specified
3797 by @var{name}. The object must be @samp{editable}.
3799 @subheading The @code{-var-update} Command
3802 @subsubheading Synopsis
3805 -var-update @{@var{name} | "*"@}
3808 Update the value of the variable object @var{name} by evaluating its
3809 expression after fetching all the new values from memory or registers.
3810 A @samp{*} causes all existing variable objects to be updated.