1 \input texinfo @c -*-texinfo-*-
3 @setfilename annotate.info
5 @c This is a dir.info fragment to support semi-automated addition of
6 @c manuals to an info tree.
7 @dircategory Software development
9 * Annotate: (annotate). The obsolete annotation interface.
15 @settitle @value{GDBN}'s Obsolete Annotations
16 @setchapternewpage off
22 @c NOTE: cagney/2003-07-28:
23 @c Don't make this migration doccument an appendix of GDB's user guide.
24 @c By keeping this separate, the size of the user guide is contained. If
25 @c the user guide to get much bigger it would need to switch to a larger,
26 @c more expensive, form factor and would drive up the manuals publication
27 @c cost. Having a smaller cheaper manual helps the GNU Press with its sales.
30 This file documents @value{GDBN}'s obsolete annotations.
32 Copyright (C) 1994, 1995, 2000, 2001, 2003 Free Software Foundation, Inc.
34 Permission is granted to copy, distribute and/or modify this document
35 under the terms of the GNU Free Documentation License, Version 1.1 or
36 any later version published by the Free Software Foundation; with no
37 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
38 Texts. A copy of the license is included in the section entitled ``GNU
39 Free Documentation License''.
44 @title @value{GDBN}'s Obsolete Annotations
45 @subtitle Edition @value{EDITION}
46 @subtitle @value{DATE}
47 @author Free Software Foundation
49 @vskip 0pt plus 1filll
50 Copyright @copyright{} 1994, 1995, 2000, 2001, 2003 Free Software
53 Permission is granted to copy, distribute and/or modify this document
54 under the terms of the GNU Free Documentation License, Version 1.1 or
55 any later version published by the Free Software Foundation; with no
56 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
57 Texts. A copy of the license is included in the section entitled ``GNU
58 Free Documentation License''.
65 This document describes the obsolete level two annotation interface
66 implemented in older @value{GDBN} versions.
69 This is Edition @value{EDITION}, @value{DATE}.
74 * Annotations Overview:: What annotations are; the general syntax.
75 * Limitations:: Limitations of the annotation interface.
76 * Migrating to GDB/MI:: Migrating to GDB/MI
77 * Server Prefix:: Issuing a command without affecting user state.
78 * Value Annotations:: Values are marked as such.
79 * Frame Annotations:: Stack frames are annotated.
80 * Displays:: @value{GDBN} can be told to display something periodically.
81 * Prompting:: Annotations marking @value{GDBN}'s need for input.
82 * Errors:: Annotations for error messages.
83 * Breakpoint Info:: Information on breakpoints.
84 * Invalidation:: Some annotations describe things now invalid.
85 * Annotations for Running::
86 Whether the program is running, how it stopped, etc.
87 * Source Annotations:: Annotations describing source code.
89 * GNU Free Documentation License::
94 @node Annotations Overview
95 @chapter What is an Annotation?
98 To produce obsolete level two annotations, start @value{GDBN} with the
99 @code{--annotate=2} option.
101 Annotations start with a newline character, two @samp{control-z}
102 characters, and the name of the annotation. If there is no additional
103 information associated with this annotation, the name of the annotation
104 is followed immediately by a newline. If there is additional
105 information, the name of the annotation is followed by a space, the
106 additional information, and a newline. The additional information
107 cannot contain newline characters.
109 Any output not beginning with a newline and two @samp{control-z}
110 characters denotes literal output from @value{GDBN}. Currently there is
111 no need for @value{GDBN} to output a newline followed by two
112 @samp{control-z} characters, but if there was such a need, the
113 annotations could be extended with an @samp{escape} annotation which
114 means those three characters as output.
116 A simple example of starting up @value{GDBN} with annotations is:
121 Copyright 2000 Free Software Foundation, Inc.
122 GDB is free software, covered by the GNU General Public License,
123 and you are welcome to change it and/or distribute copies of it
124 under certain conditions.
125 Type "show copying" to see the conditions.
126 There is absolutely no warranty for GDB. Type "show warranty"
128 This GDB was configured as "sparc-sun-sunos4.1.3"
139 Here @samp{quit} is input to @value{GDBN}; the rest is output from
140 @value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
141 denotes a @samp{control-z} character) are annotations; the rest is
142 output from @value{GDBN}.
145 @chapter Limitations of the Annotation Interface
147 The level two annotations mechanism is known to have a number of
148 technical and architectural limitations. As a consequence, in 2001,
149 with the release of @value{GDBN} 5.1 and the addition of @sc{gdb/mi},
150 the annotation interface was marked as deprecated.
152 This chapter discusses the known problems.
154 @section Dependant on @sc{cli} output
156 The annotation interface works by interspersing markups with
157 @value{GDBN} normal command-line interpreter output. Unfortunately, this
158 makes the annotation client dependant on not just the annotations, but
159 also the @sc{cli} output. This is because the client is forced to
160 assume that specific @value{GDBN} commands provide specific information.
161 Any change to @value{GDBN}'s @sc{cli} output modifies or removes that
162 information and, consequently, likely breaks the client.
164 Since the @sc{gdb/mi} output is independant of the @sc{cli}, it does not
169 The annotation interface relies on value annotations (@pxref{Value
170 Annotations}) and the display mechanism as a way of obtaining up-to-date
171 value information. These mechanisms are not scalable.
173 In a graphical environment, where many values can be displayed
174 simultaneously, a serious performance problem occurs when the client
175 tries to first extract from @value{GDBN}, and then re-display, all those
176 values. The client should instead only request and update the values
179 The @sc{gdb/mi} Variable Objects provide just that mechanism.
183 The annotation interface assumes that a variable's value can only be
184 changed when the target is running. This assumption is not correct. A
185 single assignment to a single variable can result in the entire target,
186 and all displayed values, needing an update.
188 The @sc{gdb/mi} Variable Objects include a mechanism for efficiently
189 reporting such changes.
193 The @sc{gdb/mi} interface includes a dedicated test directory
194 (@file{gdb/gdb.mi}), and any addition or fix to @sc{gdb/mi} must include
197 @section Maintainability
199 The annotation mechanism was implemented by interspersing @sc{cli} print
200 statements with various annotations. As a consequence, any @sc{cli}
201 output change can alter the annotation output.
203 Since the @sc{gdb/mi} output is independant of the @sc{cli}, and the
204 @sc{gdb/mi} is increasingly implemented independant of the @sc{cli}
205 code, its long term maintenance is much easier.
207 @node Migrating to GDB/MI
208 @chapter Migrating to @sc{gdb/mi}
210 By using the @samp{interp mi} command, it is possible for annotation
211 clients to invoke @sc{gdb/mi} commands, and hence access the
212 @sc{gdb/mi}. By doing this, existing annotation clients have a
213 migration path from this obsolete interface to @sc{gdb/mi}.
216 @chapter The Server Prefix
217 @cindex server prefix for annotations
219 To issue a command to @value{GDBN} without affecting certain aspects of
220 the state which is seen by users, prefix it with @samp{server }. This
221 means that this command will not affect the command history, nor will it
222 affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
223 pressed on a line by itself.
225 The server prefix does not affect the recording of values into the value
226 history; to print a value without recording it into the value history,
227 use the @code{output} command instead of the @code{print} command.
229 @node Value Annotations
232 @emph{Value Annotations have been removed. @sc{gdb/mi} instead provides
235 @cindex annotations for values
236 When a value is printed in various contexts, @value{GDBN} uses
237 annotations to delimit the value from the surrounding text.
239 @findex value-history-begin
240 @findex value-history-value
241 @findex value-history-end
242 If a value is printed using @code{print} and added to the value history,
243 the annotation looks like
246 ^Z^Zvalue-history-begin @var{history-number} @var{value-flags}
248 ^Z^Zvalue-history-value
250 ^Z^Zvalue-history-end
254 where @var{history-number} is the number it is getting in the value
255 history, @var{history-string} is a string, such as @samp{$5 = }, which
256 introduces the value to the user, @var{the-value} is the output
257 corresponding to the value itself, and @var{value-flags} is @samp{*} for
258 a value which can be dereferenced and @samp{-} for a value which cannot.
262 If the value is not added to the value history (it is an invalid float
263 or it is printed with the @code{output} command), the annotation is similar:
266 ^Z^Zvalue-begin @var{value-flags}
275 When @value{GDBN} prints an argument to a function (for example, in the output
276 from the @code{backtrace} command), it annotates it as follows:
282 @var{separator-string}
283 ^Z^Zarg-value @var{value-flags}
289 where @var{argument-name} is the name of the argument,
290 @var{separator-string} is text which separates the name from the value
291 for the user's benefit (such as @samp{=}), and @var{value-flags} and
292 @var{the-value} have the same meanings as in a
293 @code{value-history-begin} annotation.
296 @findex field-name-end
299 When printing a structure, @value{GDBN} annotates it as follows:
302 ^Z^Zfield-begin @var{value-flags}
305 @var{separator-string}
312 where @var{field-name} is the name of the field, @var{separator-string}
313 is text which separates the name from the value for the user's benefit
314 (such as @samp{=}), and @var{value-flags} and @var{the-value} have the
315 same meanings as in a @code{value-history-begin} annotation.
317 When printing an array, @value{GDBN} annotates it as follows:
320 ^Z^Zarray-section-begin @var{array-index} @var{value-flags}
324 where @var{array-index} is the index of the first element being
325 annotated and @var{value-flags} has the same meaning as in a
326 @code{value-history-begin} annotation. This is followed by any number
327 of elements, where is element can be either a single element:
331 @samp{,} @var{whitespace} ; @r{omitted for the first element}
336 or a repeated element
341 @samp{,} @var{whitespace} ; @r{omitted for the first element}
343 ^Z^Zelt-rep @var{number-of-repetitions}
344 @var{repetition-string}
348 In both cases, @var{the-value} is the output for the value of the
349 element and @var{whitespace} can contain spaces, tabs, and newlines. In
350 the repeated case, @var{number-of-repetitions} is the number of
351 consecutive array elements which contain that value, and
352 @var{repetition-string} is a string which is designed to convey to the
353 user that repetition is being depicted.
355 @findex array-section-end
356 Once all the array elements have been output, the array annotation is
360 ^Z^Zarray-section-end
363 @node Frame Annotations
366 @emph{Value Annotations have been removed. @sc{gdb/mi} instead provides
367 a number of frame commands.}
369 @emph{Frame annotations are no longer available. The @sc{gdb/mi}
370 provides @samp{-stack-list-arguments}, @samp{-stack-list-locals}, and
371 @samp{-stack-list-frames} commands.}
373 @cindex annotations for frames
374 Whenever @value{GDBN} prints a frame, it annotates it. For example, this applies
375 to frames printed when @value{GDBN} stops, output from commands such as
376 @code{backtrace} or @code{up}, etc.
379 The frame annotation begins with
382 ^Z^Zframe-begin @var{level} @var{address}
387 where @var{level} is the number of the frame (0 is the innermost frame,
388 and other frames have positive numbers), @var{address} is the address of
389 the code executing in that frame, and @var{level-string} is a string
390 designed to convey the level to the user. @var{address} is in the form
391 @samp{0x} followed by one or more lowercase hex digits (note that this
392 does not depend on the language). The frame ends with
399 Between these annotations is the main body of the frame, which can
404 @findex function-call
407 @var{function-call-string}
410 where @var{function-call-string} is text designed to convey to the user
411 that this frame is associated with a function call made by @value{GDBN} to a
412 function in the program being debugged.
415 @findex signal-handler-caller
417 ^Z^Zsignal-handler-caller
418 @var{signal-handler-caller-string}
421 where @var{signal-handler-caller-string} is text designed to convey to
422 the user that this frame is associated with whatever mechanism is used
423 by this operating system to call a signal handler (it is the frame which
424 calls the signal handler, not the frame for the signal handler itself).
429 @findex frame-address
430 @findex frame-address-end
431 This can optionally (depending on whether this is thought of as
432 interesting information for the user to see) begin with
437 ^Z^Zframe-address-end
438 @var{separator-string}
441 where @var{address} is the address executing in the frame (the same
442 address as in the @code{frame-begin} annotation, but printed in a form
443 which is intended for user consumption---in particular, the syntax varies
444 depending on the language), and @var{separator-string} is a string
445 intended to separate this address from what follows for the user's
448 @findex frame-function-name
453 ^Z^Zframe-function-name
459 where @var{function-name} is the name of the function executing in the
460 frame, or @samp{??} if not known, and @var{arguments} are the arguments
461 to the frame, with parentheses around them (each argument is annotated
462 individually as well, @pxref{Value Annotations}).
464 @findex frame-source-begin
465 @findex frame-source-file
466 @findex frame-source-file-end
467 @findex frame-source-line
468 @findex frame-source-end
469 If source information is available, a reference to it is then printed:
472 ^Z^Zframe-source-begin
473 @var{source-intro-string}
474 ^Z^Zframe-source-file
476 ^Z^Zframe-source-file-end
478 ^Z^Zframe-source-line
483 where @var{source-intro-string} separates for the user's benefit the
484 reference from the text which precedes it, @var{filename} is the name of
485 the source file, and @var{line-number} is the line number within that
486 file (the first line is line 1).
489 If @value{GDBN} prints some information about where the frame is from (which
490 library, which load segment, etc.; currently only done on the RS/6000),
498 Then, if source is to actually be displayed for this frame (for example,
499 this is not true for output from the @code{backtrace} command), then a
500 @code{source} annotation (@pxref{Source Annotations}) is displayed. Unlike
501 most annotations, this is output instead of the normal text which would be
502 output, not in addition.
508 @emph{Display Annotations have been removed. @sc{gdb/mi} instead
509 provides Variable Objects.}
511 @findex display-begin
512 @findex display-number-end
513 @findex display-format
514 @findex display-expression
515 @findex display-expression-end
516 @findex display-value
518 @cindex annotations for display
519 When @value{GDBN} is told to display something using the @code{display} command,
520 the results of the display are annotated:
525 ^Z^Zdisplay-number-end
526 @var{number-separator}
529 ^Z^Zdisplay-expression
531 ^Z^Zdisplay-expression-end
532 @var{expression-separator}
539 where @var{number} is the number of the display, @var{number-separator}
540 is intended to separate the number from what follows for the user,
541 @var{format} includes information such as the size, format, or other
542 information about how the value is being displayed, @var{expression} is
543 the expression being displayed, @var{expression-separator} is intended
544 to separate the expression from the text that follows for the user,
545 and @var{value} is the actual value being displayed.
548 @chapter Annotation for @value{GDBN} Input
550 @cindex annotations for prompts
551 When @value{GDBN} prompts for input, it annotates this fact so it is possible
552 to know when to send output, when the output from a given command is
555 Different kinds of input each have a different @dfn{input type}. Each
556 input type has three annotations: a @code{pre-} annotation, which
557 denotes the beginning of any prompt which is being output, a plain
558 annotation, which denotes the end of the prompt, and then a @code{post-}
559 annotation which denotes the end of any echo which may (or may not) be
560 associated with the input. For example, the @code{prompt} input type
561 features the following annotations:
576 When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
580 @findex post-commands
582 When @value{GDBN} prompts for a set of commands, like in the @code{commands}
583 command. The annotations are repeated for each command which is input.
585 @findex pre-overload-choice
586 @findex overload-choice
587 @findex post-overload-choice
588 @item overload-choice
589 When @value{GDBN} wants the user to select between various overloaded functions.
595 When @value{GDBN} wants the user to confirm a potentially dangerous operation.
597 @findex pre-prompt-for-continue
598 @findex prompt-for-continue
599 @findex post-prompt-for-continue
600 @item prompt-for-continue
601 When @value{GDBN} is asking the user to press return to continue. Note: Don't
602 expect this to work well; instead use @code{set height 0} to disable
603 prompting. This is because the counting of lines is buggy in the
604 presence of annotations.
609 @cindex annotations for errors, warnings and interrupts
616 This annotation occurs right before @value{GDBN} responds to an interrupt.
623 This annotation occurs right before @value{GDBN} responds to an error.
625 Quit and error annotations indicate that any annotations which @value{GDBN} was
626 in the middle of may end abruptly. For example, if a
627 @code{value-history-begin} annotation is followed by a @code{error}, one
628 cannot expect to receive the matching @code{value-history-end}. One
629 cannot expect not to receive it either, however; an error annotation
630 does not necessarily mean that @value{GDBN} is immediately returning all the way
634 A quit or error annotation may be preceded by
640 Any output between that and the quit or error annotation is the error
643 Warning messages are not yet annotated.
644 @c If we want to change that, need to fix warning(), type_error(),
645 @c range_error(), and possibly other places.
647 @node Breakpoint Info
648 @chapter Information on Breakpoints
650 @emph{Breakpoint Annotations have been removed. @sc{gdb/mi} instead
651 provides breakpoint commands.}
653 @cindex annotations for breakpoints
654 The output from the @code{info breakpoints} command is annotated as follows:
656 @findex breakpoints-headers
657 @findex breakpoints-table
659 ^Z^Zbreakpoints-headers
661 ^Z^Zbreakpoints-table
665 where @var{header-entry} has the same syntax as an entry (see below) but
666 instead of containing data, it contains strings which are intended to
667 convey the meaning of each field to the user. This is followed by any
668 number of entries. If a field does not apply for this entry, it is
669 omitted. Fields may contain trailing whitespace. Each entry consists
698 Note that @var{address} is intended for user consumption---the syntax
699 varies depending on the language.
703 @findex breakpoints-table-end
705 ^Z^Zbreakpoints-table-end
709 @chapter Invalidation Notices
711 @cindex annotations for invalidation messages
712 The following annotations say that certain pieces of state may have
716 @findex frames-invalid
717 @item ^Z^Zframes-invalid
719 The frames (for example, output from the @code{backtrace} command) may
722 @findex breakpoints-invalid
723 @item ^Z^Zbreakpoints-invalid
725 The breakpoints may have changed. For example, the user just added or
726 deleted a breakpoint.
729 @node Annotations for Running
730 @chapter Running the Program
731 @cindex annotations for running programs
735 When the program starts executing due to a @value{GDBN} command such as
736 @code{step} or @code{continue},
742 is output. When the program stops,
748 is output. Before the @code{stopped} annotation, a variety of
749 annotations describe how the program stopped.
753 @item ^Z^Zexited @var{exit-status}
754 The program exited, and @var{exit-status} is the exit status (zero for
755 successful exit, otherwise nonzero).
759 @findex signal-name-end
760 @findex signal-string
761 @findex signal-string-end
763 The program exited with a signal. After the @code{^Z^Zsignalled}, the
764 annotation continues:
774 ^Z^Zsignal-string-end
779 where @var{name} is the name of the signal, such as @code{SIGILL} or
780 @code{SIGSEGV}, and @var{string} is the explanation of the signal, such
781 as @code{Illegal Instruction} or @code{Segmentation fault}.
782 @var{intro-text}, @var{middle-text}, and @var{end-text} are for the
783 user's benefit and have no particular format.
787 The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
788 just saying that the program received the signal, not that it was
792 @item ^Z^Zbreakpoint @var{number}
793 The program hit breakpoint number @var{number}.
796 @item ^Z^Zwatchpoint @var{number}
797 The program hit watchpoint number @var{number}.
800 @node Source Annotations
801 @chapter Displaying Source
802 @cindex annotations for source display
805 The following annotation is used instead of displaying source code:
808 ^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
811 where @var{filename} is an absolute file name indicating which source
812 file, @var{line} is the line number within that file (where 1 is the
813 first line in the file), @var{character} is the character position
814 within the file (where 0 is the first character in the file) (for most
815 debug formats this will necessarily point to the beginning of a line),
816 @var{middle} is @samp{middle} if @var{addr} is in the middle of the
817 line, or @samp{beg} if @var{addr} is at the beginning of the line, and
818 @var{addr} is the address in the target program associated with the
819 source which is being displayed. @var{addr} is in the form @samp{0x}
820 followed by one or more lowercase hex digits (note that this does not
821 depend on the language).