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 document 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 Copyright @copyright{} 1994-1995, 2000-2001, 2003-2005, 2007-2012 Free
31 Software Foundation, Inc.
33 Permission is granted to copy, distribute and/or modify this document
34 under the terms of the GNU Free Documentation License, Version 1.3 or
35 any later version published by the Free Software Foundation; with no
36 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
37 Texts. A copy of the license is included in the section entitled ``GNU
38 Free Documentation License''.
42 This file documents @value{GDBN}'s obsolete annotations.
48 @title @value{GDBN}'s Obsolete Annotations
49 @subtitle Edition @value{EDITION}
50 @subtitle @value{DATE}
51 @author Free Software Foundation
53 @vskip 0pt plus 1filll
61 This document describes the obsolete level two annotation interface
62 implemented in older @value{GDBN} versions.
65 This is Edition @value{EDITION}, @value{DATE}.
70 * Annotations Overview:: What annotations are; the general syntax.
71 * Limitations:: Limitations of the annotation interface.
72 * Migrating to GDB/MI:: Migrating to GDB/MI
73 * Server Prefix:: Issuing a command without affecting user state.
74 * Value Annotations:: Values are marked as such.
75 * Frame Annotations:: Stack frames are annotated.
76 * Displays:: @value{GDBN} can be told to display something periodically.
77 * Prompting:: Annotations marking @value{GDBN}'s need for input.
78 * Errors:: Annotations for error messages.
79 * Breakpoint Info:: Information on breakpoints.
80 * Invalidation:: Some annotations describe things now invalid.
81 * Annotations for Running::
82 Whether the program is running, how it stopped, etc.
83 * Source Annotations:: Annotations describing source code.
84 * Multi-threaded Apps:: An annotation that reports multi-threadedness.
86 * GNU Free Documentation License::
91 @node Annotations Overview
92 @chapter What is an Annotation?
95 To produce obsolete level two annotations, start @value{GDBN} with the
96 @code{--annotate=2} option.
98 Annotations start with a newline character, two @samp{control-z}
99 characters, and the name of the annotation. If there is no additional
100 information associated with this annotation, the name of the annotation
101 is followed immediately by a newline. If there is additional
102 information, the name of the annotation is followed by a space, the
103 additional information, and a newline. The additional information
104 cannot contain newline characters.
106 Any output not beginning with a newline and two @samp{control-z}
107 characters denotes literal output from @value{GDBN}. Currently there is
108 no need for @value{GDBN} to output a newline followed by two
109 @samp{control-z} characters, but if there was such a need, the
110 annotations could be extended with an @samp{escape} annotation which
111 means those three characters as output.
113 A simple example of starting up @value{GDBN} with annotations is:
118 Copyright 2000 Free Software Foundation, Inc.
119 GDB is free software, covered by the GNU General Public License,
120 and you are welcome to change it and/or distribute copies of it
121 under certain conditions.
122 Type "show copying" to see the conditions.
123 There is absolutely no warranty for GDB. Type "show warranty"
125 This GDB was configured as "sparc-sun-sunos4.1.3"
136 Here @samp{quit} is input to @value{GDBN}; the rest is output from
137 @value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
138 denotes a @samp{control-z} character) are annotations; the rest is
139 output from @value{GDBN}.
142 @chapter Limitations of the Annotation Interface
144 The level two annotations mechanism is known to have a number of
145 technical and architectural limitations. As a consequence, in 2001,
146 with the release of @value{GDBN} 5.1 and the addition of @sc{gdb/mi},
147 the annotation interface was marked as deprecated.
149 This chapter discusses the known problems.
151 @section Dependant on @sc{cli} output
153 The annotation interface works by interspersing markups with
154 @value{GDBN} normal command-line interpreter output. Unfortunately, this
155 makes the annotation client dependant on not just the annotations, but
156 also the @sc{cli} output. This is because the client is forced to
157 assume that specific @value{GDBN} commands provide specific information.
158 Any change to @value{GDBN}'s @sc{cli} output modifies or removes that
159 information and, consequently, likely breaks the client.
161 Since the @sc{gdb/mi} output is independent of the @sc{cli}, it does not
166 The annotation interface relies on value annotations (@pxref{Value
167 Annotations}) and the display mechanism as a way of obtaining up-to-date
168 value information. These mechanisms are not scalable.
170 In a graphical environment, where many values can be displayed
171 simultaneously, a serious performance problem occurs when the client
172 tries to first extract from @value{GDBN}, and then re-display, all those
173 values. The client should instead only request and update the values
176 The @sc{gdb/mi} Variable Objects provide just that mechanism.
180 The annotation interface assumes that a variable's value can only be
181 changed when the target is running. This assumption is not correct. A
182 single assignment to a single variable can result in the entire target,
183 and all displayed values, needing an update.
185 The @sc{gdb/mi} Variable Objects include a mechanism for efficiently
186 reporting such changes.
190 The @sc{gdb/mi} interface includes a dedicated test directory
191 (@file{gdb/gdb.mi}), and any addition or fix to @sc{gdb/mi} must include
194 @section Maintainability
196 The annotation mechanism was implemented by interspersing @sc{cli} print
197 statements with various annotations. As a consequence, any @sc{cli}
198 output change can alter the annotation output.
200 Since the @sc{gdb/mi} output is independent of the @sc{cli}, and the
201 @sc{gdb/mi} is increasingly implemented independent of the @sc{cli}
202 code, its long term maintenance is much easier.
204 @node Migrating to GDB/MI
205 @chapter Migrating to @sc{gdb/mi}
207 By using the @samp{interp mi} command, it is possible for annotation
208 clients to invoke @sc{gdb/mi} commands, and hence access the
209 @sc{gdb/mi}. By doing this, existing annotation clients have a
210 migration path from this obsolete interface to @sc{gdb/mi}.
213 @chapter The Server Prefix
214 @cindex server prefix for annotations
216 To issue a command to @value{GDBN} without affecting certain aspects of
217 the state which is seen by users, prefix it with @samp{server }. This
218 means that this command will not affect the command history, nor will it
219 affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
220 pressed on a line by itself.
222 The server prefix does not affect the recording of values into the value
223 history; to print a value without recording it into the value history,
224 use the @code{output} command instead of the @code{print} command.
226 @node Value Annotations
229 @emph{Value Annotations have been removed. @sc{gdb/mi} instead provides
232 @cindex annotations for values
233 When a value is printed in various contexts, @value{GDBN} uses
234 annotations to delimit the value from the surrounding text.
236 @findex value-history-begin
237 @findex value-history-value
238 @findex value-history-end
239 If a value is printed using @code{print} and added to the value history,
240 the annotation looks like
243 ^Z^Zvalue-history-begin @var{history-number} @var{value-flags}
245 ^Z^Zvalue-history-value
247 ^Z^Zvalue-history-end
251 where @var{history-number} is the number it is getting in the value
252 history, @var{history-string} is a string, such as @samp{$5 = }, which
253 introduces the value to the user, @var{the-value} is the output
254 corresponding to the value itself, and @var{value-flags} is @samp{*} for
255 a value which can be dereferenced and @samp{-} for a value which cannot.
259 If the value is not added to the value history (it is an invalid float
260 or it is printed with the @code{output} command), the annotation is similar:
263 ^Z^Zvalue-begin @var{value-flags}
272 When @value{GDBN} prints an argument to a function (for example, in the output
273 from the @code{backtrace} command), it annotates it as follows:
279 @var{separator-string}
280 ^Z^Zarg-value @var{value-flags}
286 where @var{argument-name} is the name of the argument,
287 @var{separator-string} is text which separates the name from the value
288 for the user's benefit (such as @samp{=}), and @var{value-flags} and
289 @var{the-value} have the same meanings as in a
290 @code{value-history-begin} annotation.
293 @findex field-name-end
296 When printing a structure, @value{GDBN} annotates it as follows:
299 ^Z^Zfield-begin @var{value-flags}
302 @var{separator-string}
309 where @var{field-name} is the name of the field, @var{separator-string}
310 is text which separates the name from the value for the user's benefit
311 (such as @samp{=}), and @var{value-flags} and @var{the-value} have the
312 same meanings as in a @code{value-history-begin} annotation.
314 When printing an array, @value{GDBN} annotates it as follows:
317 ^Z^Zarray-section-begin @var{array-index} @var{value-flags}
321 where @var{array-index} is the index of the first element being
322 annotated and @var{value-flags} has the same meaning as in a
323 @code{value-history-begin} annotation. This is followed by any number
324 of elements, where is element can be either a single element:
328 @samp{,} @var{whitespace} ; @r{omitted for the first element}
333 or a repeated element
338 @samp{,} @var{whitespace} ; @r{omitted for the first element}
340 ^Z^Zelt-rep @var{number-of-repetitions}
341 @var{repetition-string}
345 In both cases, @var{the-value} is the output for the value of the
346 element and @var{whitespace} can contain spaces, tabs, and newlines. In
347 the repeated case, @var{number-of-repetitions} is the number of
348 consecutive array elements which contain that value, and
349 @var{repetition-string} is a string which is designed to convey to the
350 user that repetition is being depicted.
352 @findex array-section-end
353 Once all the array elements have been output, the array annotation is
357 ^Z^Zarray-section-end
360 @node Frame Annotations
363 @emph{Value Annotations have been removed. @sc{gdb/mi} instead provides
364 a number of frame commands.}
366 @emph{Frame annotations are no longer available. The @sc{gdb/mi}
367 provides @samp{-stack-list-arguments}, @samp{-stack-list-locals}, and
368 @samp{-stack-list-frames} commands.}
370 @cindex annotations for frames
371 Whenever @value{GDBN} prints a frame, it annotates it. For example, this applies
372 to frames printed when @value{GDBN} stops, output from commands such as
373 @code{backtrace} or @code{up}, etc.
376 The frame annotation begins with
379 ^Z^Zframe-begin @var{level} @var{address}
384 where @var{level} is the number of the frame (0 is the innermost frame,
385 and other frames have positive numbers), @var{address} is the address of
386 the code executing in that frame, and @var{level-string} is a string
387 designed to convey the level to the user. @var{address} is in the form
388 @samp{0x} followed by one or more lowercase hex digits (note that this
389 does not depend on the language). The frame ends with
396 Between these annotations is the main body of the frame, which can
401 @findex function-call
404 @var{function-call-string}
407 where @var{function-call-string} is text designed to convey to the user
408 that this frame is associated with a function call made by @value{GDBN} to a
409 function in the program being debugged.
412 @findex signal-handler-caller
414 ^Z^Zsignal-handler-caller
415 @var{signal-handler-caller-string}
418 where @var{signal-handler-caller-string} is text designed to convey to
419 the user that this frame is associated with whatever mechanism is used
420 by this operating system to call a signal handler (it is the frame which
421 calls the signal handler, not the frame for the signal handler itself).
426 @findex frame-address
427 @findex frame-address-end
428 This can optionally (depending on whether this is thought of as
429 interesting information for the user to see) begin with
434 ^Z^Zframe-address-end
435 @var{separator-string}
438 where @var{address} is the address executing in the frame (the same
439 address as in the @code{frame-begin} annotation, but printed in a form
440 which is intended for user consumption---in particular, the syntax varies
441 depending on the language), and @var{separator-string} is a string
442 intended to separate this address from what follows for the user's
445 @findex frame-function-name
450 ^Z^Zframe-function-name
456 where @var{function-name} is the name of the function executing in the
457 frame, or @samp{??} if not known, and @var{arguments} are the arguments
458 to the frame, with parentheses around them (each argument is annotated
459 individually as well, @pxref{Value Annotations}).
461 @findex frame-source-begin
462 @findex frame-source-file
463 @findex frame-source-file-end
464 @findex frame-source-line
465 @findex frame-source-end
466 If source information is available, a reference to it is then printed:
469 ^Z^Zframe-source-begin
470 @var{source-intro-string}
471 ^Z^Zframe-source-file
473 ^Z^Zframe-source-file-end
475 ^Z^Zframe-source-line
480 where @var{source-intro-string} separates for the user's benefit the
481 reference from the text which precedes it, @var{filename} is the name of
482 the source file, and @var{line-number} is the line number within that
483 file (the first line is line 1).
486 If @value{GDBN} prints some information about where the frame is from (which
487 library, which load segment, etc.; currently only done on the RS/6000),
495 Then, if source is to actually be displayed for this frame (for example,
496 this is not true for output from the @code{backtrace} command), then a
497 @code{source} annotation (@pxref{Source Annotations}) is displayed. Unlike
498 most annotations, this is output instead of the normal text which would be
499 output, not in addition.
505 @emph{Display Annotations have been removed. @sc{gdb/mi} instead
506 provides Variable Objects.}
508 @findex display-begin
509 @findex display-number-end
510 @findex display-format
511 @findex display-expression
512 @findex display-expression-end
513 @findex display-value
515 @cindex annotations for display
516 When @value{GDBN} is told to display something using the @code{display} command,
517 the results of the display are annotated:
522 ^Z^Zdisplay-number-end
523 @var{number-separator}
526 ^Z^Zdisplay-expression
528 ^Z^Zdisplay-expression-end
529 @var{expression-separator}
536 where @var{number} is the number of the display, @var{number-separator}
537 is intended to separate the number from what follows for the user,
538 @var{format} includes information such as the size, format, or other
539 information about how the value is being displayed, @var{expression} is
540 the expression being displayed, @var{expression-separator} is intended
541 to separate the expression from the text that follows for the user,
542 and @var{value} is the actual value being displayed.
545 @chapter Annotation for @value{GDBN} Input
547 @cindex annotations for prompts
548 When @value{GDBN} prompts for input, it annotates this fact so it is possible
549 to know when to send output, when the output from a given command is
552 Different kinds of input each have a different @dfn{input type}. Each
553 input type has three annotations: a @code{pre-} annotation, which
554 denotes the beginning of any prompt which is being output, a plain
555 annotation, which denotes the end of the prompt, and then a @code{post-}
556 annotation which denotes the end of any echo which may (or may not) be
557 associated with the input. For example, the @code{prompt} input type
558 features the following annotations:
573 When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
577 @findex post-commands
579 When @value{GDBN} prompts for a set of commands, like in the @code{commands}
580 command. The annotations are repeated for each command which is input.
582 @findex pre-overload-choice
583 @findex overload-choice
584 @findex post-overload-choice
585 @item overload-choice
586 When @value{GDBN} wants the user to select between various overloaded functions.
592 When @value{GDBN} wants the user to confirm a potentially dangerous operation.
594 @findex pre-prompt-for-continue
595 @findex prompt-for-continue
596 @findex post-prompt-for-continue
597 @item prompt-for-continue
598 When @value{GDBN} is asking the user to press return to continue. Note: Don't
599 expect this to work well; instead use @code{set height 0} to disable
600 prompting. This is because the counting of lines is buggy in the
601 presence of annotations.
606 @cindex annotations for errors, warnings and interrupts
613 This annotation occurs right before @value{GDBN} responds to an interrupt.
620 This annotation occurs right before @value{GDBN} responds to an error.
622 Quit and error annotations indicate that any annotations which @value{GDBN} was
623 in the middle of may end abruptly. For example, if a
624 @code{value-history-begin} annotation is followed by a @code{error}, one
625 cannot expect to receive the matching @code{value-history-end}. One
626 cannot expect not to receive it either, however; an error annotation
627 does not necessarily mean that @value{GDBN} is immediately returning all the way
631 A quit or error annotation may be preceded by
637 Any output between that and the quit or error annotation is the error
640 Warning messages are not yet annotated.
641 @c If we want to change that, need to fix warning(), type_error(),
642 @c range_error(), and possibly other places.
644 @node Breakpoint Info
645 @chapter Information on Breakpoints
647 @emph{Breakpoint Annotations have been removed. @sc{gdb/mi} instead
648 provides breakpoint commands.}
650 @cindex annotations for breakpoints
651 The output from the @code{info breakpoints} command is annotated as follows:
653 @findex breakpoints-headers
654 @findex breakpoints-table
656 ^Z^Zbreakpoints-headers
658 ^Z^Zbreakpoints-table
662 where @var{header-entry} has the same syntax as an entry (see below) but
663 instead of containing data, it contains strings which are intended to
664 convey the meaning of each field to the user. This is followed by any
665 number of entries. If a field does not apply for this entry, it is
666 omitted. Fields may contain trailing whitespace. Each entry consists
695 Note that @var{address} is intended for user consumption---the syntax
696 varies depending on the language.
700 @findex breakpoints-table-end
702 ^Z^Zbreakpoints-table-end
706 @chapter Invalidation Notices
708 @cindex annotations for invalidation messages
709 The following annotations say that certain pieces of state may have
713 @findex frames-invalid
714 @item ^Z^Zframes-invalid
716 The frames (for example, output from the @code{backtrace} command) may
719 @findex breakpoints-invalid
720 @item ^Z^Zbreakpoints-invalid
722 The breakpoints may have changed. For example, the user just added or
723 deleted a breakpoint.
726 @node Annotations for Running
727 @chapter Running the Program
728 @cindex annotations for running programs
732 When the program starts executing due to a @value{GDBN} command such as
733 @code{step} or @code{continue},
739 is output. When the program stops,
745 is output. Before the @code{stopped} annotation, a variety of
746 annotations describe how the program stopped.
750 @item ^Z^Zexited @var{exit-status}
751 The program exited, and @var{exit-status} is the exit status (zero for
752 successful exit, otherwise nonzero).
756 @findex signal-name-end
757 @findex signal-string
758 @findex signal-string-end
760 The program exited with a signal. After the @code{^Z^Zsignalled}, the
761 annotation continues:
771 ^Z^Zsignal-string-end
776 where @var{name} is the name of the signal, such as @code{SIGILL} or
777 @code{SIGSEGV}, and @var{string} is the explanation of the signal, such
778 as @code{Illegal Instruction} or @code{Segmentation fault}.
779 @var{intro-text}, @var{middle-text}, and @var{end-text} are for the
780 user's benefit and have no particular format.
784 The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
785 just saying that the program received the signal, not that it was
789 @item ^Z^Zbreakpoint @var{number}
790 The program hit breakpoint number @var{number}.
793 @item ^Z^Zwatchpoint @var{number}
794 The program hit watchpoint number @var{number}.
797 @node Source Annotations
798 @chapter Displaying Source
799 @cindex annotations for source display
802 The following annotation is used instead of displaying source code:
805 ^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
808 where @var{filename} is an absolute file name indicating which source
809 file, @var{line} is the line number within that file (where 1 is the
810 first line in the file), @var{character} is the character position
811 within the file (where 0 is the first character in the file) (for most
812 debug formats this will necessarily point to the beginning of a line),
813 @var{middle} is @samp{middle} if @var{addr} is in the middle of the
814 line, or @samp{beg} if @var{addr} is at the beginning of the line, and
815 @var{addr} is the address in the target program associated with the
816 source which is being displayed. @var{addr} is in the form @samp{0x}
817 followed by one or more lowercase hex digits (note that this does not
818 depend on the language).
820 @node Multi-threaded Apps
821 @chapter Multi-threaded Applications
822 @cindex annotations for multi-threaded apps
824 The following annotations report thread related changes of state.
827 @findex new-thread@r{, annotation}
830 This annotation is issued once for each thread that is created apart from
831 the main thread, which is not reported.
833 @findex thread-changed@r{, annotation}
834 @item ^Z^Zthread-changed
836 The selected thread has changed. This may occur at the request of the
837 user with the @code{thread} command, or as a result of execution,
838 e.g., another thread hits a breakpoint.
842 @node GNU Free Documentation License
843 @appendix GNU Free Documentation License