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 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. 28 29@ifinfo 30This file documents @value{GDBN}'s obsolete annotations. 31 32Copyright 1994, 1995, 2000, 2001, 2003 Free Software Foundation, Inc. 33 34Permission is granted to copy, distribute and/or modify this document 35under the terms of the GNU Free Documentation License, Version 1.1 or 36any later version published by the Free Software Foundation; with no 37Invariant Sections, with no Front-Cover Texts, and with no Back-Cover 38Texts. A copy of the license is included in the section entitled ``GNU 39Free 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 50Copyright @copyright{} 1994, 1995, 2000, 2001, 2003 Free Software 51Foundation, Inc. 52 53Permission is granted to copy, distribute and/or modify this document 54under the terms of the GNU Free Documentation License, Version 1.1 or 55any later version published by the Free Software Foundation; with no 56Invariant Sections, with no Front-Cover Texts, and with no Back-Cover 57Texts. A copy of the license is included in the section entitled ``GNU 58Free Documentation License''. 59@end titlepage 60 61@ifinfo 62@node Top 63@top GDB Annotations 64 65This document describes the obsolete level two annotation interface 66implemented in older @value{GDBN} versions. 67 68@ignore 69This 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 98To produce obsolete level two annotations, start @value{GDBN} with the 99@code{--annotate=2} option. 100 101Annotations start with a newline character, two @samp{control-z} 102characters, and the name of the annotation. If there is no additional 103information associated with this annotation, the name of the annotation 104is followed immediately by a newline. If there is additional 105information, the name of the annotation is followed by a space, the 106additional information, and a newline. The additional information 107cannot contain newline characters. 108 109Any output not beginning with a newline and two @samp{control-z} 110characters denotes literal output from @value{GDBN}. Currently there is 111no need for @value{GDBN} to output a newline followed by two 112@samp{control-z} characters, but if there was such a need, the 113annotations could be extended with an @samp{escape} annotation which 114means those three characters as output. 115 116A simple example of starting up @value{GDBN} with annotations is: 117 118@smallexample 119$ gdb --annotate=2 120GNU GDB 5.0 121Copyright 2000 Free Software Foundation, Inc. 122GDB is free software, covered by the GNU General Public License, 123and you are welcome to change it and/or distribute copies of it 124under certain conditions. 125Type "show copying" to see the conditions. 126There is absolutely no warranty for GDB. Type "show warranty" 127for details. 128This GDB was configured as "sparc-sun-sunos4.1.3" 129 130^Z^Zpre-prompt 131(gdb) 132^Z^Zprompt 133quit 134 135^Z^Zpost-prompt 136$ 137@end smallexample 138 139Here @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} 141denotes a @samp{control-z} character) are annotations; the rest is 142output from @value{GDBN}. 143 144@node Limitations 145@chapter Limitations of the Annotation Interface 146 147The level two annotations mechanism is known to have a number of 148technical and architectural limitations. As a consequence, in 2001, 149with the release of @value{GDBN} 5.1 and the addition of @sc{gdb/mi}, 150the annotation interface was marked as deprecated. 151 152This chapter discusses the known problems. 153 154@section Dependant on @sc{cli} output 155 156The annotation interface works by interspersing markups with 157@value{GDBN} normal command-line interpreter output. Unfortunately, this 158makes the annotation client dependant on not just the annotations, but 159also the @sc{cli} output. This is because the client is forced to 160assume that specific @value{GDBN} commands provide specific information. 161Any change to @value{GDBN}'s @sc{cli} output modifies or removes that 162information and, consequently, likely breaks the client. 163 164Since the @sc{gdb/mi} output is independant of the @sc{cli}, it does not 165have this problem. 166 167@section Scalability 168 169The annotation interface relies on value annotations (@pxref{Value 170Annotations}) and the display mechanism as a way of obtaining up-to-date 171value information. These mechanisms are not scalable. 172 173In a graphical environment, where many values can be displayed 174simultaneously, a serious performance problem occurs when the client 175tries to first extract from @value{GDBN}, and then re-display, all those 176values. The client should instead only request and update the values 177that changed. 178 179The @sc{gdb/mi} Variable Objects provide just that mechanism. 180 181@section Correctness 182 183The annotation interface assumes that a variable's value can only be 184changed when the target is running. This assumption is not correct. A 185single assignment to a single variable can result in the entire target, 186and all displayed values, needing an update. 187 188The @sc{gdb/mi} Variable Objects include a mechanism for efficiently 189reporting such changes. 190 191@section Reliability 192 193The @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 195testsuite changes. 196 197@section Maintainability 198 199The annotation mechanism was implemented by interspersing @sc{cli} print 200statements with various annotations. As a consequence, any @sc{cli} 201output change can alter the annotation output. 202 203Since 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} 205code, its long term maintenance is much easier. 206 207@node Migrating to GDB/MI 208@chapter Migrating to @sc{gdb/mi} 209 210By using the @samp{interp mi} command, it is possible for annotation 211clients to invoke @sc{gdb/mi} commands, and hence access the 212@sc{gdb/mi}. By doing this, existing annotation clients have a 213migration 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 219To issue a command to @value{GDBN} without affecting certain aspects of 220the state which is seen by users, prefix it with @samp{server }. This 221means that this command will not affect the command history, nor will it 222affect @value{GDBN}'s notion of which command to repeat if @key{RET} is 223pressed on a line by itself. 224 225The server prefix does not affect the recording of values into the value 226history; to print a value without recording it into the value history, 227use 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 233Variable Objects.} 234 235@cindex annotations for values 236When a value is printed in various contexts, @value{GDBN} uses 237annotations to delimit the value from the surrounding text. 238 239@findex value-history-begin 240@findex value-history-value 241@findex value-history-end 242If a value is printed using @code{print} and added to the value history, 243the 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 254where @var{history-number} is the number it is getting in the value 255history, @var{history-string} is a string, such as @samp{$5 = }, which 256introduces the value to the user, @var{the-value} is the output 257corresponding to the value itself, and @var{value-flags} is @samp{*} for 258a value which can be dereferenced and @samp{-} for a value which cannot. 259 260@findex value-begin 261@findex value-end 262If the value is not added to the value history (it is an invalid float 263or 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 275When @value{GDBN} prints an argument to a function (for example, in the output 276from 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 289where @var{argument-name} is the name of the argument, 290@var{separator-string} is text which separates the name from the value 291for 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 299When 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 312where @var{field-name} is the name of the field, @var{separator-string} 313is 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 315same meanings as in a @code{value-history-begin} annotation. 316 317When 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 324where @var{array-index} is the index of the first element being 325annotated and @var{value-flags} has the same meaning as in a 326@code{value-history-begin} annotation. This is followed by any number 327of 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 336or 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 348In both cases, @var{the-value} is the output for the value of the 349element and @var{whitespace} can contain spaces, tabs, and newlines. In 350the repeated case, @var{number-of-repetitions} is the number of 351consecutive array elements which contain that value, and 352@var{repetition-string} is a string which is designed to convey to the 353user that repetition is being depicted. 354 355@findex array-section-end 356Once all the array elements have been output, the array annotation is 357ended 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 367a number of frame commands.} 368 369@emph{Frame annotations are no longer available. The @sc{gdb/mi} 370provides @samp{-stack-list-arguments}, @samp{-stack-list-locals}, and 371@samp{-stack-list-frames} commands.} 372 373@cindex annotations for frames 374Whenever @value{GDBN} prints a frame, it annotates it. For example, this applies 375to frames printed when @value{GDBN} stops, output from commands such as 376@code{backtrace} or @code{up}, etc. 377 378@findex frame-begin 379The 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 387where @var{level} is the number of the frame (0 is the innermost frame, 388and other frames have positive numbers), @var{address} is the address of 389the code executing in that frame, and @var{level-string} is a string 390designed 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 392does not depend on the language). The frame ends with 393 394@findex frame-end 395@smallexample 396^Z^Zframe-end 397@end smallexample 398 399Between these annotations is the main body of the frame, which can 400consist 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 410where @var{function-call-string} is text designed to convey to the user 411that this frame is associated with a function call made by @value{GDBN} to a 412function 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 421where @var{signal-handler-caller-string} is text designed to convey to 422the user that this frame is associated with whatever mechanism is used 423by this operating system to call a signal handler (it is the frame which 424calls the signal handler, not the frame for the signal handler itself). 425 426@item 427A normal frame. 428 429@findex frame-address 430@findex frame-address-end 431This can optionally (depending on whether this is thought of as 432interesting 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 441where @var{address} is the address executing in the frame (the same 442address as in the @code{frame-begin} annotation, but printed in a form 443which is intended for user consumption---in particular, the syntax varies 444depending on the language), and @var{separator-string} is a string 445intended to separate this address from what follows for the user's 446benefit. 447 448@findex frame-function-name 449@findex frame-args 450Then comes 451 452@smallexample 453^Z^Zframe-function-name 454@var{function-name} 455^Z^Zframe-args 456@var{arguments} 457@end smallexample 458 459where @var{function-name} is the name of the function executing in the 460frame, or @samp{??} if not known, and @var{arguments} are the arguments 461to the frame, with parentheses around them (each argument is annotated 462individually 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 469If 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 483where @var{source-intro-string} separates for the user's benefit the 484reference from the text which precedes it, @var{filename} is the name of 485the source file, and @var{line-number} is the line number within that 486file (the first line is line 1). 487 488@findex frame-where 489If @value{GDBN} prints some information about where the frame is from (which 490library, which load segment, etc.; currently only done on the RS/6000), 491it is annotated with 492 493@smallexample 494^Z^Zframe-where 495@var{information} 496@end smallexample 497 498Then, if source is to actually be displayed for this frame (for example, 499this is not true for output from the @code{backtrace} command), then a 500@code{source} annotation (@pxref{Source Annotations}) is displayed. Unlike 501most annotations, this is output instead of the normal text which would be 502output, 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 509provides 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 519When @value{GDBN} is told to display something using the @code{display} command, 520the 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 539where @var{number} is the number of the display, @var{number-separator} 540is intended to separate the number from what follows for the user, 541@var{format} includes information such as the size, format, or other 542information about how the value is being displayed, @var{expression} is 543the expression being displayed, @var{expression-separator} is intended 544to separate the expression from the text that follows for the user, 545and @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 551When @value{GDBN} prompts for input, it annotates this fact so it is possible 552to know when to send output, when the output from a given command is 553over, etc. 554 555Different kinds of input each have a different @dfn{input type}. Each 556input type has three annotations: a @code{pre-} annotation, which 557denotes the beginning of any prompt which is being output, a plain 558annotation, which denotes the end of the prompt, and then a @code{post-} 559annotation which denotes the end of any echo which may (or may not) be 560associated with the input. For example, the @code{prompt} input type 561features the following annotations: 562 563@smallexample 564^Z^Zpre-prompt 565^Z^Zprompt 566^Z^Zpost-prompt 567@end smallexample 568 569The input types are 570 571@table @code 572@findex pre-prompt 573@findex prompt 574@findex post-prompt 575@item prompt 576When @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 582When @value{GDBN} prompts for a set of commands, like in the @code{commands} 583command. 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 589When @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 595When @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 601When @value{GDBN} is asking the user to press return to continue. Note: Don't 602expect this to work well; instead use @code{set height 0} to disable 603prompting. This is because the counting of lines is buggy in the 604presence 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 616This annotation occurs right before @value{GDBN} responds to an interrupt. 617 618@findex error 619@smallexample 620^Z^Zerror 621@end smallexample 622 623This annotation occurs right before @value{GDBN} responds to an error. 624 625Quit and error annotations indicate that any annotations which @value{GDBN} was 626in the middle of may end abruptly. For example, if a 627@code{value-history-begin} annotation is followed by a @code{error}, one 628cannot expect to receive the matching @code{value-history-end}. One 629cannot expect not to receive it either, however; an error annotation 630does not necessarily mean that @value{GDBN} is immediately returning all the way 631to the top level. 632 633@findex error-begin 634A quit or error annotation may be preceded by 635 636@smallexample 637^Z^Zerror-begin 638@end smallexample 639 640Any output between that and the quit or error annotation is the error 641message. 642 643Warning 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 651provides breakpoint commands.} 652 653@cindex annotations for breakpoints 654The 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 665where @var{header-entry} has the same syntax as an entry (see below) but 666instead of containing data, it contains strings which are intended to 667convey the meaning of each field to the user. This is followed by any 668number of entries. If a field does not apply for this entry, it is 669omitted. Fields may contain trailing whitespace. Each entry consists 670of: 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 698Note that @var{address} is intended for user consumption---the syntax 699varies depending on the language. 700 701The 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 712The following annotations say that certain pieces of state may have 713changed. 714 715@table @code 716@findex frames-invalid 717@item ^Z^Zframes-invalid 718 719The frames (for example, output from the @code{backtrace} command) may 720have changed. 721 722@findex breakpoints-invalid 723@item ^Z^Zbreakpoints-invalid 724 725The breakpoints may have changed. For example, the user just added or 726deleted 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 735When 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 742is output. When the program stops, 743 744@smallexample 745^Z^Zstopped 746@end smallexample 747 748is output. Before the @code{stopped} annotation, a variety of 749annotations describe how the program stopped. 750 751@table @code 752@findex exited 753@item ^Z^Zexited @var{exit-status} 754The program exited, and @var{exit-status} is the exit status (zero for 755successful 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 763The program exited with a signal. After the @code{^Z^Zsignalled}, the 764annotation 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 779where @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 781as @code{Illegal Instruction} or @code{Segmentation fault}. 782@var{intro-text}, @var{middle-text}, and @var{end-text} are for the 783user's benefit and have no particular format. 784 785@findex signal 786@item ^Z^Zsignal 787The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is 788just saying that the program received the signal, not that it was 789terminated with it. 790 791@findex breakpoint 792@item ^Z^Zbreakpoint @var{number} 793The program hit breakpoint number @var{number}. 794 795@findex watchpoint 796@item ^Z^Zwatchpoint @var{number} 797The 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 805The 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 811where @var{filename} is an absolute file name indicating which source 812file, @var{line} is the line number within that file (where 1 is the 813first line in the file), @var{character} is the character position 814within the file (where 0 is the first character in the file) (for most 815debug 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 817line, 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 819source which is being displayed. @var{addr} is in the form @samp{0x} 820followed by one or more lowercase hex digits (note that this does not 821depend 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 835