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, 2002 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, 2002 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
358 @c Ummm... There is no "-stop" command. This assumes async, no?
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.
387 @subsubheading Command With Side Effects
390 -> -symbol-file xyz.exe
391 <- *breakpoint,nr="3",address="0x123",source="a.c:123"
395 @subsubheading A Bad Command
397 Here's what happens if you pass a non-existent command:
401 <- ^error,msg="Undefined MI command: rubbish"
405 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
406 @node GDB/MI Compatibility with CLI
407 @section @sc{gdb/mi} Compatibility with CLI
409 @cindex compatibility, @sc{gdb/mi} and CLI
410 @cindex @sc{gdb/mi}, compatibility with CLI
411 To help users familiar with @value{GDBN}'s existing CLI interface, @sc{gdb/mi}
412 accepts existing CLI commands. As specified by the syntax, such
413 commands can be directly entered into the @sc{gdb/mi} interface and @value{GDBN} will
416 This mechanism is provided as an aid to developers of @sc{gdb/mi}
417 clients and not as a reliable interface into the CLI. Since the command
418 is being interpreteted in an environment that assumes @sc{gdb/mi}
419 behaviour, the exact output of such commands is likely to end up being
420 an un-supported hybrid of @sc{gdb/mi} and CLI output.
422 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
423 @node GDB/MI Output Records
424 @section @sc{gdb/mi} Output Records
427 * GDB/MI Result Records::
428 * GDB/MI Stream Records::
429 * GDB/MI Out-of-band Records::
432 @node GDB/MI Result Records
433 @subsection @sc{gdb/mi} Result Records
435 @cindex result records in @sc{gdb/mi}
436 @cindex @sc{gdb/mi}, result records
437 In addition to a number of out-of-band notifications, the response to a
438 @sc{gdb/mi} command includes one of the following result indications:
442 @item "^done" [ "," @var{results} ]
443 The synchronous operation was successful, @code{@var{results}} are the return
448 @c Is this one correct? Should it be an out-of-band notification?
449 The asynchronous operation was successfully started. The target is
452 @item "^error" "," @var{c-string}
454 The operation failed. The @code{@var{c-string}} contains the corresponding
458 @node GDB/MI Stream Records
459 @subsection @sc{gdb/mi} Stream Records
461 @cindex @sc{gdb/mi}, stream records
462 @cindex stream records in @sc{gdb/mi}
463 @value{GDBN} internally maintains a number of output streams: the console, the
464 target, and the log. The output intended for each of these streams is
465 funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
467 Each stream record begins with a unique @dfn{prefix character} which
468 identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
469 Syntax}). In addition to the prefix, each stream record contains a
470 @code{@var{string-output}}. This is either raw text (with an implicit new
471 line) or a quoted C string (which does not contain an implicit newline).
474 @item "~" @var{string-output}
475 The console output stream contains text that should be displayed in the
476 CLI console window. It contains the textual responses to CLI commands.
478 @item "@@" @var{string-output}
479 The target output stream contains any textual output from the running
482 @item "&" @var{string-output}
483 The log stream contains debugging messages being produced by @value{GDBN}'s
487 @node GDB/MI Out-of-band Records
488 @subsection @sc{gdb/mi} Out-of-band Records
490 @cindex out-of-band records in @sc{gdb/mi}
491 @cindex @sc{gdb/mi}, out-of-band records
492 @dfn{Out-of-band} records are used to notify the @sc{gdb/mi} client of
493 additional changes that have occurred. Those changes can either be a
494 consequence of @sc{gdb/mi} (e.g., a breakpoint modified) or a result of
495 target activity (e.g., target stopped).
497 The following is a preliminary list of possible out-of-band records.
504 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
505 @node GDB/MI Command Description Format
506 @section @sc{gdb/mi} Command Description Format
508 The remaining sections describe blocks of commands. Each block of
509 commands is laid out in a fashion similar to this section.
511 Note the the line breaks shown in the examples are here only for
512 readability. They don't appear in the real output.
513 Also note that the commands with a non-available example (N.A.@:) are
516 @subheading Motivation
518 The motivation for this collection of commands.
520 @subheading Introduction
522 A brief introduction to this collection of commands as a whole.
526 For each command in the block, the following is described:
528 @subsubheading Synopsis
531 -command @var{args}@dots{}
534 @subsubheading @value{GDBN} Command
536 The corresponding @value{GDBN} CLI command.
538 @subsubheading Result
540 @subsubheading Out-of-band
544 @subsubheading Example
547 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
548 @node GDB/MI Breakpoint Table Commands
549 @section @sc{gdb/mi} Breakpoint table commands
551 @cindex breakpoint commands for @sc{gdb/mi}
552 @cindex @sc{gdb/mi}, breakpoint commands
553 This section documents @sc{gdb/mi} commands for manipulating
556 @subheading The @code{-break-after} Command
559 @subsubheading Synopsis
562 -break-after @var{number} @var{count}
565 The breakpoint number @var{number} is not in effect until it has been
566 hit @var{count} times. To see how this is reflected in the output of
567 the @samp{-break-list} command, see the description of the
568 @samp{-break-list} command below.
570 @subsubheading @value{GDBN} Command
572 The corresponding @value{GDBN} command is @samp{ignore}.
574 @subsubheading Example
579 ^done,bkpt=@{number="1",addr="0x000100d0",file="hello.c",line="5"@}
586 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
587 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
588 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
589 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
590 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
591 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
592 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
593 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
594 addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
600 @subheading The @code{-break-catch} Command
603 @subheading The @code{-break-commands} Command
604 @findex -break-commands
608 @subheading The @code{-break-condition} Command
609 @findex -break-condition
611 @subsubheading Synopsis
614 -break-condition @var{number} @var{expr}
617 Breakpoint @var{number} will stop the program only if the condition in
618 @var{expr} is true. The condition becomes part of the
619 @samp{-break-list} output (see the description of the @samp{-break-list}
622 @subsubheading @value{GDBN} Command
624 The corresponding @value{GDBN} command is @samp{condition}.
626 @subsubheading Example
634 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
635 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
636 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
637 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
638 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
639 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
640 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
641 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
642 addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
643 times="0",ignore="3"@}]@}
647 @subheading The @code{-break-delete} Command
648 @findex -break-delete
650 @subsubheading Synopsis
653 -break-delete ( @var{breakpoint} )+
656 Delete the breakpoint(s) whose number(s) are specified in the argument
657 list. This is obviously reflected in the breakpoint list.
659 @subsubheading @value{GDBN} command
661 The corresponding @value{GDBN} command is @samp{delete}.
663 @subsubheading Example
671 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
672 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
673 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
674 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
675 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
676 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
677 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
682 @subheading The @code{-break-disable} Command
683 @findex -break-disable
685 @subsubheading Synopsis
688 -break-disable ( @var{breakpoint} )+
691 Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
692 break list is now set to @samp{n} for the named @var{breakpoint}(s).
694 @subsubheading @value{GDBN} Command
696 The corresponding @value{GDBN} command is @samp{disable}.
698 @subsubheading Example
706 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
707 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
708 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
709 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
710 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
711 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
712 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
713 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
714 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
718 @subheading The @code{-break-enable} Command
719 @findex -break-enable
721 @subsubheading Synopsis
724 -break-enable ( @var{breakpoint} )+
727 Enable (previously disabled) @var{breakpoint}(s).
729 @subsubheading @value{GDBN} Command
731 The corresponding @value{GDBN} command is @samp{enable}.
733 @subsubheading Example
741 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
742 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
743 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
744 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
745 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
746 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
747 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
748 body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
749 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
753 @subheading The @code{-break-info} Command
756 @subsubheading Synopsis
759 -break-info @var{breakpoint}
763 Get information about a single breakpoint.
765 @subsubheading @value{GDBN} command
767 The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
769 @subsubheading Example
772 @subheading The @code{-break-insert} Command
773 @findex -break-insert
775 @subsubheading Synopsis
778 -break-insert [ -t ] [ -h ] [ -r ]
779 [ -c @var{condition} ] [ -i @var{ignore-count} ]
780 [ -p @var{thread} ] [ @var{line} | @var{addr} ]
784 If specified, @var{line}, can be one of:
791 @item filename:linenum
792 @item filename:function
796 The possible optional parameters of this command are:
800 Insert a tempoary breakpoint.
802 Insert a hardware breakpoint.
803 @item -c @var{condition}
804 Make the breakpoint conditional on @var{condition}.
805 @item -i @var{ignore-count}
806 Initialize the @var{ignore-count}.
808 Insert a regular breakpoint in all the functions whose names match the
809 given regular expression. Other flags are not applicable to regular
813 @subsubheading Result
815 The result is in the form:
818 ^done,bkptno="@var{number}",func="@var{funcname}",
819 file="@var{filename}",line="@var{lineno}"
823 where @var{number} is the @value{GDBN} number for this breakpoint, @var{funcname}
824 is the name of the function where the breakpoint was inserted,
825 @var{filename} is the name of the source file which contains this
826 function, and @var{lineno} is the source line number within that file.
828 Note: this format is open to change.
829 @c An out-of-band breakpoint instead of part of the result?
831 @subsubheading @value{GDBN} Command
833 The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
834 @samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
836 @subsubheading Example
841 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
844 ^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",line="11"@}
847 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
848 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
849 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
850 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
851 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
852 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
853 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
854 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
855 addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
856 bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
857 addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}]@}
859 -break-insert -r foo.*
861 ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c",line="11"@}
865 @subheading The @code{-break-list} Command
868 @subsubheading Synopsis
874 Displays the list of inserted breakpoints, showing the following fields:
878 number of the breakpoint
880 type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
882 should the breakpoint be deleted or disabled when it is hit: @samp{keep}
885 is the breakpoint enabled or no: @samp{y} or @samp{n}
887 memory location at which the breakpoint is set
889 logical location of the breakpoint, expressed by function name, file
892 number of times the breakpoint has been hit
895 If there are no breakpoints or watchpoints, the @code{BreakpointTable}
896 @code{body} field is an empty list.
898 @subsubheading @value{GDBN} Command
900 The corresponding @value{GDBN} command is @samp{info break}.
902 @subsubheading Example
907 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
908 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
909 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
910 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
911 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
912 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
913 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
914 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
915 addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
916 bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
917 addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}]@}
921 Here's an example of the result when there are no breakpoints:
926 ^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
927 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
928 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
929 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
930 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
931 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
932 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
937 @subheading The @code{-break-watch} Command
940 @subsubheading Synopsis
943 -break-watch [ -a | -r ]
946 Create a watchpoint. With the @samp{-a} option it will create an
947 @dfn{access} watchpoint, i.e. a watchpoint that triggers either on a
948 read from or on a write to the memory location. With the @samp{-r}
949 option, the watchpoint created is a @dfn{read} watchpoint, i.e. it will
950 trigger only when the memory location is accessed for reading. Without
951 either of the options, the watchpoint created is a regular watchpoint,
952 i.e. it will trigger when the memory location is accessed for writing.
953 @xref{Set Watchpoints, , Setting watchpoints}.
955 Note that @samp{-break-list} will report a single list of watchpoints and
956 breakpoints inserted.
958 @subsubheading @value{GDBN} Command
960 The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
963 @subsubheading Example
965 Setting a watchpoint on a variable in the @code{main} function:
970 ^done,wpt=@{number="2",exp="x"@}
974 ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
975 value=@{old="-268439212",new="55"@},
976 frame=@{func="main",args=[],file="recursive2.c",line="5"@}
980 Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
981 the program execution twice: first for the variable changing value, then
982 for the watchpoint going out of scope.
987 ^done,wpt=@{number="5",exp="C"@}
991 ^done,reason="watchpoint-trigger",
992 wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
993 frame=@{func="callee4",args=[],
994 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
998 ^done,reason="watchpoint-scope",wpnum="5",
999 frame=@{func="callee3",args=[@{name="strarg",
1000 value="0x11940 \"A string argument.\""@}],
1001 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
1005 Listing breakpoints and watchpoints, at different points in the program
1006 execution. Note that once the watchpoint goes out of scope, it is
1012 ^done,wpt=@{number="2",exp="C"@}
1015 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
1016 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1017 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1018 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1019 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1020 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1021 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1022 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1023 addr="0x00010734",func="callee4",
1024 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
1025 bkpt=@{number="2",type="watchpoint",disp="keep",
1026 enabled="y",addr="",what="C",times="0"@}]@}
1030 ^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
1031 value=@{old="-276895068",new="3"@},
1032 frame=@{func="callee4",args=[],
1033 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
1036 ^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
1037 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1038 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1039 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1040 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1041 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1042 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1043 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1044 addr="0x00010734",func="callee4",
1045 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
1046 bkpt=@{number="2",type="watchpoint",disp="keep",
1047 enabled="y",addr="",what="C",times="-5"@}]@}
1051 ^done,reason="watchpoint-scope",wpnum="2",
1052 frame=@{func="callee3",args=[@{name="strarg",
1053 value="0x11940 \"A string argument.\""@}],
1054 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
1057 ^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
1058 hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
1059 @{width="14",alignment="-1",col_name="type",colhdr="Type"@},
1060 @{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
1061 @{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
1062 @{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
1063 @{width="40",alignment="2",col_name="what",colhdr="What"@}],
1064 body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
1065 addr="0x00010734",func="callee4",
1066 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
1070 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1071 @node GDB/MI Data Manipulation
1072 @section @sc{gdb/mi} Data Manipulation
1074 @cindex data manipulation, in @sc{gdb/mi}
1075 @cindex @sc{gdb/mi}, data manipulation
1076 This section describes the @sc{gdb/mi} commands that manipulate data:
1077 examine memory and registers, evaluate expressions, etc.
1079 @c REMOVED FROM THE INTERFACE.
1080 @c @subheading -data-assign
1081 @c Change the value of a program variable. Plenty of side effects.
1082 @c @subsubheading GDB command
1084 @c @subsubheading Example
1087 @subheading The @code{-data-disassemble} Command
1088 @findex -data-disassemble
1090 @subsubheading Synopsis
1094 [ -s @var{start-addr} -e @var{end-addr} ]
1095 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
1103 @item @var{start-addr}
1104 is the beginning address (or @code{$pc})
1105 @item @var{end-addr}
1107 @item @var{filename}
1108 is the name of the file to disassemble
1110 is the line number to disassemble around
1112 is the the number of disassembly lines to be produced. If it is -1,
1113 the whole function will be disassembled, in case no @var{end-addr} is
1114 specified. If @var{end-addr} is specified as a non-zero value, and
1115 @var{lines} is lower than the number of disassembly lines between
1116 @var{start-addr} and @var{end-addr}, only @var{lines} lines are
1117 displayed; if @var{lines} is higher than the number of lines between
1118 @var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
1121 is either 0 (meaning only disassembly) or 1 (meaning mixed source and
1125 @subsubheading Result
1127 The output for each instruction is composed of four fields:
1136 Note that whatever included in the instruction field, is not manipulated
1137 directely by @sc{gdb/mi}, i.e. it is not possible to adjust its format.
1139 @subsubheading @value{GDBN} Command
1141 There's no direct mapping from this command to the CLI.
1143 @subsubheading Example
1145 Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
1149 -data-disassemble -s $pc -e "$pc + 20" -- 0
1152 @{address="0x000107c0",func-name="main",offset="4",
1153 inst="mov 2, %o0"@},
1154 @{address="0x000107c4",func-name="main",offset="8",
1155 inst="sethi %hi(0x11800), %o2"@},
1156 @{address="0x000107c8",func-name="main",offset="12",
1157 inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
1158 @{address="0x000107cc",func-name="main",offset="16",
1159 inst="sethi %hi(0x11800), %o2"@},
1160 @{address="0x000107d0",func-name="main",offset="20",
1161 inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
1165 Disassemble the whole @code{main} function. Line 32 is part of
1169 -data-disassemble -f basics.c -l 32 -- 0
1171 @{address="0x000107bc",func-name="main",offset="0",
1172 inst="save %sp, -112, %sp"@},
1173 @{address="0x000107c0",func-name="main",offset="4",
1174 inst="mov 2, %o0"@},
1175 @{address="0x000107c4",func-name="main",offset="8",
1176 inst="sethi %hi(0x11800), %o2"@},
1178 @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
1179 @{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
1183 Disassemble 3 instructions from the start of @code{main}:
1187 -data-disassemble -f basics.c -l 32 -n 3 -- 0
1189 @{address="0x000107bc",func-name="main",offset="0",
1190 inst="save %sp, -112, %sp"@},
1191 @{address="0x000107c0",func-name="main",offset="4",
1192 inst="mov 2, %o0"@},
1193 @{address="0x000107c4",func-name="main",offset="8",
1194 inst="sethi %hi(0x11800), %o2"@}]
1198 Disassemble 3 instructions from the start of @code{main} in mixed mode:
1202 -data-disassemble -f basics.c -l 32 -n 3 -- 1
1204 src_and_asm_line=@{line="31",
1205 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
1206 testsuite/gdb.mi/basics.c",line_asm_insn=[
1207 @{address="0x000107bc",func-name="main",offset="0",
1208 inst="save %sp, -112, %sp"@}]@},
1209 src_and_asm_line=@{line="32",
1210 file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
1211 testsuite/gdb.mi/basics.c",line_asm_insn=[
1212 @{address="0x000107c0",func-name="main",offset="4",
1213 inst="mov 2, %o0"@},
1214 @{address="0x000107c4",func-name="main",offset="8",
1215 inst="sethi %hi(0x11800), %o2"@}]@}]
1220 @subheading The @code{-data-evaluate-expression} Command
1221 @findex -data-evaluate-expression
1223 @subsubheading Synopsis
1226 -data-evaluate-expression @var{expr}
1229 Evaluate @var{expr} as an expression. The expression could contain an
1230 inferior function call. The function call will execute synchronously.
1231 If the expression contains spaces, it must be enclosed in double quotes.
1233 @subsubheading @value{GDBN} Command
1235 The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
1236 @samp{call}. In @code{gdbtk} only, there's a corresponding
1237 @samp{gdb_eval} command.
1239 @subsubheading Example
1241 In the following example, the numbers that precede the commands are the
1242 @dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
1243 Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
1247 211-data-evaluate-expression A
1250 311-data-evaluate-expression &A
1251 311^done,value="0xefffeb7c"
1253 411-data-evaluate-expression A+3
1256 511-data-evaluate-expression "A + 3"
1262 @subheading The @code{-data-list-changed-registers} Command
1263 @findex -data-list-changed-registers
1265 @subsubheading Synopsis
1268 -data-list-changed-registers
1271 Display a list of the registers that have changed.
1273 @subsubheading @value{GDBN} Command
1275 @value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
1276 has the corresponding command @samp{gdb_changed_register_list}.
1278 @subsubheading Example
1288 *stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
1289 args=[],file="try.c",line="5"@}
1291 -data-list-changed-registers
1292 ^done,changed-registers=["0","1","2","4","5","6","7","8","9",
1293 "10","11","13","14","15","16","17","18","19","20","21","22","23",
1294 "24","25","26","27","28","30","31","64","65","66","67","69"]
1299 @subheading The @code{-data-list-register-names} Command
1300 @findex -data-list-register-names
1302 @subsubheading Synopsis
1305 -data-list-register-names [ ( @var{regno} )+ ]
1308 Show a list of register names for the current target. If no arguments
1309 are given, it shows a list of the names of all the registers. If
1310 integer numbers are given as arguments, it will print a list of the
1311 names of the registers corresponding to the arguments. To ensure
1312 consistency between a register name and its number, the output list may
1313 include empty register names.
1315 @subsubheading @value{GDBN} Command
1317 @value{GDBN} does not have a command which corresponds to
1318 @samp{-data-list-register-names}. In @code{gdbtk} there is a
1319 corresponding command @samp{gdb_regnames}.
1321 @subsubheading Example
1323 For the PPC MBX board:
1326 -data-list-register-names
1327 ^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
1328 "r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
1329 "r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
1330 "r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
1331 "f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
1332 "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
1333 "", "pc","ps","cr","lr","ctr","xer"]
1335 -data-list-register-names 1 2 3
1336 ^done,register-names=["r1","r2","r3"]
1340 @subheading The @code{-data-list-register-values} Command
1341 @findex -data-list-register-values
1343 @subsubheading Synopsis
1346 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
1349 Display the registers' contents. @var{fmt} is the format according to
1350 which the registers' contents are to be returned, followed by an optional
1351 list of numbers specifying the registers to display. A missing list of
1352 numbers indicates that the contents of all the registers must be returned.
1354 Allowed formats for @var{fmt} are:
1371 @subsubheading @value{GDBN} Command
1373 The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
1374 all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
1376 @subsubheading Example
1378 For a PPC MBX board (note: line breaks are for readability only, they
1379 don't appear in the actual output):
1383 -data-list-register-values r 64 65
1384 ^done,register-values=[@{number="64",value="0xfe00a300"@},
1385 @{number="65",value="0x00029002"@}]
1387 -data-list-register-values x
1388 ^done,register-values=[@{number="0",value="0xfe0043c8"@},
1389 @{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
1390 @{number="3",value="0x0"@},@{number="4",value="0xa"@},
1391 @{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
1392 @{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
1393 @{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
1394 @{number="11",value="0x1"@},@{number="12",value="0x0"@},
1395 @{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
1396 @{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
1397 @{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
1398 @{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
1399 @{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
1400 @{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
1401 @{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
1402 @{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
1403 @{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
1404 @{number="31",value="0x0"@},@{number="32",value="0x0"@},
1405 @{number="33",value="0x0"@},@{number="34",value="0x0"@},
1406 @{number="35",value="0x0"@},@{number="36",value="0x0"@},
1407 @{number="37",value="0x0"@},@{number="38",value="0x0"@},
1408 @{number="39",value="0x0"@},@{number="40",value="0x0"@},
1409 @{number="41",value="0x0"@},@{number="42",value="0x0"@},
1410 @{number="43",value="0x0"@},@{number="44",value="0x0"@},
1411 @{number="45",value="0x0"@},@{number="46",value="0x0"@},
1412 @{number="47",value="0x0"@},@{number="48",value="0x0"@},
1413 @{number="49",value="0x0"@},@{number="50",value="0x0"@},
1414 @{number="51",value="0x0"@},@{number="52",value="0x0"@},
1415 @{number="53",value="0x0"@},@{number="54",value="0x0"@},
1416 @{number="55",value="0x0"@},@{number="56",value="0x0"@},
1417 @{number="57",value="0x0"@},@{number="58",value="0x0"@},
1418 @{number="59",value="0x0"@},@{number="60",value="0x0"@},
1419 @{number="61",value="0x0"@},@{number="62",value="0x0"@},
1420 @{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
1421 @{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
1422 @{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
1423 @{number="69",value="0x20002b03"@}]
1428 @subheading The @code{-data-read-memory} Command
1429 @findex -data-read-memory
1431 @subsubheading Synopsis
1434 -data-read-memory [ -o @var{byte-offset} ]
1435 @var{address} @var{word-format} @var{word-size}
1436 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
1444 An expression specifying the address of the first memory word to be
1445 read. Complex expressions containing embedded white space should be
1446 quoted using the C convention.
1448 @item @var{word-format}
1449 The format to be used to print the memory words. The notation is the
1450 same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
1453 @item @var{word-size}
1454 The size of each memory word in bytes.
1457 The number of rows in the output table.
1460 The number of columns in the output table.
1463 If present, indicates that each row should include an @sc{ascii} dump. The
1464 value of @var{aschar} is used as a padding character when a byte is not a
1465 member of the printable @sc{ascii} character set (printable @sc{ascii}
1466 characters are those whose code is between 32 and 126, inclusively).
1468 @item @var{byte-offset}
1469 An offset to add to the @var{address} before fetching memory.
1472 This command displays memory contents as a table of @var{nr-rows} by
1473 @var{nr-cols} words, each word being @var{word-size} bytes. In total,
1474 @code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
1475 (returned as @samp{total-bytes}). Should less than the requested number
1476 of bytes be returned by the target, the missing words are identified
1477 using @samp{N/A}. The number of bytes read from the target is returned
1478 in @samp{nr-bytes} and the starting address used to read memory in
1481 The address of the next/previous row or page is available in
1482 @samp{next-row} and @samp{prev-row}, @samp{next-page} and
1485 @subsubheading @value{GDBN} Command
1487 The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
1488 @samp{gdb_get_mem} memory read command.
1490 @subsubheading Example
1492 Read six bytes of memory starting at @code{bytes+6} but then offset by
1493 @code{-6} bytes. Format as three rows of two columns. One byte per
1494 word. Display each word in hex.
1498 9-data-read-memory -o -6 -- bytes+6 x 1 3 2
1499 9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
1500 next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
1501 prev-page="0x0000138a",memory=[
1502 @{addr="0x00001390",data=["0x00","0x01"]@},
1503 @{addr="0x00001392",data=["0x02","0x03"]@},
1504 @{addr="0x00001394",data=["0x04","0x05"]@}]
1508 Read two bytes of memory starting at address @code{shorts + 64} and
1509 display as a single word formatted in decimal.
1513 5-data-read-memory shorts+64 d 2 1 1
1514 5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
1515 next-row="0x00001512",prev-row="0x0000150e",
1516 next-page="0x00001512",prev-page="0x0000150e",memory=[
1517 @{addr="0x00001510",data=["128"]@}]
1521 Read thirty two bytes of memory starting at @code{bytes+16} and format
1522 as eight rows of four columns. Include a string encoding with @samp{x}
1523 used as the non-printable character.
1527 4-data-read-memory bytes+16 x 1 8 4 x
1528 4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
1529 next-row="0x000013c0",prev-row="0x0000139c",
1530 next-page="0x000013c0",prev-page="0x00001380",memory=[
1531 @{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
1532 @{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
1533 @{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
1534 @{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
1535 @{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
1536 @{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
1537 @{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
1538 @{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
1542 @subheading The @code{-display-delete} Command
1543 @findex -display-delete
1545 @subsubheading Synopsis
1548 -display-delete @var{number}
1551 Delete the display @var{number}.
1553 @subsubheading @value{GDBN} Command
1555 The corresponding @value{GDBN} command is @samp{delete display}.
1557 @subsubheading Example
1561 @subheading The @code{-display-disable} Command
1562 @findex -display-disable
1564 @subsubheading Synopsis
1567 -display-disable @var{number}
1570 Disable display @var{number}.
1572 @subsubheading @value{GDBN} Command
1574 The corresponding @value{GDBN} command is @samp{disable display}.
1576 @subsubheading Example
1580 @subheading The @code{-display-enable} Command
1581 @findex -display-enable
1583 @subsubheading Synopsis
1586 -display-enable @var{number}
1589 Enable display @var{number}.
1591 @subsubheading @value{GDBN} Command
1593 The corresponding @value{GDBN} command is @samp{enable display}.
1595 @subsubheading Example
1599 @subheading The @code{-display-insert} Command
1600 @findex -display-insert
1602 @subsubheading Synopsis
1605 -display-insert @var{expression}
1608 Display @var{expression} every time the program stops.
1610 @subsubheading @value{GDBN} Command
1612 The corresponding @value{GDBN} command is @samp{display}.
1614 @subsubheading Example
1618 @subheading The @code{-display-list} Command
1619 @findex -display-list
1621 @subsubheading Synopsis
1627 List the displays. Do not show the current values.
1629 @subsubheading @value{GDBN} Command
1631 The corresponding @value{GDBN} command is @samp{info display}.
1633 @subsubheading Example
1637 @subheading The @code{-environment-cd} Command
1638 @findex -environment-cd
1640 @subsubheading Synopsis
1643 -environment-cd @var{pathdir}
1646 Set @value{GDBN}'s working directory.
1648 @subsubheading @value{GDBN} Command
1650 The corresponding @value{GDBN} command is @samp{cd}.
1652 @subsubheading Example
1656 -environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
1662 @subheading The @code{-environment-directory} Command
1663 @findex -environment-directory
1665 @subsubheading Synopsis
1668 -environment-directory [ -r ] [ @var{pathdir} ]+
1671 Add directories @var{pathdir} to beginning of search path for source files.
1672 If the @samp{-r} option is used, the search path is reset to the default
1673 search path. If directories @var{pathdir} are supplied in addition to the
1674 @samp{-r} option, the search path is first reset and then addition
1676 Multiple directories may be specified, separated by blanks. Specifying
1677 multiple directories in a single command
1678 results in the directories added to the beginning of the
1679 search path in the same order they were presented in the command.
1680 If blanks are needed as
1681 part of a directory name, double-quotes should be used around
1682 the name. In the command output, the path will show up separated
1683 by the system directory-separator character. The directory-seperator
1684 character must not be used
1685 in any directory name.
1686 If no directories are specified, the current search path is displayed.
1688 @subsubheading @value{GDBN} Command
1690 The corresponding @value{GDBN} command is @samp{dir}.
1692 @subsubheading Example
1696 -environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
1697 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
1699 -environment-directory ""
1700 ^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
1702 -environment-directory -r /home/jjohnstn/src/gdb /usr/src
1703 ^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
1705 -environment-directory -r
1706 ^done,source-path="$cdir:$cwd"
1711 @subheading The @code{-environment-path} Command
1712 @findex -environment-path
1714 @subsubheading Synopsis
1717 -environment-path [ -r ] [ @var{pathdir} ]+
1720 Add directories @var{pathdir} to beginning of search path for object files.
1721 If the @samp{-r} option is used, the search path is reset to the original
1722 search path that existed at gdb start-up. If directories @var{pathdir} are
1723 supplied in addition to the
1724 @samp{-r} option, the search path is first reset and then addition
1726 Multiple directories may be specified, separated by blanks. Specifying
1727 multiple directories in a single command
1728 results in the directories added to the beginning of the
1729 search path in the same order they were presented in the command.
1730 If blanks are needed as
1731 part of a directory name, double-quotes should be used around
1732 the name. In the command output, the path will show up separated
1733 by the system directory-separator character. The directory-seperator
1734 character must not be used
1735 in any directory name.
1736 If no directories are specified, the current path is displayed.
1739 @subsubheading @value{GDBN} Command
1741 The corresponding @value{GDBN} command is @samp{path}.
1743 @subsubheading Example
1748 ^done,path="/usr/bin"
1750 -environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
1751 ^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
1753 -environment-path -r /usr/local/bin
1754 ^done,path="/usr/local/bin:/usr/bin"
1759 @subheading The @code{-environment-pwd} Command
1760 @findex -environment-pwd
1762 @subsubheading Synopsis
1768 Show the current working directory.
1770 @subsubheading @value{GDBN} command
1772 The corresponding @value{GDBN} command is @samp{pwd}.
1774 @subsubheading Example
1779 ^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
1783 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1784 @node GDB/MI Program Control
1785 @section @sc{gdb/mi} Program control
1787 @subsubheading Program termination
1789 As a result of execution, the inferior program can run to completion, if
1790 it doesn't encounter any breakpoints. In this case the output will
1791 include an exit code, if the program has exited exceptionally.
1793 @subsubheading Examples
1796 Program exited normally:
1804 *stopped,reason="exited-normally"
1809 Program exited exceptionally:
1817 *stopped,reason="exited",exit-code="01"
1821 Another way the program can terminate is if it receives a signal such as
1822 @code{SIGINT}. In this case, @sc{gdb/mi} displays this:
1826 *stopped,reason="exited-signalled",signal-name="SIGINT",
1827 signal-meaning="Interrupt"
1831 @subheading The @code{-exec-abort} Command
1834 @subsubheading Synopsis
1840 Kill the inferior running program.
1842 @subsubheading @value{GDBN} Command
1844 The corresponding @value{GDBN} command is @samp{kill}.
1846 @subsubheading Example
1850 @subheading The @code{-exec-arguments} Command
1851 @findex -exec-arguments
1853 @subsubheading Synopsis
1856 -exec-arguments @var{args}
1859 Set the inferior program arguments, to be used in the next
1862 @subsubheading @value{GDBN} Command
1864 The corresponding @value{GDBN} command is @samp{set args}.
1866 @subsubheading Example
1869 Don't have one around.
1872 @subheading The @code{-exec-continue} Command
1873 @findex -exec-continue
1875 @subsubheading Synopsis
1881 Asynchronous command. Resumes the execution of the inferior program
1882 until a breakpoint is encountered, or until the inferior exits.
1884 @subsubheading @value{GDBN} Command
1886 The corresponding @value{GDBN} corresponding is @samp{continue}.
1888 @subsubheading Example
1895 *stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
1896 file="hello.c",line="13"@}
1901 @subheading The @code{-exec-finish} Command
1902 @findex -exec-finish
1904 @subsubheading Synopsis
1910 Asynchronous command. Resumes the execution of the inferior program
1911 until the current function is exited. Displays the results returned by
1914 @subsubheading @value{GDBN} Command
1916 The corresponding @value{GDBN} command is @samp{finish}.
1918 @subsubheading Example
1920 Function returning @code{void}.
1927 *stopped,reason="function-finished",frame=@{func="main",args=[],
1928 file="hello.c",line="7"@}
1932 Function returning other than @code{void}. The name of the internal
1933 @value{GDBN} variable storing the result is printed, together with the
1940 *stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
1941 args=[@{name="a",value="1"],@{name="b",value="9"@}@},
1942 file="recursive2.c",line="14"@},
1943 gdb-result-var="$1",return-value="0"
1948 @subheading The @code{-exec-interrupt} Command
1949 @findex -exec-interrupt
1951 @subsubheading Synopsis
1957 Asynchronous command. Interrupts the background execution of the target.
1958 Note how the token associated with the stop message is the one for the
1959 execution command that has been interrupted. The token for the interrupt
1960 itself only appears in the @samp{^done} output. If the user is trying to
1961 interrupt a non-running program, an error message will be printed.
1963 @subsubheading @value{GDBN} Command
1965 The corresponding @value{GDBN} command is @samp{interrupt}.
1967 @subsubheading Example
1978 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
1979 frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
1984 ^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
1989 @subheading The @code{-exec-next} Command
1992 @subsubheading Synopsis
1998 Asynchronous command. Resumes execution of the inferior program, stopping
1999 when the beginning of the next source line is reached.
2001 @subsubheading @value{GDBN} Command
2003 The corresponding @value{GDBN} command is @samp{next}.
2005 @subsubheading Example
2011 *stopped,reason="end-stepping-range",line="8",file="hello.c"
2016 @subheading The @code{-exec-next-instruction} Command
2017 @findex -exec-next-instruction
2019 @subsubheading Synopsis
2022 -exec-next-instruction
2025 Asynchronous command. Executes one machine instruction. If the
2026 instruction is a function call continues until the function returns. If
2027 the program stops at an instruction in the middle of a source line, the
2028 address will be printed as well.
2030 @subsubheading @value{GDBN} Command
2032 The corresponding @value{GDBN} command is @samp{nexti}.
2034 @subsubheading Example
2038 -exec-next-instruction
2042 *stopped,reason="end-stepping-range",
2043 addr="0x000100d4",line="5",file="hello.c"
2048 @subheading The @code{-exec-return} Command
2049 @findex -exec-return
2051 @subsubheading Synopsis
2057 Makes current function return immediately. Doesn't execute the inferior.
2058 Displays the new current frame.
2060 @subsubheading @value{GDBN} Command
2062 The corresponding @value{GDBN} command is @samp{return}.
2064 @subsubheading Example
2068 200-break-insert callee4
2069 200^done,bkpt=@{number="1",addr="0x00010734",
2070 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
2075 000*stopped,reason="breakpoint-hit",bkptno="1",
2076 frame=@{func="callee4",args=[],
2077 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
2083 111^done,frame=@{level="0",func="callee3",
2084 args=[@{name="strarg",
2085 value="0x11940 \"A string argument.\""@}],
2086 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
2091 @subheading The @code{-exec-run} Command
2094 @subsubheading Synopsis
2100 Asynchronous command. Starts execution of the inferior from the
2101 beginning. The inferior executes until either a breakpoint is
2102 encountered or the program exits.
2104 @subsubheading @value{GDBN} Command
2106 The corresponding @value{GDBN} command is @samp{run}.
2108 @subsubheading Example
2113 ^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
2118 *stopped,reason="breakpoint-hit",bkptno="1",
2119 frame=@{func="main",args=[],file="recursive2.c",line="4"@}
2124 @subheading The @code{-exec-show-arguments} Command
2125 @findex -exec-show-arguments
2127 @subsubheading Synopsis
2130 -exec-show-arguments
2133 Print the arguments of the program.
2135 @subsubheading @value{GDBN} Command
2137 The corresponding @value{GDBN} command is @samp{show args}.
2139 @subsubheading Example
2142 @c @subheading -exec-signal
2144 @subheading The @code{-exec-step} Command
2147 @subsubheading Synopsis
2153 Asynchronous command. Resumes execution of the inferior program, stopping
2154 when the beginning of the next source line is reached, if the next
2155 source line is not a function call. If it is, stop at the first
2156 instruction of the called function.
2158 @subsubheading @value{GDBN} Command
2160 The corresponding @value{GDBN} command is @samp{step}.
2162 @subsubheading Example
2164 Stepping into a function:
2170 *stopped,reason="end-stepping-range",
2171 frame=@{func="foo",args=[@{name="a",value="10"@},
2172 @{name="b",value="0"@}],file="recursive2.c",line="11"@}
2182 *stopped,reason="end-stepping-range",line="14",file="recursive2.c"
2187 @subheading The @code{-exec-step-instruction} Command
2188 @findex -exec-step-instruction
2190 @subsubheading Synopsis
2193 -exec-step-instruction
2196 Asynchronous command. Resumes the inferior which executes one machine
2197 instruction. The output, once @value{GDBN} has stopped, will vary depending on
2198 whether we have stopped in the middle of a source line or not. In the
2199 former case, the address at which the program stopped will be printed as
2202 @subsubheading @value{GDBN} Command
2204 The corresponding @value{GDBN} command is @samp{stepi}.
2206 @subsubheading Example
2210 -exec-step-instruction
2214 *stopped,reason="end-stepping-range",
2215 frame=@{func="foo",args=[],file="try.c",line="10"@}
2217 -exec-step-instruction
2221 *stopped,reason="end-stepping-range",
2222 frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
2227 @subheading The @code{-exec-until} Command
2230 @subsubheading Synopsis
2233 -exec-until [ @var{location} ]
2236 Asynchronous command. Executes the inferior until the @var{location}
2237 specified in the argument is reached. If there is no argument, the inferior
2238 executes until a source line greater than the current one is reached.
2239 The reason for stopping in this case will be @samp{location-reached}.
2241 @subsubheading @value{GDBN} Command
2243 The corresponding @value{GDBN} command is @samp{until}.
2245 @subsubheading Example
2249 -exec-until recursive2.c:6
2253 *stopped,reason="location-reached",frame=@{func="main",args=[],
2254 file="recursive2.c",line="6"@}
2259 @subheading -file-clear
2260 Is this going away????
2264 @subheading The @code{-file-exec-and-symbols} Command
2265 @findex -file-exec-and-symbols
2267 @subsubheading Synopsis
2270 -file-exec-and-symbols @var{file}
2273 Specify the executable file to be debugged. This file is the one from
2274 which the symbol table is also read. If no file is specified, the
2275 command clears the executable and symbol information. If breakpoints
2276 are set when using this command with no arguments, @value{GDBN} will produce
2277 error messages. Otherwise, no output is produced, except a completion
2280 @subsubheading @value{GDBN} Command
2282 The corresponding @value{GDBN} command is @samp{file}.
2284 @subsubheading Example
2288 -file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2294 @subheading The @code{-file-exec-file} Command
2295 @findex -file-exec-file
2297 @subsubheading Synopsis
2300 -file-exec-file @var{file}
2303 Specify the executable file to be debugged. Unlike
2304 @samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
2305 from this file. If used without argument, @value{GDBN} clears the information
2306 about the executable file. No output is produced, except a completion
2309 @subsubheading @value{GDBN} Command
2311 The corresponding @value{GDBN} command is @samp{exec-file}.
2313 @subsubheading Example
2317 -file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2323 @subheading The @code{-file-list-exec-sections} Command
2324 @findex -file-list-exec-sections
2326 @subsubheading Synopsis
2329 -file-list-exec-sections
2332 List the sections of the current executable file.
2334 @subsubheading @value{GDBN} Command
2336 The @value{GDBN} command @samp{info file} shows, among the rest, the same
2337 information as this command. @code{gdbtk} has a corresponding command
2338 @samp{gdb_load_info}.
2340 @subsubheading Example
2344 @subheading The @code{-file-list-exec-source-files} Command
2345 @findex -file-list-exec-source-files
2347 @subsubheading Synopsis
2350 -file-list-exec-source-files
2353 List the source files for the current executable.
2355 @subsubheading @value{GDBN} Command
2357 There's no @value{GDBN} command which directly corresponds to this one.
2358 @code{gdbtk} has an analogous command @samp{gdb_listfiles}.
2360 @subsubheading Example
2364 @subheading The @code{-file-list-shared-libraries} Command
2365 @findex -file-list-shared-libraries
2367 @subsubheading Synopsis
2370 -file-list-shared-libraries
2373 List the shared libraries in the program.
2375 @subsubheading @value{GDBN} Command
2377 The corresponding @value{GDBN} command is @samp{info shared}.
2379 @subsubheading Example
2383 @subheading The @code{-file-list-symbol-files} Command
2384 @findex -file-list-symbol-files
2386 @subsubheading Synopsis
2389 -file-list-symbol-files
2394 @subsubheading @value{GDBN} Command
2396 The corresponding @value{GDBN} command is @samp{info file} (part of it).
2398 @subsubheading Example
2402 @subheading The @code{-file-symbol-file} Command
2403 @findex -file-symbol-file
2405 @subsubheading Synopsis
2408 -file-symbol-file @var{file}
2411 Read symbol table info from the specified @var{file} argument. When
2412 used without arguments, clears @value{GDBN}'s symbol table info. No output is
2413 produced, except for a completion notification.
2415 @subsubheading @value{GDBN} Command
2417 The corresponding @value{GDBN} command is @samp{symbol-file}.
2419 @subsubheading Example
2423 -file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
2428 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2429 @node GDB/MI Miscellaneous Commands
2430 @section Miscellaneous @value{GDBN} commands in @sc{gdb/mi}
2432 @c @subheading -gdb-complete
2434 @subheading The @code{-gdb-exit} Command
2437 @subsubheading Synopsis
2443 Exit @value{GDBN} immediately.
2445 @subsubheading @value{GDBN} Command
2447 Approximately corresponds to @samp{quit}.
2449 @subsubheading Example
2456 @subheading The @code{-gdb-set} Command
2459 @subsubheading Synopsis
2465 Set an internal @value{GDBN} variable.
2466 @c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
2468 @subsubheading @value{GDBN} Command
2470 The corresponding @value{GDBN} command is @samp{set}.
2472 @subsubheading Example
2482 @subheading The @code{-gdb-show} Command
2485 @subsubheading Synopsis
2491 Show the current value of a @value{GDBN} variable.
2493 @subsubheading @value{GDBN} command
2495 The corresponding @value{GDBN} command is @samp{show}.
2497 @subsubheading Example
2506 @c @subheading -gdb-source
2509 @subheading The @code{-gdb-version} Command
2510 @findex -gdb-version
2512 @subsubheading Synopsis
2518 Show version information for @value{GDBN}. Used mostly in testing.
2520 @subsubheading @value{GDBN} Command
2522 There's no equivalent @value{GDBN} command. @value{GDBN} by default shows this
2523 information when you start an interactive session.
2525 @subsubheading Example
2527 @c This example modifies the actual output from GDB to avoid overfull
2533 ~Copyright 2000 Free Software Foundation, Inc.
2534 ~GDB is free software, covered by the GNU General Public License, and
2535 ~you are welcome to change it and/or distribute copies of it under
2536 ~ certain conditions.
2537 ~Type "show copying" to see the conditions.
2538 ~There is absolutely no warranty for GDB. Type "show warranty" for
2540 ~This GDB was configured as
2541 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
2547 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2548 @node GDB/MI Kod Commands
2549 @section @sc{gdb/mi} Kod Commands
2551 The Kod commands are not implemented.
2553 @c @subheading -kod-info
2555 @c @subheading -kod-list
2557 @c @subheading -kod-list-object-types
2559 @c @subheading -kod-show
2561 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2562 @node GDB/MI Memory Overlay Commands
2563 @section @sc{gdb/mi} Memory Overlay Commands
2565 The memory overlay commands are not implemented.
2567 @c @subheading -overlay-auto
2569 @c @subheading -overlay-list-mapping-state
2571 @c @subheading -overlay-list-overlays
2573 @c @subheading -overlay-map
2575 @c @subheading -overlay-off
2577 @c @subheading -overlay-on
2579 @c @subheading -overlay-unmap
2581 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2582 @node GDB/MI Signal Handling Commands
2583 @section @sc{gdb/mi} Signal Handling Commands
2585 Signal handling commands are not implemented.
2587 @c @subheading -signal-handle
2589 @c @subheading -signal-list-handle-actions
2591 @c @subheading -signal-list-signal-types
2595 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2596 @node GDB/MI Stack Manipulation
2597 @section @sc{gdb/mi} Stack Manipulation Commands
2600 @subheading The @code{-stack-info-frame} Command
2601 @findex -stack-info-frame
2603 @subsubheading Synopsis
2609 Get info on the current frame.
2611 @subsubheading @value{GDBN} Command
2613 The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
2614 (without arguments).
2616 @subsubheading Example
2619 @subheading The @code{-stack-info-depth} Command
2620 @findex -stack-info-depth
2622 @subsubheading Synopsis
2625 -stack-info-depth [ @var{max-depth} ]
2628 Return the depth of the stack. If the integer argument @var{max-depth}
2629 is specified, do not count beyond @var{max-depth} frames.
2631 @subsubheading @value{GDBN} Command
2633 There's no equivalent @value{GDBN} command.
2635 @subsubheading Example
2637 For a stack with frame levels 0 through 11:
2647 -stack-info-depth 12
2650 -stack-info-depth 11
2653 -stack-info-depth 13
2658 @subheading The @code{-stack-list-arguments} Command
2659 @findex -stack-list-arguments
2661 @subsubheading Synopsis
2664 -stack-list-arguments @var{show-values}
2665 [ @var{low-frame} @var{high-frame} ]
2668 Display a list of the arguments for the frames between @var{low-frame}
2669 and @var{high-frame} (inclusive). If @var{low-frame} and
2670 @var{high-frame} are not provided, list the arguments for the whole call
2673 The @var{show-values} argument must have a value of 0 or 1. A value of
2674 0 means that only the names of the arguments are listed, a value of 1
2675 means that both names and values of the arguments are printed.
2677 @subsubheading @value{GDBN} Command
2679 @value{GDBN} does not have an equivalent command. @code{gdbtk} has a
2680 @samp{gdb_get_args} command which partially overlaps with the
2681 functionality of @samp{-stack-list-arguments}.
2683 @subsubheading Example
2690 frame=@{level="0",addr="0x00010734",func="callee4",
2691 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
2692 frame=@{level="1",addr="0x0001076c",func="callee3",
2693 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
2694 frame=@{level="2",addr="0x0001078c",func="callee2",
2695 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
2696 frame=@{level="3",addr="0x000107b4",func="callee1",
2697 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
2698 frame=@{level="4",addr="0x000107e0",func="main",
2699 file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
2701 -stack-list-arguments 0
2704 frame=@{level="0",args=[]@},
2705 frame=@{level="1",args=[name="strarg"]@},
2706 frame=@{level="2",args=[name="intarg",name="strarg"]@},
2707 frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
2708 frame=@{level="4",args=[]@}]
2710 -stack-list-arguments 1
2713 frame=@{level="0",args=[]@},
2715 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
2716 frame=@{level="2",args=[
2717 @{name="intarg",value="2"@},
2718 @{name="strarg",value="0x11940 \"A string argument.\""@}]@},
2719 @{frame=@{level="3",args=[
2720 @{name="intarg",value="2"@},
2721 @{name="strarg",value="0x11940 \"A string argument.\""@},
2722 @{name="fltarg",value="3.5"@}]@},
2723 frame=@{level="4",args=[]@}]
2725 -stack-list-arguments 0 2 2
2726 ^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
2728 -stack-list-arguments 1 2 2
2729 ^done,stack-args=[frame=@{level="2",
2730 args=[@{name="intarg",value="2"@},
2731 @{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
2735 @c @subheading -stack-list-exception-handlers
2738 @subheading The @code{-stack-list-frames} Command
2739 @findex -stack-list-frames
2741 @subsubheading Synopsis
2744 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
2747 List the frames currently on the stack. For each frame it displays the
2752 The frame number, 0 being the topmost frame, i.e. the innermost function.
2754 The @code{$pc} value for that frame.
2758 File name of the source file where the function lives.
2760 Line number corresponding to the @code{$pc}.
2763 If invoked without arguments, this command prints a backtrace for the
2764 whole stack. If given two integer arguments, it shows the frames whose
2765 levels are between the two arguments (inclusive). If the two arguments
2766 are equal, it shows the single frame at the corresponding level.
2768 @subsubheading @value{GDBN} Command
2770 The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
2772 @subsubheading Example
2774 Full stack backtrace:
2780 [frame=@{level="0",addr="0x0001076c",func="foo",
2781 file="recursive2.c",line="11"@},
2782 frame=@{level="1",addr="0x000107a4",func="foo",
2783 file="recursive2.c",line="14"@},
2784 frame=@{level="2",addr="0x000107a4",func="foo",
2785 file="recursive2.c",line="14"@},
2786 frame=@{level="3",addr="0x000107a4",func="foo",
2787 file="recursive2.c",line="14"@},
2788 frame=@{level="4",addr="0x000107a4",func="foo",
2789 file="recursive2.c",line="14"@},
2790 frame=@{level="5",addr="0x000107a4",func="foo",
2791 file="recursive2.c",line="14"@},
2792 frame=@{level="6",addr="0x000107a4",func="foo",
2793 file="recursive2.c",line="14"@},
2794 frame=@{level="7",addr="0x000107a4",func="foo",
2795 file="recursive2.c",line="14"@},
2796 frame=@{level="8",addr="0x000107a4",func="foo",
2797 file="recursive2.c",line="14"@},
2798 frame=@{level="9",addr="0x000107a4",func="foo",
2799 file="recursive2.c",line="14"@},
2800 frame=@{level="10",addr="0x000107a4",func="foo",
2801 file="recursive2.c",line="14"@},
2802 frame=@{level="11",addr="0x00010738",func="main",
2803 file="recursive2.c",line="4"@}]
2807 Show frames between @var{low_frame} and @var{high_frame}:
2811 -stack-list-frames 3 5
2813 [frame=@{level="3",addr="0x000107a4",func="foo",
2814 file="recursive2.c",line="14"@},
2815 frame=@{level="4",addr="0x000107a4",func="foo",
2816 file="recursive2.c",line="14"@},
2817 frame=@{level="5",addr="0x000107a4",func="foo",
2818 file="recursive2.c",line="14"@}]
2822 Show a single frame:
2826 -stack-list-frames 3 3
2828 [frame=@{level="3",addr="0x000107a4",func="foo",
2829 file="recursive2.c",line="14"@}]
2834 @subheading The @code{-stack-list-locals} Command
2835 @findex -stack-list-locals
2837 @subsubheading Synopsis
2840 -stack-list-locals @var{print-values}
2843 Display the local variable names for the current frame. With an
2844 argument of 0 prints only the names of the variables, with argument of 1
2845 prints also their values.
2847 @subsubheading @value{GDBN} Command
2849 @samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
2851 @subsubheading Example
2855 -stack-list-locals 0
2856 ^done,locals=[name="A",name="B",name="C"]
2858 -stack-list-locals 1
2859 ^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
2860 @{name="C",value="3"@}]
2865 @subheading The @code{-stack-select-frame} Command
2866 @findex -stack-select-frame
2868 @subsubheading Synopsis
2871 -stack-select-frame @var{framenum}
2874 Change the current frame. Select a different frame @var{framenum} on
2877 @subsubheading @value{GDBN} Command
2879 The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
2880 @samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
2882 @subsubheading Example
2886 -stack-select-frame 2
2891 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2892 @node GDB/MI Symbol Query
2893 @section @sc{gdb/mi} Symbol Query Commands
2896 @subheading The @code{-symbol-info-address} Command
2897 @findex -symbol-info-address
2899 @subsubheading Synopsis
2902 -symbol-info-address @var{symbol}
2905 Describe where @var{symbol} is stored.
2907 @subsubheading @value{GDBN} Command
2909 The corresponding @value{GDBN} command is @samp{info address}.
2911 @subsubheading Example
2915 @subheading The @code{-symbol-info-file} Command
2916 @findex -symbol-info-file
2918 @subsubheading Synopsis
2924 Show the file for the symbol.
2926 @subsubheading @value{GDBN} Command
2928 There's no equivalent @value{GDBN} command. @code{gdbtk} has
2929 @samp{gdb_find_file}.
2931 @subsubheading Example
2935 @subheading The @code{-symbol-info-function} Command
2936 @findex -symbol-info-function
2938 @subsubheading Synopsis
2941 -symbol-info-function
2944 Show which function the symbol lives in.
2946 @subsubheading @value{GDBN} Command
2948 @samp{gdb_get_function} in @code{gdbtk}.
2950 @subsubheading Example
2954 @subheading The @code{-symbol-info-line} Command
2955 @findex -symbol-info-line
2957 @subsubheading Synopsis
2963 Show the core addresses of the code for a source line.
2965 @subsubheading @value{GDBN} Command
2967 The corresponding @value{GDBN} comamnd is @samp{info line}.
2968 @code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
2970 @subsubheading Example
2974 @subheading The @code{-symbol-info-symbol} Command
2975 @findex -symbol-info-symbol
2977 @subsubheading Synopsis
2980 -symbol-info-symbol @var{addr}
2983 Describe what symbol is at location @var{addr}.
2985 @subsubheading @value{GDBN} Command
2987 The corresponding @value{GDBN} command is @samp{info symbol}.
2989 @subsubheading Example
2993 @subheading The @code{-symbol-list-functions} Command
2994 @findex -symbol-list-functions
2996 @subsubheading Synopsis
2999 -symbol-list-functions
3002 List the functions in the executable.
3004 @subsubheading @value{GDBN} Command
3006 @samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
3007 @samp{gdb_search} in @code{gdbtk}.
3009 @subsubheading Example
3013 @subheading The @code{-symbol-list-types} Command
3014 @findex -symbol-list-types
3016 @subsubheading Synopsis
3022 List all the type names.
3024 @subsubheading @value{GDBN} Command
3026 The corresponding commands are @samp{info types} in @value{GDBN},
3027 @samp{gdb_search} in @code{gdbtk}.
3029 @subsubheading Example
3033 @subheading The @code{-symbol-list-variables} Command
3034 @findex -symbol-list-variables
3036 @subsubheading Synopsis
3039 -symbol-list-variables
3042 List all the global and static variable names.
3044 @subsubheading @value{GDBN} Command
3046 @samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
3048 @subsubheading Example
3052 @subheading The @code{-symbol-locate} Command
3053 @findex -symbol-locate
3055 @subsubheading Synopsis
3061 @subsubheading @value{GDBN} Command
3063 @samp{gdb_loc} in @code{gdbtk}.
3065 @subsubheading Example
3069 @subheading The @code{-symbol-type} Command
3070 @findex -symbol-type
3072 @subsubheading Synopsis
3075 -symbol-type @var{variable}
3078 Show type of @var{variable}.
3080 @subsubheading @value{GDBN} Command
3082 The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
3083 @samp{gdb_obj_variable}.
3085 @subsubheading Example
3089 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3090 @node GDB/MI Target Manipulation
3091 @section @sc{gdb/mi} Target Manipulation Commands
3094 @subheading The @code{-target-attach} Command
3095 @findex -target-attach
3097 @subsubheading Synopsis
3100 -target-attach @var{pid} | @var{file}
3103 Attach to a process @var{pid} or a file @var{file} outside of @value{GDBN}.
3105 @subsubheading @value{GDBN} command
3107 The corresponding @value{GDBN} command is @samp{attach}.
3109 @subsubheading Example
3113 @subheading The @code{-target-compare-sections} Command
3114 @findex -target-compare-sections
3116 @subsubheading Synopsis
3119 -target-compare-sections [ @var{section} ]
3122 Compare data of section @var{section} on target to the exec file.
3123 Without the argument, all sections are compared.
3125 @subsubheading @value{GDBN} Command
3127 The @value{GDBN} equivalent is @samp{compare-sections}.
3129 @subsubheading Example
3133 @subheading The @code{-target-detach} Command
3134 @findex -target-detach
3136 @subsubheading Synopsis
3142 Disconnect from the remote target. There's no output.
3144 @subsubheading @value{GDBN} command
3146 The corresponding @value{GDBN} command is @samp{detach}.
3148 @subsubheading Example
3158 @subheading The @code{-target-download} Command
3159 @findex -target-download
3161 @subsubheading Synopsis
3167 Loads the executable onto the remote target.
3168 It prints out an update message every half second, which includes the fields:
3172 The name of the section.
3174 The size of what has been sent so far for that section.
3176 The size of the section.
3178 The total size of what was sent so far (the current and the previous sections).
3180 The size of the overall executable to download.
3184 Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
3185 @sc{gdb/mi} Output Syntax}).
3187 In addition, it prints the name and size of the sections, as they are
3188 downloaded. These messages include the following fields:
3192 The name of the section.
3194 The size of the section.
3196 The size of the overall executable to download.
3200 At the end, a summary is printed.
3202 @subsubheading @value{GDBN} Command
3204 The corresponding @value{GDBN} command is @samp{load}.
3206 @subsubheading Example
3208 Note: each status message appears on a single line. Here the messages
3209 have been broken down so that they can fit onto a page.
3214 +download,@{section=".text",section-size="6668",total-size="9880"@}
3215 +download,@{section=".text",section-sent="512",section-size="6668",
3216 total-sent="512",total-size="9880"@}
3217 +download,@{section=".text",section-sent="1024",section-size="6668",
3218 total-sent="1024",total-size="9880"@}
3219 +download,@{section=".text",section-sent="1536",section-size="6668",
3220 total-sent="1536",total-size="9880"@}
3221 +download,@{section=".text",section-sent="2048",section-size="6668",
3222 total-sent="2048",total-size="9880"@}
3223 +download,@{section=".text",section-sent="2560",section-size="6668",
3224 total-sent="2560",total-size="9880"@}
3225 +download,@{section=".text",section-sent="3072",section-size="6668",
3226 total-sent="3072",total-size="9880"@}
3227 +download,@{section=".text",section-sent="3584",section-size="6668",
3228 total-sent="3584",total-size="9880"@}
3229 +download,@{section=".text",section-sent="4096",section-size="6668",
3230 total-sent="4096",total-size="9880"@}
3231 +download,@{section=".text",section-sent="4608",section-size="6668",
3232 total-sent="4608",total-size="9880"@}
3233 +download,@{section=".text",section-sent="5120",section-size="6668",
3234 total-sent="5120",total-size="9880"@}
3235 +download,@{section=".text",section-sent="5632",section-size="6668",
3236 total-sent="5632",total-size="9880"@}
3237 +download,@{section=".text",section-sent="6144",section-size="6668",
3238 total-sent="6144",total-size="9880"@}
3239 +download,@{section=".text",section-sent="6656",section-size="6668",
3240 total-sent="6656",total-size="9880"@}
3241 +download,@{section=".init",section-size="28",total-size="9880"@}
3242 +download,@{section=".fini",section-size="28",total-size="9880"@}
3243 +download,@{section=".data",section-size="3156",total-size="9880"@}
3244 +download,@{section=".data",section-sent="512",section-size="3156",
3245 total-sent="7236",total-size="9880"@}
3246 +download,@{section=".data",section-sent="1024",section-size="3156",
3247 total-sent="7748",total-size="9880"@}
3248 +download,@{section=".data",section-sent="1536",section-size="3156",
3249 total-sent="8260",total-size="9880"@}
3250 +download,@{section=".data",section-sent="2048",section-size="3156",
3251 total-sent="8772",total-size="9880"@}
3252 +download,@{section=".data",section-sent="2560",section-size="3156",
3253 total-sent="9284",total-size="9880"@}
3254 +download,@{section=".data",section-sent="3072",section-size="3156",
3255 total-sent="9796",total-size="9880"@}
3256 ^done,address="0x10004",load-size="9880",transfer-rate="6586",
3262 @subheading The @code{-target-exec-status} Command
3263 @findex -target-exec-status
3265 @subsubheading Synopsis
3271 Provide information on the state of the target (whether it is running or
3274 @subsubheading @value{GDBN} Command
3276 There's no equivalent @value{GDBN} command.
3278 @subsubheading Example
3282 @subheading The @code{-target-list-available-targets} Command
3283 @findex -target-list-available-targets
3285 @subsubheading Synopsis
3288 -target-list-available-targets
3291 List the possible targets to connect to.
3293 @subsubheading @value{GDBN} Command
3295 The corresponding @value{GDBN} command is @samp{help target}.
3297 @subsubheading Example
3301 @subheading The @code{-target-list-current-targets} Command
3302 @findex -target-list-current-targets
3304 @subsubheading Synopsis
3307 -target-list-current-targets
3310 Describe the current target.
3312 @subsubheading @value{GDBN} Command
3314 The corresponding information is printed by @samp{info file} (among
3317 @subsubheading Example
3321 @subheading The @code{-target-list-parameters} Command
3322 @findex -target-list-parameters
3324 @subsubheading Synopsis
3327 -target-list-parameters
3332 @subsubheading @value{GDBN} Command
3336 @subsubheading Example
3340 @subheading The @code{-target-select} Command
3341 @findex -target-select
3343 @subsubheading Synopsis
3346 -target-select @var{type} @var{parameters @dots{}}
3349 Connect @value{GDBN} to the remote target. This command takes two args:
3353 The type of target, for instance @samp{async}, @samp{remote}, etc.
3354 @item @var{parameters}
3355 Device names, host names and the like. @xref{Target Commands, ,
3356 Commands for managing targets}, for more details.
3359 The output is a connection notification, followed by the address at
3360 which the target program is, in the following form:
3363 ^connected,addr="@var{address}",func="@var{function name}",
3364 args=[@var{arg list}]
3367 @subsubheading @value{GDBN} Command
3369 The corresponding @value{GDBN} command is @samp{target}.
3371 @subsubheading Example
3375 -target-select async /dev/ttya
3376 ^connected,addr="0xfe00a300",func="??",args=[]
3380 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3381 @node GDB/MI Thread Commands
3382 @section @sc{gdb/mi} Thread Commands
3385 @subheading The @code{-thread-info} Command
3386 @findex -thread-info
3388 @subsubheading Synopsis
3394 @subsubheading @value{GDBN} command
3398 @subsubheading Example
3402 @subheading The @code{-thread-list-all-threads} Command
3403 @findex -thread-list-all-threads
3405 @subsubheading Synopsis
3408 -thread-list-all-threads
3411 @subsubheading @value{GDBN} Command
3413 The equivalent @value{GDBN} command is @samp{info threads}.
3415 @subsubheading Example
3419 @subheading The @code{-thread-list-ids} Command
3420 @findex -thread-list-ids
3422 @subsubheading Synopsis
3428 Produces a list of the currently known @value{GDBN} thread ids. At the
3429 end of the list it also prints the total number of such threads.
3431 @subsubheading @value{GDBN} Command
3433 Part of @samp{info threads} supplies the same information.
3435 @subsubheading Example
3437 No threads present, besides the main process:
3442 ^done,thread-ids=@{@},number-of-threads="0"
3452 ^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
3453 number-of-threads="3"
3458 @subheading The @code{-thread-select} Command
3459 @findex -thread-select
3461 @subsubheading Synopsis
3464 -thread-select @var{threadnum}
3467 Make @var{threadnum} the current thread. It prints the number of the new
3468 current thread, and the topmost frame for that thread.
3470 @subsubheading @value{GDBN} Command
3472 The corresponding @value{GDBN} command is @samp{thread}.
3474 @subsubheading Example
3481 *stopped,reason="end-stepping-range",thread-id="2",line="187",
3482 file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
3486 thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
3487 number-of-threads="3"
3490 ^done,new-thread-id="3",
3491 frame=@{level="0",func="vprintf",
3492 args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
3493 @{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
3497 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3498 @node GDB/MI Tracepoint Commands
3499 @section @sc{gdb/mi} Tracepoint Commands
3501 The tracepoint commands are not yet implemented.
3503 @c @subheading -trace-actions
3505 @c @subheading -trace-delete
3507 @c @subheading -trace-disable
3509 @c @subheading -trace-dump
3511 @c @subheading -trace-enable
3513 @c @subheading -trace-exists
3515 @c @subheading -trace-find
3517 @c @subheading -trace-frame-number
3519 @c @subheading -trace-info
3521 @c @subheading -trace-insert
3523 @c @subheading -trace-list
3525 @c @subheading -trace-pass-count
3527 @c @subheading -trace-save
3529 @c @subheading -trace-start
3531 @c @subheading -trace-stop
3534 @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3535 @node GDB/MI Variable Objects
3536 @section @sc{gdb/mi} Variable Objects
3539 @subheading Motivation for Variable Objects in @sc{gdb/mi}
3541 For the implementation of a variable debugger window (locals, watched
3542 expressions, etc.), we are proposing the adaptation of the existing code
3543 used by @code{Insight}.
3545 The two main reasons for that are:
3549 It has been proven in practice (it is already on its second generation).
3552 It will shorten development time (needless to say how important it is
3556 The original interface was designed to be used by Tcl code, so it was
3557 slightly changed so it could be used through @sc{gdb/mi}. This section
3558 describes the @sc{gdb/mi} operations that will be available and gives some
3559 hints about their use.
3561 @emph{Note}: In addition to the set of operations described here, we
3562 expect the @sc{gui} implementation of a variable window to require, at
3563 least, the following operations:
3566 @item @code{-gdb-show} @code{output-radix}
3567 @item @code{-stack-list-arguments}
3568 @item @code{-stack-list-locals}
3569 @item @code{-stack-select-frame}
3572 @subheading Introduction to Variable Objects in @sc{gdb/mi}
3574 @cindex variable objects in @sc{gdb/mi}
3575 The basic idea behind variable objects is the creation of a named object
3576 to represent a variable, an expression, a memory location or even a CPU
3577 register. For each object created, a set of operations is available for
3578 examining or changing its properties.
3580 Furthermore, complex data types, such as C structures, are represented
3581 in a tree format. For instance, the @code{struct} type variable is the
3582 root and the children will represent the struct members. If a child
3583 is itself of a complex type, it will also have children of its own.
3584 Appropriate language differences are handled for C, C@t{++} and Java.
3586 When returning the actual values of the objects, this facility allows
3587 for the individual selection of the display format used in the result
3588 creation. It can be chosen among: binary, decimal, hexadecimal, octal
3589 and natural. Natural refers to a default format automatically
3590 chosen based on the variable type (like decimal for an @code{int}, hex
3591 for pointers, etc.).
3593 The following is the complete set of @sc{gdb/mi} operations defined to
3594 access this functionality:
3596 @multitable @columnfractions .4 .6
3597 @item @strong{Operation}
3598 @tab @strong{Description}
3600 @item @code{-var-create}
3601 @tab create a variable object
3602 @item @code{-var-delete}
3603 @tab delete the variable object and its children
3604 @item @code{-var-set-format}
3605 @tab set the display format of this variable
3606 @item @code{-var-show-format}
3607 @tab show the display format of this variable
3608 @item @code{-var-info-num-children}
3609 @tab tells how many children this object has
3610 @item @code{-var-list-children}
3611 @tab return a list of the object's children
3612 @item @code{-var-info-type}
3613 @tab show the type of this variable object
3614 @item @code{-var-info-expression}
3615 @tab print what this variable object represents
3616 @item @code{-var-show-attributes}
3617 @tab is this variable editable? does it exist here?
3618 @item @code{-var-evaluate-expression}
3619 @tab get the value of this variable
3620 @item @code{-var-assign}
3621 @tab set the value of this variable
3622 @item @code{-var-update}
3623 @tab update the variable and its children
3626 In the next subsection we describe each operation in detail and suggest
3629 @subheading Description And Use of Operations on Variable Objects
3631 @subheading The @code{-var-create} Command
3634 @subsubheading Synopsis
3637 -var-create @{@var{name} | "-"@}
3638 @{@var{frame-addr} | "*"@} @var{expression}
3641 This operation creates a variable object, which allows the monitoring of
3642 a variable, the result of an expression, a memory cell or a CPU
3645 The @var{name} parameter is the string by which the object can be
3646 referenced. It must be unique. If @samp{-} is specified, the varobj
3647 system will generate a string ``varNNNNNN'' automatically. It will be
3648 unique provided that one does not specify @var{name} on that format.
3649 The command fails if a duplicate name is found.
3651 The frame under which the expression should be evaluated can be
3652 specified by @var{frame-addr}. A @samp{*} indicates that the current
3653 frame should be used.
3655 @var{expression} is any expression valid on the current language set (must not
3656 begin with a @samp{*}), or one of the following:
3660 @samp{*@var{addr}}, where @var{addr} is the address of a memory cell
3663 @samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
3666 @samp{$@var{regname}} --- a CPU register name
3669 @subsubheading Result
3671 This operation returns the name, number of children and the type of the
3672 object created. Type is returned as a string as the ones generated by
3673 the @value{GDBN} CLI:
3676 name="@var{name}",numchild="N",type="@var{type}"
3680 @subheading The @code{-var-delete} Command
3683 @subsubheading Synopsis
3686 -var-delete @var{name}
3689 Deletes a previously created variable object and all of its children.
3691 Returns an error if the object @var{name} is not found.
3694 @subheading The @code{-var-set-format} Command
3695 @findex -var-set-format
3697 @subsubheading Synopsis
3700 -var-set-format @var{name} @var{format-spec}
3703 Sets the output format for the value of the object @var{name} to be
3706 The syntax for the @var{format-spec} is as follows:
3709 @var{format-spec} @expansion{}
3710 @{binary | decimal | hexadecimal | octal | natural@}
3714 @subheading The @code{-var-show-format} Command
3715 @findex -var-show-format
3717 @subsubheading Synopsis
3720 -var-show-format @var{name}
3723 Returns the format used to display the value of the object @var{name}.
3726 @var{format} @expansion{}
3731 @subheading The @code{-var-info-num-children} Command
3732 @findex -var-info-num-children
3734 @subsubheading Synopsis
3737 -var-info-num-children @var{name}
3740 Returns the number of children of a variable object @var{name}:
3747 @subheading The @code{-var-list-children} Command
3748 @findex -var-list-children
3750 @subsubheading Synopsis
3753 -var-list-children @var{name}
3756 Returns a list of the children of the specified variable object:
3759 numchild=@var{n},children=@{@{name=@var{name},
3760 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}@}
3764 @subheading The @code{-var-info-type} Command
3765 @findex -var-info-type
3767 @subsubheading Synopsis
3770 -var-info-type @var{name}
3773 Returns the type of the specified variable @var{name}. The type is
3774 returned as a string in the same format as it is output by the
3782 @subheading The @code{-var-info-expression} Command
3783 @findex -var-info-expression
3785 @subsubheading Synopsis
3788 -var-info-expression @var{name}
3791 Returns what is represented by the variable object @var{name}:
3794 lang=@var{lang-spec},exp=@var{expression}
3798 where @var{lang-spec} is @code{@{"C" | "C++" | "Java"@}}.
3800 @subheading The @code{-var-show-attributes} Command
3801 @findex -var-show-attributes
3803 @subsubheading Synopsis
3806 -var-show-attributes @var{name}
3809 List attributes of the specified variable object @var{name}:
3812 status=@var{attr} [ ( ,@var{attr} )* ]
3816 where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
3818 @subheading The @code{-var-evaluate-expression} Command
3819 @findex -var-evaluate-expression
3821 @subsubheading Synopsis
3824 -var-evaluate-expression @var{name}
3827 Evaluates the expression that is represented by the specified variable
3828 object and returns its value as a string in the current format specified
3835 Note that one must invoke @code{-var-list-children} for a variable
3836 before the value of a child variable can be evaluated.
3838 @subheading The @code{-var-assign} Command
3841 @subsubheading Synopsis
3844 -var-assign @var{name} @var{expression}
3847 Assigns the value of @var{expression} to the variable object specified
3848 by @var{name}. The object must be @samp{editable}. If the variable's
3849 value is altered by the assign, the variable will show up in any
3850 subsequent @code{-var-update} list.
3852 @subsubheading Example
3860 ^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
3864 @subheading The @code{-var-update} Command
3867 @subsubheading Synopsis
3870 -var-update @{@var{name} | "*"@}
3873 Update the value of the variable object @var{name} by evaluating its
3874 expression after fetching all the new values from memory or registers.
3875 A @samp{*} causes all existing variable objects to be updated.