Import gdb-7.0
[dragonfly.git] / contrib / gdb-6 / gdb / doc / annotate.texinfo
1 \input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @setfilename annotate.info
4
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
8 @direntry
9 * Annotate: (annotate).                 The obsolete annotation interface.
10 @end direntry
11
12 @c
13 @include gdb-cfg.texi
14 @c
15 @settitle @value{GDBN}'s Obsolete Annotations
16 @setchapternewpage off
17 @c %**end of header
18
19 @set EDITION 1.0
20 @set DATE July 2003
21
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.
28
29 @ifinfo
30 This file documents @value{GDBN}'s obsolete annotations.
31
32 Copyright (C) 1994, 1995, 2000, 2001, 2003 Free Software Foundation, Inc.
33
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''.
40
41 @end ifinfo
42
43 @titlepage
44 @title @value{GDBN}'s Obsolete Annotations
45 @subtitle Edition @value{EDITION}
46 @subtitle @value{DATE}
47 @author Free Software Foundation
48 @page
49 @vskip 0pt plus 1filll
50 Copyright @copyright{} 1994, 1995, 2000, 2001, 2003 Free Software
51 Foundation, Inc.
52
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''.
59 @end titlepage
60
61 @ifinfo
62 @node Top
63 @top GDB Annotations
64
65 This document describes the obsolete level two annotation interface
66 implemented in older @value{GDBN} versions.
67
68 @ignore
69 This is Edition @value{EDITION}, @value{DATE}.
70 @end ignore
71 @end ifinfo
72
73 @menu
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.
88
89 * GNU Free Documentation License::
90 @end menu
91
92 @contents
93
94 @node Annotations Overview
95 @chapter What is an Annotation?
96 @cindex annotations
97
98 To produce obsolete level two annotations, start @value{GDBN} with the
99 @code{--annotate=2} option.
100
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.
108
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.
115
116 A simple example of starting up @value{GDBN} with annotations is:
117
118 @smallexample
119 $ gdb --annotate=2
120 GNU GDB 5.0
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"
127 for details.
128 This GDB was configured as "sparc-sun-sunos4.1.3"
129
130 ^Z^Zpre-prompt
131 (gdb) 
132 ^Z^Zprompt
133 quit
134
135 ^Z^Zpost-prompt
136
137 @end smallexample
138
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}.
143
144 @node Limitations
145 @chapter Limitations of the Annotation Interface
146
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.
151
152 This chapter discusses the known problems.
153
154 @section Dependant on @sc{cli} output
155
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.
163
164 Since the @sc{gdb/mi} output is independent of the @sc{cli}, it does not
165 have this problem.
166
167 @section Scalability
168
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.
172
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
177 that changed.
178
179 The @sc{gdb/mi} Variable Objects provide just that mechanism.
180
181 @section Correctness
182
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.
187
188 The @sc{gdb/mi} Variable Objects include a mechanism for efficiently
189 reporting such changes.
190
191 @section Reliability
192
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
195 testsuite changes.
196
197 @section Maintainability
198
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.
202
203 Since the @sc{gdb/mi} output is independent of the @sc{cli}, and the
204 @sc{gdb/mi} is increasingly implemented independent of the @sc{cli}
205 code, its long term maintenance is much easier.
206
207 @node Migrating to GDB/MI
208 @chapter Migrating to @sc{gdb/mi}
209
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}.
214
215 @node Server Prefix
216 @chapter The Server Prefix
217 @cindex server prefix for annotations
218
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.
224
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.
228
229 @node Value Annotations
230 @chapter Values
231
232 @emph{Value Annotations have been removed.  @sc{gdb/mi} instead provides
233 Variable Objects.}
234
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.
238
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
244
245 @smallexample
246 ^Z^Zvalue-history-begin @var{history-number} @var{value-flags}
247 @var{history-string}
248 ^Z^Zvalue-history-value
249 @var{the-value}
250 ^Z^Zvalue-history-end
251 @end smallexample
252
253 @noindent
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.
259
260 @findex value-begin
261 @findex value-end
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:
264
265 @smallexample
266 ^Z^Zvalue-begin @var{value-flags}
267 @var{the-value}
268 ^Z^Zvalue-end
269 @end smallexample
270
271 @findex arg-begin
272 @findex arg-name-end
273 @findex arg-value
274 @findex arg-end
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:
277
278 @smallexample
279 ^Z^Zarg-begin
280 @var{argument-name}
281 ^Z^Zarg-name-end
282 @var{separator-string}
283 ^Z^Zarg-value @var{value-flags}
284 @var{the-value}
285 ^Z^Zarg-end
286 @end smallexample
287
288 @noindent
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.
294
295 @findex field-begin
296 @findex field-name-end
297 @findex field-value
298 @findex field-end
299 When printing a structure, @value{GDBN} annotates it as follows:
300
301 @smallexample
302 ^Z^Zfield-begin @var{value-flags}
303 @var{field-name}
304 ^Z^Zfield-name-end
305 @var{separator-string}
306 ^Z^Zfield-value
307 @var{the-value}
308 ^Z^Zfield-end
309 @end smallexample
310
311 @noindent
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.
316
317 When printing an array, @value{GDBN} annotates it as follows:
318
319 @smallexample
320 ^Z^Zarray-section-begin @var{array-index} @var{value-flags}
321 @end smallexample
322
323 @noindent
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:
328
329 @findex elt
330 @smallexample
331 @samp{,} @var{whitespace}         ; @r{omitted for the first element}
332 @var{the-value}
333 ^Z^Zelt
334 @end smallexample
335
336 or a repeated element
337
338 @findex elt-rep
339 @findex elt-rep-end
340 @smallexample
341 @samp{,} @var{whitespace}         ; @r{omitted for the first element}
342 @var{the-value}
343 ^Z^Zelt-rep @var{number-of-repetitions}
344 @var{repetition-string}
345 ^Z^Zelt-rep-end
346 @end smallexample
347
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.
354
355 @findex array-section-end
356 Once all the array elements have been output, the array annotation is
357 ended with
358
359 @smallexample
360 ^Z^Zarray-section-end
361 @end smallexample
362
363 @node Frame Annotations
364 @chapter Frames
365
366 @emph{Value Annotations have been removed.  @sc{gdb/mi} instead provides
367 a number of frame commands.}
368
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.}
372
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.
377
378 @findex frame-begin
379 The frame annotation begins with
380
381 @smallexample
382 ^Z^Zframe-begin @var{level} @var{address}
383 @var{level-string}
384 @end smallexample
385
386 @noindent
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
393
394 @findex frame-end
395 @smallexample
396 ^Z^Zframe-end
397 @end smallexample
398
399 Between these annotations is the main body of the frame, which can
400 consist of
401
402 @itemize @bullet
403 @item
404 @findex function-call
405 @smallexample
406 ^Z^Zfunction-call
407 @var{function-call-string}
408 @end smallexample
409
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.
413
414 @item
415 @findex signal-handler-caller
416 @smallexample
417 ^Z^Zsignal-handler-caller
418 @var{signal-handler-caller-string}
419 @end smallexample
420
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).
425
426 @item
427 A normal frame.
428
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
433
434 @smallexample
435 ^Z^Zframe-address
436 @var{address}
437 ^Z^Zframe-address-end
438 @var{separator-string}
439 @end smallexample
440
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
446 benefit.
447
448 @findex frame-function-name
449 @findex frame-args
450 Then comes
451
452 @smallexample
453 ^Z^Zframe-function-name
454 @var{function-name}
455 ^Z^Zframe-args
456 @var{arguments}
457 @end smallexample
458
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}).
463
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:
470
471 @smallexample
472 ^Z^Zframe-source-begin
473 @var{source-intro-string}
474 ^Z^Zframe-source-file
475 @var{filename}
476 ^Z^Zframe-source-file-end
477 :
478 ^Z^Zframe-source-line
479 @var{line-number}
480 ^Z^Zframe-source-end
481 @end smallexample
482
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).
487
488 @findex frame-where
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),
491 it is annotated with
492
493 @smallexample
494 ^Z^Zframe-where
495 @var{information}
496 @end smallexample
497
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.
503 @end itemize
504
505 @node Displays
506 @chapter Displays
507
508 @emph{Display Annotations have been removed.  @sc{gdb/mi} instead
509 provides Variable Objects.}
510
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
517 @findex display-end
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:
521
522 @smallexample
523 ^Z^Zdisplay-begin
524 @var{number}
525 ^Z^Zdisplay-number-end
526 @var{number-separator}
527 ^Z^Zdisplay-format
528 @var{format}
529 ^Z^Zdisplay-expression
530 @var{expression}
531 ^Z^Zdisplay-expression-end
532 @var{expression-separator}
533 ^Z^Zdisplay-value
534 @var{value}
535 ^Z^Zdisplay-end
536 @end smallexample
537
538 @noindent
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.
546
547 @node Prompting
548 @chapter Annotation for @value{GDBN} Input
549
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
553 over, etc.
554
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:
562
563 @smallexample
564 ^Z^Zpre-prompt
565 ^Z^Zprompt
566 ^Z^Zpost-prompt
567 @end smallexample
568
569 The input types are
570
571 @table @code
572 @findex pre-prompt
573 @findex prompt
574 @findex post-prompt
575 @item prompt
576 When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
577
578 @findex pre-commands
579 @findex commands
580 @findex post-commands
581 @item 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.
584
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.
590
591 @findex pre-query
592 @findex query
593 @findex post-query
594 @item query
595 When @value{GDBN} wants the user to confirm a potentially dangerous operation.
596
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.
605 @end table
606
607 @node Errors
608 @chapter Errors
609 @cindex annotations for errors, warnings and interrupts
610
611 @findex quit
612 @smallexample
613 ^Z^Zquit
614 @end smallexample
615
616 This annotation occurs right before @value{GDBN} responds to an interrupt.
617
618 @findex error
619 @smallexample
620 ^Z^Zerror
621 @end smallexample
622
623 This annotation occurs right before @value{GDBN} responds to an error.
624
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
631 to the top level.
632
633 @findex error-begin
634 A quit or error annotation may be preceded by
635
636 @smallexample
637 ^Z^Zerror-begin
638 @end smallexample
639
640 Any output between that and the quit or error annotation is the error
641 message.
642
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.
646
647 @node Breakpoint Info
648 @chapter Information on Breakpoints
649
650 @emph{Breakpoint Annotations have been removed.  @sc{gdb/mi} instead
651 provides breakpoint commands.}
652
653 @cindex annotations for breakpoints
654 The output from the @code{info breakpoints} command is annotated as follows:
655
656 @findex breakpoints-headers
657 @findex breakpoints-table
658 @smallexample
659 ^Z^Zbreakpoints-headers
660 @var{header-entry}
661 ^Z^Zbreakpoints-table
662 @end smallexample
663
664 @noindent
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
670 of:
671
672 @findex record
673 @findex field
674 @smallexample
675 ^Z^Zrecord
676 ^Z^Zfield 0
677 @var{number}
678 ^Z^Zfield 1
679 @var{type}
680 ^Z^Zfield 2
681 @var{disposition}
682 ^Z^Zfield 3
683 @var{enable}
684 ^Z^Zfield 4
685 @var{address}
686 ^Z^Zfield 5
687 @var{what}
688 ^Z^Zfield 6
689 @var{frame}
690 ^Z^Zfield 7
691 @var{condition}
692 ^Z^Zfield 8
693 @var{ignore-count}
694 ^Z^Zfield 9
695 @var{commands}
696 @end smallexample
697
698 Note that @var{address} is intended for user consumption---the syntax
699 varies depending on the language.
700
701 The output ends with
702
703 @findex breakpoints-table-end
704 @smallexample
705 ^Z^Zbreakpoints-table-end
706 @end smallexample
707
708 @node Invalidation
709 @chapter Invalidation Notices
710
711 @cindex annotations for invalidation messages
712 The following annotations say that certain pieces of state may have
713 changed.
714
715 @table @code
716 @findex frames-invalid
717 @item ^Z^Zframes-invalid
718
719 The frames (for example, output from the @code{backtrace} command) may
720 have changed.
721
722 @findex breakpoints-invalid
723 @item ^Z^Zbreakpoints-invalid
724
725 The breakpoints may have changed.  For example, the user just added or
726 deleted a breakpoint.
727 @end table
728
729 @node Annotations for Running
730 @chapter Running the Program
731 @cindex annotations for running programs
732
733 @findex starting
734 @findex stopping
735 When the program starts executing due to a @value{GDBN} command such as
736 @code{step} or @code{continue}, 
737
738 @smallexample
739 ^Z^Zstarting
740 @end smallexample
741
742 is output.  When the program stops, 
743
744 @smallexample
745 ^Z^Zstopped
746 @end smallexample
747
748 is output.  Before the @code{stopped} annotation, a variety of
749 annotations describe how the program stopped.
750
751 @table @code
752 @findex exited
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).
756
757 @findex signalled
758 @findex signal-name
759 @findex signal-name-end
760 @findex signal-string
761 @findex signal-string-end
762 @item ^Z^Zsignalled
763 The program exited with a signal.  After the @code{^Z^Zsignalled}, the
764 annotation continues:
765
766 @smallexample
767 @var{intro-text}
768 ^Z^Zsignal-name
769 @var{name}
770 ^Z^Zsignal-name-end
771 @var{middle-text}
772 ^Z^Zsignal-string
773 @var{string}
774 ^Z^Zsignal-string-end
775 @var{end-text}
776 @end smallexample
777
778 @noindent
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.
784
785 @findex signal
786 @item ^Z^Zsignal
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
789 terminated with it.
790
791 @findex breakpoint
792 @item ^Z^Zbreakpoint @var{number}
793 The program hit breakpoint number @var{number}.
794
795 @findex watchpoint
796 @item ^Z^Zwatchpoint @var{number}
797 The program hit watchpoint number @var{number}.
798 @end table
799
800 @node Source Annotations
801 @chapter Displaying Source
802 @cindex annotations for source display
803
804 @findex source
805 The following annotation is used instead of displaying source code:
806
807 @smallexample
808 ^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
809 @end smallexample
810
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).
822
823 @raisesections
824 @include fdl.texi
825 @lowersections
826
827 @ignore
828 @node Index
829 @unnumbered Index
830
831 @printindex fn
832 @end ignore
833
834 @bye