1 @c Copyright (C) 2008--2021 Free Software Foundation, Inc.
2 @c Permission is granted to copy, distribute and/or modify this document
3 @c under the terms of the GNU Free Documentation License, Version 1.3 or
4 @c any later version published by the Free Software Foundation; with the
5 @c Invariant Sections being ``Free Software'' and ``Free Software Needs
6 @c Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
7 @c and with the Back-Cover Texts as in (a) below.
9 @c (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
10 @c this GNU Manual. Buying copies from GNU Press supports the FSF in
11 @c developing GNU and promoting software freedom.''
14 @section Extending @value{GDBN} using Guile
15 @cindex guile scripting
16 @cindex scripting with guile
18 You can extend @value{GDBN} using the @uref{http://www.gnu.org/software/guile/,
19 Guile implementation of the Scheme programming language}.
20 This feature is available only if @value{GDBN} was configured using
21 @option{--with-guile}.
24 * Guile Introduction:: Introduction to Guile scripting in @value{GDBN}
25 * Guile Commands:: Accessing Guile from @value{GDBN}
26 * Guile API:: Accessing @value{GDBN} from Guile
27 * Guile Auto-loading:: Automatically loading Guile code
28 * Guile Modules:: Guile modules provided by @value{GDBN}
31 @node Guile Introduction
32 @subsection Guile Introduction
34 Guile is an implementation of the Scheme programming language
35 and is the GNU project's official extension language.
37 Guile support in @value{GDBN} follows the Python support in @value{GDBN}
38 reasonably closely, so concepts there should carry over.
39 However, some things are done differently where it makes sense.
41 @value{GDBN} requires Guile version 3.0, 2.2, or 2.0.
43 @cindex guile scripts directory
44 Guile scripts used by @value{GDBN} should be installed in
45 @file{@var{data-directory}/guile}, where @var{data-directory} is
46 the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
47 This directory, known as the @dfn{guile directory},
48 is automatically added to the Guile Search Path in order to allow
49 the Guile interpreter to locate all scripts installed at this location.
52 @subsection Guile Commands
53 @cindex guile commands
54 @cindex commands to access guile
56 @value{GDBN} provides two commands for accessing the Guile interpreter:
63 The @code{guile-repl} command can be used to start an interactive
64 Guile prompt or @dfn{repl}. To return to @value{GDBN},
65 type @kbd{,q} or the @code{EOF} character (e.g., @kbd{Ctrl-D} on
66 an empty prompt). These commands do not take any arguments.
70 @item guile @r{[}@var{scheme-expression}@r{]}
71 @itemx gu @r{[}@var{scheme-expression}@r{]}
72 The @code{guile} command can be used to evaluate a Scheme expression.
74 If given an argument, @value{GDBN} will pass the argument to the Guile
75 interpreter for evaluation.
78 (@value{GDBP}) guile (display (+ 20 3)) (newline)
82 The result of the Scheme expression is displayed using normal Guile rules.
85 (@value{GDBP}) guile (+ 20 3)
89 If you do not provide an argument to @code{guile}, it will act as a
90 multi-line command, like @code{define}. In this case, the Guile
91 script is made up of subsequent command lines, given after the
92 @code{guile} command. This command list is terminated using a line
93 containing @code{end}. For example:
104 It is also possible to execute a Guile script from the @value{GDBN}
108 @item source @file{script-name}
109 The script name must end with @samp{.scm} and @value{GDBN} must be configured
110 to recognize the script language based on filename extension using
111 the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
113 @item guile (load "script-name")
114 This method uses the @code{load} Guile function.
115 It takes a string argument that is the name of the script to load.
116 See the Guile documentation for a description of this function.
117 (@pxref{Loading,,, guile, GNU Guile Reference Manual}).
121 @subsection Guile API
123 @cindex programming in guile
125 You can get quick online help for @value{GDBN}'s Guile API by issuing
126 the command @w{@kbd{help guile}}, or by issuing the command @kbd{,help}
127 from an interactive Guile session. Furthermore, most Guile procedures
128 provided by @value{GDBN} have doc strings which can be obtained with
129 @kbd{,describe @var{procedure-name}} or @kbd{,d @var{procedure-name}}
130 from the Guile interactive prompt.
133 * Basic Guile:: Basic Guile Functions
134 * Guile Configuration:: Guile configuration variables
135 * GDB Scheme Data Types:: Scheme representations of GDB objects
136 * Guile Exception Handling:: How Guile exceptions are translated
137 * Values From Inferior In Guile:: Guile representation of values
138 * Arithmetic In Guile:: Arithmetic in Guile
139 * Types In Guile:: Guile representation of types
140 * Guile Pretty Printing API:: Pretty-printing values with Guile
141 * Selecting Guile Pretty-Printers:: How GDB chooses a pretty-printer
142 * Writing a Guile Pretty-Printer:: Writing a pretty-printer
143 * Commands In Guile:: Implementing new commands in Guile
144 * Parameters In Guile:: Adding new @value{GDBN} parameters
145 * Progspaces In Guile:: Program spaces
146 * Objfiles In Guile:: Object files in Guile
147 * Frames In Guile:: Accessing inferior stack frames from Guile
148 * Blocks In Guile:: Accessing blocks from Guile
149 * Symbols In Guile:: Guile representation of symbols
150 * Symbol Tables In Guile:: Guile representation of symbol tables
151 * Breakpoints In Guile:: Manipulating breakpoints using Guile
152 * Lazy Strings In Guile:: Guile representation of lazy strings
153 * Architectures In Guile:: Guile representation of architectures
154 * Disassembly In Guile:: Disassembling instructions from Guile
155 * I/O Ports in Guile:: GDB I/O ports
156 * Memory Ports in Guile:: Accessing memory through ports and bytevectors
157 * Iterators In Guile:: Basic iterator support
161 @subsubsection Basic Guile
164 @cindex guile pagination
165 At startup, @value{GDBN} overrides Guile's @code{current-output-port} and
166 @code{current-error-port} to print using @value{GDBN}'s output-paging streams.
167 A Guile program which outputs to one of these streams may have its
168 output interrupted by the user (@pxref{Screen Size}). In this
169 situation, a Guile @code{signal} exception is thrown with value @code{SIGINT}.
171 Guile's history mechanism uses the same naming as @value{GDBN}'s,
172 namely the user of dollar-variables (e.g., $1, $2, etc.).
173 The results of evaluations in Guile and in GDB are counted separately,
174 @code{$1} in Guile is not the same value as @code{$1} in @value{GDBN}.
176 @value{GDBN} is not thread-safe. If your Guile program uses multiple
177 threads, you must be careful to only call @value{GDBN}-specific
178 functions in the @value{GDBN} thread.
180 Some care must be taken when writing Guile code to run in
181 @value{GDBN}. Two things are worth noting in particular:
185 @value{GDBN} installs handlers for @code{SIGCHLD} and @code{SIGINT}.
186 Guile code must not override these, or even change the options using
187 @code{sigaction}. If your program changes the handling of these
188 signals, @value{GDBN} will most likely stop working correctly. Note
189 that it is unfortunately common for GUI toolkits to install a
190 @code{SIGCHLD} handler.
193 @value{GDBN} takes care to mark its internal file descriptors as
194 close-on-exec. However, this cannot be done in a thread-safe way on
195 all platforms. Your Guile programs should be aware of this and
196 should both create new file descriptors with the close-on-exec flag
197 set and arrange to close unneeded file descriptors before starting a
201 @cindex guile gdb module
202 @value{GDBN} introduces a new Guile module, named @code{gdb}. All
203 methods and classes added by @value{GDBN} are placed in this module.
204 @value{GDBN} does not automatically @code{import} the @code{gdb} module,
205 scripts must do this themselves. There are various options for how to
206 import a module, so @value{GDBN} leaves the choice of how the @code{gdb}
207 module is imported to the user.
208 To simplify interactive use, it is recommended to add one of the following
212 guile (use-modules (gdb))
216 guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))
219 Which one to choose depends on your preference.
220 The second one adds @code{gdb:} as a prefix to all module functions
223 The rest of this manual assumes the @code{gdb} module has been imported
224 without any prefix. See the Guile documentation for @code{use-modules}
226 (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}).
231 (gdb) guile (value-type (make-value 1))
232 ERROR: Unbound variable: value-type
233 Error while executing Scheme code.
234 (gdb) guile (use-modules (gdb))
235 (gdb) guile (value-type (make-value 1))
240 The @code{(gdb)} module provides these basic Guile functions.
243 @deffn {Scheme Procedure} execute command @r{[}#:from-tty boolean@r{]} @r{[}#:to-string boolean@r{]}
244 Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
245 If a @value{GDBN} exception happens while @var{command} runs, it is
246 translated as described in
247 @ref{Guile Exception Handling,,Guile Exception Handling}.
249 @var{from-tty} specifies whether @value{GDBN} ought to consider this
250 command as having originated from the user invoking it interactively.
251 It must be a boolean value. If omitted, it defaults to @code{#f}.
253 By default, any output produced by @var{command} is sent to
254 @value{GDBN}'s standard output (and to the log output if logging is
255 turned on). If the @var{to-string} parameter is
256 @code{#t}, then output will be collected by @code{execute} and
257 returned as a string. The default is @code{#f}, in which case the
258 return value is unspecified. If @var{to-string} is @code{#t}, the
259 @value{GDBN} virtual terminal will be temporarily set to unlimited width
260 and height, and its pagination will be disabled; @pxref{Screen Size}.
263 @deffn {Scheme Procedure} history-ref number
264 Return a value from @value{GDBN}'s value history (@pxref{Value
265 History}). The @var{number} argument indicates which history element to return.
266 If @var{number} is negative, then @value{GDBN} will take its absolute value
267 and count backward from the last element (i.e., the most recent element) to
268 find the value to return. If @var{number} is zero, then @value{GDBN} will
269 return the most recent element. If the element specified by @var{number}
270 doesn't exist in the value history, a @code{gdb:error} exception will be
273 If no exception is raised, the return value is always an instance of
274 @code{<gdb:value>} (@pxref{Values From Inferior In Guile}).
276 @emph{Note:} @value{GDBN}'s value history is independent of Guile's.
277 @code{$1} in @value{GDBN}'s value history contains the result of evaluating
278 an expression from @value{GDBN}'s command line and @code{$1} from Guile's
279 history contains the result of evaluating an expression from Guile's
283 @deffn {Scheme Procedure} history-append! value
284 Append @var{value}, an instance of @code{<gdb:value>}, to @value{GDBN}'s
285 value history. Return its index in the history.
287 Putting into history values returned by Guile extensions will allow
288 the user convenient access to those values via CLI history
292 @deffn {Scheme Procedure} parse-and-eval expression
293 Parse @var{expression} as an expression in the current language,
294 evaluate it, and return the result as a @code{<gdb:value>}.
295 The @var{expression} must be a string.
297 This function can be useful when implementing a new command
298 (@pxref{Commands In Guile}), as it provides a way to parse the
299 command's arguments as an expression.
300 It is also is useful when computing values.
301 For example, it is the only way to get the value of a
302 convenience variable (@pxref{Convenience Vars}) as a @code{<gdb:value>}.
305 @node Guile Configuration
306 @subsubsection Guile Configuration
307 @cindex guile configuration
309 @value{GDBN} provides these Scheme functions to access various configuration
312 @deffn {Scheme Procedure} data-directory
313 Return a string containing @value{GDBN}'s data directory.
314 This directory contains @value{GDBN}'s ancillary files.
317 @deffn {Scheme Procedure} guile-data-directory
318 Return a string containing @value{GDBN}'s Guile data directory.
319 This directory contains the Guile modules provided by @value{GDBN}.
322 @deffn {Scheme Procedure} gdb-version
323 Return a string containing the @value{GDBN} version.
326 @deffn {Scheme Procedure} host-config
327 Return a string containing the host configuration.
328 This is the string passed to @code{--host} when @value{GDBN} was configured.
331 @deffn {Scheme Procedure} target-config
332 Return a string containing the target configuration.
333 This is the string passed to @code{--target} when @value{GDBN} was configured.
336 @node GDB Scheme Data Types
337 @subsubsection GDB Scheme Data Types
340 The values exposed by @value{GDBN} to Guile are known as
341 @dfn{@value{GDBN} objects}. There are several kinds of @value{GDBN}
342 object, and each is disjoint from all other types known to Guile.
344 @deffn {Scheme Procedure} gdb-object-kind object
345 Return the kind of the @value{GDBN} object, e.g., @code{<gdb:breakpoint>},
349 @value{GDBN} defines the following object types:
353 @xref{Architectures In Guile}.
356 @xref{Blocks In Guile}.
358 @item <gdb:block-symbols-iterator>
359 @xref{Blocks In Guile}.
361 @item <gdb:breakpoint>
362 @xref{Breakpoints In Guile}.
365 @xref{Commands In Guile}.
367 @item <gdb:exception>
368 @xref{Guile Exception Handling}.
371 @xref{Frames In Guile}.
374 @xref{Iterators In Guile}.
376 @item <gdb:lazy-string>
377 @xref{Lazy Strings In Guile}.
380 @xref{Objfiles In Guile}.
382 @item <gdb:parameter>
383 @xref{Parameters In Guile}.
385 @item <gdb:pretty-printer>
386 @xref{Guile Pretty Printing API}.
388 @item <gdb:pretty-printer-worker>
389 @xref{Guile Pretty Printing API}.
391 @item <gdb:progspace>
392 @xref{Progspaces In Guile}.
395 @xref{Symbols In Guile}.
398 @xref{Symbol Tables In Guile}.
401 @xref{Symbol Tables In Guile}.
404 @xref{Types In Guile}.
407 @xref{Types In Guile}.
410 @xref{Values From Inferior In Guile}.
413 The following @value{GDBN} objects are managed internally so that the
414 Scheme function @code{eq?} may be applied to them.
419 @item <gdb:breakpoint>
422 @item <gdb:progspace>
428 @node Guile Exception Handling
429 @subsubsection Guile Exception Handling
430 @cindex guile exceptions
431 @cindex exceptions, guile
432 @kindex set guile print-stack
434 When executing the @code{guile} command, Guile exceptions
435 uncaught within the Guile code are translated to calls to the
436 @value{GDBN} error-reporting mechanism. If the command that called
437 @code{guile} does not handle the error, @value{GDBN} will
438 terminate it and report the error according to the setting of
439 the @code{guile print-stack} parameter.
441 The @code{guile print-stack} parameter has three settings:
448 An error message is printed containing the Guile exception name,
449 the associated value, and the Guile call stack backtrace at the
450 point where the exception was raised. Example:
453 (@value{GDBP}) guile (display foo)
454 ERROR: In procedure memoize-variable-access!:
455 ERROR: Unbound variable: foo
456 Error while executing Scheme code.
460 In addition to an error message a full backtrace is printed.
463 (@value{GDBP}) set guile print-stack full
464 (@value{GDBP}) guile (display foo)
467 157: 10 [catch #t #<catch-closure 2c76e20> ...]
469 ?: 9 [apply-smob/1 #<catch-closure 2c76e20>]
471 157: 8 [catch #t #<catch-closure 2c76d20> ...]
473 ?: 7 [apply-smob/1 #<catch-closure 2c76d20>]
474 ?: 6 [call-with-input-string "(display foo)" ...]
476 2320: 5 [save-module-excursion #<procedure 2c2dc30 ... ()>]
477 In ice-9/eval-string.scm:
478 44: 4 [read-and-eval #<input: string 27cb410> #:lang ...]
479 37: 3 [lp (display foo)]
482 393: 1 [eval #<memoized foo> ()]
484 ?: 0 [memoize-variable-access! #<memoized foo> ...]
486 ERROR: In procedure memoize-variable-access!:
487 ERROR: Unbound variable: foo
488 Error while executing Scheme code.
492 @value{GDBN} errors that happen in @value{GDBN} commands invoked by
493 Guile code are converted to Guile exceptions. The type of the
494 Guile exception depends on the error.
496 Guile procedures provided by @value{GDBN} can throw the standard
497 Guile exceptions like @code{wrong-type-arg} and @code{out-of-range}.
499 User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
500 prompt) is translated to a Guile @code{signal} exception with value
503 @value{GDBN} Guile procedures can also throw these exceptions:
507 This exception is a catch-all for errors generated from within @value{GDBN}.
509 @item gdb:invalid-object
510 This exception is thrown when accessing Guile objects that wrap underlying
511 @value{GDBN} objects have become invalid. For example, a
512 @code{<gdb:breakpoint>} object becomes invalid if the user deletes it
513 from the command line. The object still exists in Guile, but the
514 object it represents is gone. Further operations on this breakpoint
515 will throw this exception.
517 @item gdb:memory-error
518 This exception is thrown when an operation tried to access invalid
519 memory in the inferior.
521 @item gdb:pp-type-error
522 This exception is thrown when a Guile pretty-printer passes a bad object
526 The following exception-related procedures are provided by the
529 @deffn {Scheme Procedure} make-exception key args
530 Return a @code{<gdb:exception>} object given by its @var{key} and
531 @var{args}, which are the standard Guile parameters of an exception.
532 See the Guile documentation for more information (@pxref{Exceptions,,,
533 guile, GNU Guile Reference Manual}).
536 @deffn {Scheme Procedure} exception? object
537 Return @code{#t} if @var{object} is a @code{<gdb:exception>} object.
538 Otherwise return @code{#f}.
541 @deffn {Scheme Procedure} exception-key exception
542 Return the @var{args} field of a @code{<gdb:exception>} object.
545 @deffn {Scheme Procedure} exception-args exception
546 Return the @var{args} field of a @code{<gdb:exception>} object.
549 @node Values From Inferior In Guile
550 @subsubsection Values From Inferior In Guile
551 @cindex values from inferior, in guile
552 @cindex guile, working with values from inferior
554 @tindex @code{<gdb:value>}
555 @value{GDBN} provides values it obtains from the inferior program in
556 an object of type @code{<gdb:value>}. @value{GDBN} uses this object
557 for its internal bookkeeping of the inferior's values, and for
558 fetching values when necessary.
560 @value{GDBN} does not memoize @code{<gdb:value>} objects.
561 @code{make-value} always returns a fresh object.
564 (gdb) guile (eq? (make-value 1) (make-value 1))
566 (gdb) guile (equal? (make-value 1) (make-value 1))
570 A @code{<gdb:value>} that represents a function can be executed via
571 inferior function call with @code{value-call}.
572 Any arguments provided to the call must match the function's prototype,
573 and must be provided in the order specified by that prototype.
575 For example, @code{some-val} is a @code{<gdb:value>} instance
576 representing a function that takes two integers as arguments. To
577 execute this function, call it like so:
580 (define result (value-call some-val 10 20))
583 Any values returned from a function call are @code{<gdb:value>} objects.
585 Note: Unlike Python scripting in @value{GDBN},
586 inferior values that are simple scalars cannot be used directly in
587 Scheme expressions that are valid for the value's data type.
588 For example, @code{(+ (parse-and-eval "int_variable") 2)} does not work.
589 And inferior values that are structures or instances of some class cannot
590 be accessed using any special syntax, instead @code{value-field} must be used.
592 The following value-related procedures are provided by the
595 @deffn {Scheme Procedure} value? object
596 Return @code{#t} if @var{object} is a @code{<gdb:value>} object.
597 Otherwise return @code{#f}.
600 @deffn {Scheme Procedure} make-value value @r{[}#:type type@r{]}
601 Many Scheme values can be converted directly to a @code{<gdb:value>}
602 with this procedure. If @var{type} is specified, the result is a value
603 of this type, and if @var{value} can't be represented with this type
604 an exception is thrown. Otherwise the type of the result is determined from
605 @var{value} as described below.
607 @xref{Architectures In Guile}, for a list of the builtin
608 types for an architecture.
610 Here's how Scheme values are converted when @var{type} argument to
611 @code{make-value} is not specified:
615 A Scheme boolean is converted the boolean type for the current language.
618 A Scheme integer is converted to the first of a C @code{int},
619 @code{unsigned int}, @code{long}, @code{unsigned long},
620 @code{long long} or @code{unsigned long long} type
621 for the current architecture that can represent the value.
623 If the Scheme integer cannot be represented as a target integer
624 an @code{out-of-range} exception is thrown.
627 A Scheme real is converted to the C @code{double} type for the
628 current architecture.
631 A Scheme string is converted to a string in the current target
632 language using the current target encoding.
633 Characters that cannot be represented in the current target encoding
634 are replaced with the corresponding escape sequence. This is Guile's
635 @code{SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE} conversion strategy
636 (@pxref{Strings,,, guile, GNU Guile Reference Manual}).
638 Passing @var{type} is not supported in this case,
639 if it is provided a @code{wrong-type-arg} exception is thrown.
641 @item @code{<gdb:lazy-string>}
642 If @var{value} is a @code{<gdb:lazy-string>} object (@pxref{Lazy Strings In
643 Guile}), then the @code{lazy-string->value} procedure is called, and
646 Passing @var{type} is not supported in this case,
647 if it is provided a @code{wrong-type-arg} exception is thrown.
649 @item Scheme bytevector
650 If @var{value} is a Scheme bytevector and @var{type} is provided,
651 @var{value} must be the same size, in bytes, of values of type @var{type},
652 and the result is essentially created by using @code{memcpy}.
654 If @var{value} is a Scheme bytevector and @var{type} is not provided,
655 the result is an array of type @code{uint8} of the same length.
659 @cindex optimized out value in guile
660 @deffn {Scheme Procedure} value-optimized-out? value
661 Return @code{#t} if the compiler optimized out @var{value},
662 thus it is not available for fetching from the inferior.
663 Otherwise return @code{#f}.
666 @deffn {Scheme Procedure} value-address value
667 If @var{value} is addressable, returns a
668 @code{<gdb:value>} object representing the address.
669 Otherwise, @code{#f} is returned.
672 @deffn {Scheme Procedure} value-type value
673 Return the type of @var{value} as a @code{<gdb:type>} object
674 (@pxref{Types In Guile}).
677 @deffn {Scheme Procedure} value-dynamic-type value
678 Return the dynamic type of @var{value}. This uses C@t{++} run-time
679 type information (@acronym{RTTI}) to determine the dynamic type of the
680 value. If the value is of class type, it will return the class in
681 which the value is embedded, if any. If the value is of pointer or
682 reference to a class type, it will compute the dynamic type of the
683 referenced object, and return a pointer or reference to that type,
684 respectively. In all other cases, it will return the value's static
687 Note that this feature will only work when debugging a C@t{++} program
688 that includes @acronym{RTTI} for the object in question. Otherwise,
689 it will just return the static type of the value as in @kbd{ptype foo}.
690 @xref{Symbols, ptype}.
693 @deffn {Scheme Procedure} value-cast value type
694 Return a new instance of @code{<gdb:value>} that is the result of
695 casting @var{value} to the type described by @var{type}, which must
696 be a @code{<gdb:type>} object. If the cast cannot be performed for some
697 reason, this method throws an exception.
700 @deffn {Scheme Procedure} value-dynamic-cast value type
701 Like @code{value-cast}, but works as if the C@t{++} @code{dynamic_cast}
702 operator were used. Consult a C@t{++} reference for details.
705 @deffn {Scheme Procedure} value-reinterpret-cast value type
706 Like @code{value-cast}, but works as if the C@t{++} @code{reinterpret_cast}
707 operator were used. Consult a C@t{++} reference for details.
710 @deffn {Scheme Procedure} value-dereference value
711 For pointer data types, this method returns a new @code{<gdb:value>} object
712 whose contents is the object pointed to by @var{value}. For example, if
713 @code{foo} is a C pointer to an @code{int}, declared in your C program as
720 then you can use the corresponding @code{<gdb:value>} to access what
721 @code{foo} points to like this:
724 (define bar (value-dereference foo))
727 The result @code{bar} will be a @code{<gdb:value>} object holding the
728 value pointed to by @code{foo}.
730 A similar function @code{value-referenced-value} exists which also
731 returns @code{<gdb:value>} objects corresponding to the values pointed to
732 by pointer values (and additionally, values referenced by reference
733 values). However, the behavior of @code{value-dereference}
734 differs from @code{value-referenced-value} by the fact that the
735 behavior of @code{value-dereference} is identical to applying the C
736 unary operator @code{*} on a given value. For example, consider a
737 reference to a pointer @code{ptrref}, declared in your C@t{++} program
745 intptr &ptrref = ptr;
748 Though @code{ptrref} is a reference value, one can apply the method
749 @code{value-dereference} to the @code{<gdb:value>} object corresponding
750 to it and obtain a @code{<gdb:value>} which is identical to that
751 corresponding to @code{val}. However, if you apply the method
752 @code{value-referenced-value}, the result would be a @code{<gdb:value>}
753 object identical to that corresponding to @code{ptr}.
756 (define scm-ptrref (parse-and-eval "ptrref"))
757 (define scm-val (value-dereference scm-ptrref))
758 (define scm-ptr (value-referenced-value scm-ptrref))
761 The @code{<gdb:value>} object @code{scm-val} is identical to that
762 corresponding to @code{val}, and @code{scm-ptr} is identical to that
763 corresponding to @code{ptr}. In general, @code{value-dereference} can
764 be applied whenever the C unary operator @code{*} can be applied
765 to the corresponding C value. For those cases where applying both
766 @code{value-dereference} and @code{value-referenced-value} is allowed,
767 the results obtained need not be identical (as we have seen in the above
768 example). The results are however identical when applied on
769 @code{<gdb:value>} objects corresponding to pointers (@code{<gdb:value>}
770 objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
773 @deffn {Scheme Procedure} value-referenced-value value
774 For pointer or reference data types, this method returns a new
775 @code{<gdb:value>} object corresponding to the value referenced by the
776 pointer/reference value. For pointer data types,
777 @code{value-dereference} and @code{value-referenced-value} produce
778 identical results. The difference between these methods is that
779 @code{value-dereference} cannot get the values referenced by reference
780 values. For example, consider a reference to an @code{int}, declared
781 in your C@t{++} program as
789 then applying @code{value-dereference} to the @code{<gdb:value>} object
790 corresponding to @code{ref} will result in an error, while applying
791 @code{value-referenced-value} will result in a @code{<gdb:value>} object
792 identical to that corresponding to @code{val}.
795 (define scm-ref (parse-and-eval "ref"))
796 (define err-ref (value-dereference scm-ref)) ;; error
797 (define scm-val (value-referenced-value scm-ref)) ;; ok
800 The @code{<gdb:value>} object @code{scm-val} is identical to that
801 corresponding to @code{val}.
804 @deffn {Scheme Procedure} value-reference-value value
805 Return a new @code{<gdb:value>} object which is a reference to the value
806 encapsulated by @code{<gdb:value>} object @var{value}.
809 @deffn {Scheme Procedure} value-rvalue-reference-value value
810 Return a new @code{<gdb:value>} object which is an rvalue reference to
811 the value encapsulated by @code{<gdb:value>} object @var{value}.
814 @deffn {Scheme Procedure} value-const-value value
815 Return a new @code{<gdb:value>} object which is a @samp{const} version
816 of @code{<gdb:value>} object @var{value}.
819 @deffn {Scheme Procedure} value-field value field-name
820 Return field @var{field-name} from @code{<gdb:value>} object @var{value}.
823 @deffn {Scheme Procedure} value-subscript value index
824 Return the value of array @var{value} at index @var{index}.
825 The @var{value} argument must be a subscriptable @code{<gdb:value>} object.
828 @deffn {Scheme Procedure} value-call value arg-list
829 Perform an inferior function call, taking @var{value} as a pointer
830 to the function to call.
831 Each element of list @var{arg-list} must be a <gdb:value> object or an object
832 that can be converted to a value.
833 The result is the value returned by the function.
836 @deffn {Scheme Procedure} value->bool value
837 Return the Scheme boolean representing @code{<gdb:value>} @var{value}.
838 The value must be ``integer like''. Pointers are ok.
841 @deffn {Scheme Procedure} value->integer
842 Return the Scheme integer representing @code{<gdb:value>} @var{value}.
843 The value must be ``integer like''. Pointers are ok.
846 @deffn {Scheme Procedure} value->real
847 Return the Scheme real number representing @code{<gdb:value>} @var{value}.
848 The value must be a number.
851 @deffn {Scheme Procedure} value->bytevector
852 Return a Scheme bytevector with the raw contents of @code{<gdb:value>}
853 @var{value}. No transformation, endian or otherwise, is performed.
857 @deffn {Scheme Procedure} value->string value @r{[}#:encoding encoding@r{]} @r{[}#:errors errors@r{]} @r{[}#:length length@r{]}
858 If @var{value>} represents a string, then this method
859 converts the contents to a Guile string. Otherwise, this method will
862 Values are interpreted as strings according to the rules of the
863 current language. If the optional length argument is given, the
864 string will be converted to that length, and will include any embedded
865 zeroes that the string may contain. Otherwise, for languages
866 where the string is zero-terminated, the entire string will be
869 For example, in C-like languages, a value is a string if it is a pointer
870 to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
873 If the optional @var{encoding} argument is given, it must be a string
874 naming the encoding of the string in the @code{<gdb:value>}, such as
875 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
876 the same encodings as the corresponding argument to Guile's
877 @code{scm_from_stringn} function, and the Guile codec machinery will be used
878 to convert the string. If @var{encoding} is not given, or if
879 @var{encoding} is the empty string, then either the @code{target-charset}
880 (@pxref{Character Sets}) will be used, or a language-specific encoding
881 will be used, if the current language is able to supply one.
883 The optional @var{errors} argument is one of @code{#f}, @code{error} or
884 @code{substitute}. @code{error} and @code{substitute} must be symbols.
885 If @var{errors} is not specified, or if its value is @code{#f}, then the
886 default conversion strategy is used, which is set with the Scheme function
887 @code{set-port-conversion-strategy!}.
888 If the value is @code{'error} then an exception is thrown if there is any
889 conversion error. If the value is @code{'substitute} then any conversion
890 error is replaced with question marks.
891 @xref{Strings,,, guile, GNU Guile Reference Manual}.
893 If the optional @var{length} argument is given, the string will be
894 fetched and converted to the given length.
895 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
899 @deffn {Scheme Procedure} value->lazy-string value @r{[}#:encoding encoding@r{]} @r{[}#:length length@r{]}
900 If this @code{<gdb:value>} represents a string, then this method
901 converts @var{value} to a @code{<gdb:lazy-string} (@pxref{Lazy Strings
902 In Guile}). Otherwise, this method will throw an exception.
904 If the optional @var{encoding} argument is given, it must be a string
905 naming the encoding of the @code{<gdb:lazy-string}. Some examples are:
906 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. If the
907 @var{encoding} argument is an encoding that @value{GDBN} does not
908 recognize, @value{GDBN} will raise an error.
910 When a lazy string is printed, the @value{GDBN} encoding machinery is
911 used to convert the string during printing. If the optional
912 @var{encoding} argument is not provided, or is an empty string,
913 @value{GDBN} will automatically select the encoding most suitable for
914 the string type. For further information on encoding in @value{GDBN}
915 please see @ref{Character Sets}.
917 If the optional @var{length} argument is given, the string will be
918 fetched and encoded to the length of characters specified. If
919 the @var{length} argument is not provided, the string will be fetched
920 and encoded until a null of appropriate width is found.
921 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
924 @deffn {Scheme Procedure} value-lazy? value
925 Return @code{#t} if @var{value} has not yet been fetched
927 Otherwise return @code{#f}.
928 @value{GDBN} does not fetch values until necessary, for efficiency.
932 (define myval (parse-and-eval "somevar"))
935 The value of @code{somevar} is not fetched at this time. It will be
936 fetched when the value is needed, or when the @code{fetch-lazy}
937 procedure is invoked.
940 @deffn {Scheme Procedure} make-lazy-value type address
941 Return a @code{<gdb:value>} that will be lazily fetched from the
942 target. The object of type @code{<gdb:type>} whose value to fetch is
943 specified by its @var{type} and its target memory @var{address}, which
947 @deffn {Scheme Procedure} value-fetch-lazy! value
948 If @var{value} is a lazy value (@code{(value-lazy? value)} is @code{#t}),
949 then the value is fetched from the inferior.
950 Any errors that occur in the process will produce a Guile exception.
952 If @var{value} is not a lazy value, this method has no effect.
954 The result of this function is unspecified.
957 @deffn {Scheme Procedure} value-print value
958 Return the string representation (print form) of @code{<gdb:value>}
962 @node Arithmetic In Guile
963 @subsubsection Arithmetic In Guile
965 The @code{(gdb)} module provides several functions for performing
966 arithmetic on @code{<gdb:value>} objects.
967 The arithmetic is performed as if it were done by the target,
968 and therefore has target semantics which are not necessarily
969 those of Scheme. For example operations work with a fixed precision,
970 not the arbitrary precision of Scheme.
972 Wherever a function takes an integer or pointer as an operand,
973 @value{GDBN} will convert appropriate Scheme values to perform
976 @deffn {Scheme Procedure} value-add a b
979 @deffn {Scheme Procedure} value-sub a b
982 @deffn {Scheme Procedure} value-mul a b
985 @deffn {Scheme Procedure} value-div a b
988 @deffn {Scheme Procedure} value-rem a b
991 @deffn {Scheme Procedure} value-mod a b
994 @deffn {Scheme Procedure} value-pow a b
997 @deffn {Scheme Procedure} value-not a
1000 @deffn {Scheme Procedure} value-neg a
1003 @deffn {Scheme Procedure} value-pos a
1006 @deffn {Scheme Procedure} value-abs a
1009 @deffn {Scheme Procedure} value-lsh a b
1012 @deffn {Scheme Procedure} value-rsh a b
1015 @deffn {Scheme Procedure} value-min a b
1018 @deffn {Scheme Procedure} value-max a b
1021 @deffn {Scheme Procedure} value-lognot a
1024 @deffn {Scheme Procedure} value-logand a b
1027 @deffn {Scheme Procedure} value-logior a b
1030 @deffn {Scheme Procedure} value-logxor a b
1033 @deffn {Scheme Procedure} value=? a b
1036 @deffn {Scheme Procedure} value<? a b
1039 @deffn {Scheme Procedure} value<=? a b
1042 @deffn {Scheme Procedure} value>? a b
1045 @deffn {Scheme Procedure} value>=? a b
1048 Scheme does not provide a @code{not-equal} function,
1049 and thus Guile support in @value{GDBN} does not either.
1051 @node Types In Guile
1052 @subsubsection Types In Guile
1053 @cindex types in guile
1054 @cindex guile, working with types
1057 @value{GDBN} represents types from the inferior in objects of type
1060 The following type-related procedures are provided by the
1061 @code{(gdb)} module.
1063 @deffn {Scheme Procedure} type? object
1064 Return @code{#t} if @var{object} is an object of type @code{<gdb:type>}.
1065 Otherwise return @code{#f}.
1068 @deffn {Scheme Procedure} lookup-type name @r{[}#:block block@r{]}
1069 This function looks up a type by its @var{name}, which must be a string.
1071 If @var{block} is given, it is an object of type @code{<gdb:block>},
1072 and @var{name} is looked up in that scope.
1073 Otherwise, it is searched for globally.
1075 Ordinarily, this function will return an instance of @code{<gdb:type>}.
1076 If the named type cannot be found, it will throw an exception.
1079 @deffn {Scheme Procedure} type-code type
1080 Return the type code of @var{type}. The type code will be one of the
1081 @code{TYPE_CODE_} constants defined below.
1084 @deffn {Scheme Procedure} type-tag type
1085 Return the tag name of @var{type}. The tag name is the name after
1086 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
1087 languages have this concept. If this type has no tag name, then
1088 @code{#f} is returned.
1091 @deffn {Scheme Procedure} type-name type
1092 Return the name of @var{type}.
1093 If this type has no name, then @code{#f} is returned.
1096 @deffn {Scheme Procedure} type-print-name type
1097 Return the print name of @var{type}.
1098 This returns something even for anonymous types.
1099 For example, for an anonymous C struct @code{"struct @{...@}"} is returned.
1102 @deffn {Scheme Procedure} type-sizeof type
1103 Return the size of this type, in target @code{char} units. Usually, a
1104 target's @code{char} type will be an 8-bit byte. However, on some
1105 unusual platforms, this type may have a different size.
1108 @deffn {Scheme Procedure} type-strip-typedefs type
1109 Return a new @code{<gdb:type>} that represents the real type of @var{type},
1110 after removing all layers of typedefs.
1113 @deffn {Scheme Procedure} type-array type n1 @r{[}n2@r{]}
1114 Return a new @code{<gdb:type>} object which represents an array of this
1115 type. If one argument is given, it is the inclusive upper bound of
1116 the array; in this case the lower bound is zero. If two arguments are
1117 given, the first argument is the lower bound of the array, and the
1118 second argument is the upper bound of the array. An array's length
1119 must not be negative, but the bounds can be.
1122 @deffn {Scheme Procedure} type-vector type n1 @r{[}n2@r{]}
1123 Return a new @code{<gdb:type>} object which represents a vector of this
1124 type. If one argument is given, it is the inclusive upper bound of
1125 the vector; in this case the lower bound is zero. If two arguments are
1126 given, the first argument is the lower bound of the vector, and the
1127 second argument is the upper bound of the vector. A vector's length
1128 must not be negative, but the bounds can be.
1130 The difference between an @code{array} and a @code{vector} is that
1131 arrays behave like in C: when used in expressions they decay to a pointer
1132 to the first element whereas vectors are treated as first class values.
1135 @deffn {Scheme Procedure} type-pointer type
1136 Return a new @code{<gdb:type>} object which represents a pointer to
1140 @deffn {Scheme Procedure} type-range type
1141 Return a list of two elements: the low bound and high bound of @var{type}.
1142 If @var{type} does not have a range, an exception is thrown.
1145 @deffn {Scheme Procedure} type-reference type
1146 Return a new @code{<gdb:type>} object which represents a reference to
1150 @deffn {Scheme Procedure} type-target type
1151 Return a new @code{<gdb:type>} object which represents the target type
1154 For a pointer type, the target type is the type of the pointed-to
1155 object. For an array type (meaning C-like arrays), the target type is
1156 the type of the elements of the array. For a function or method type,
1157 the target type is the type of the return value. For a complex type,
1158 the target type is the type of the elements. For a typedef, the
1159 target type is the aliased type.
1161 If the type does not have a target, this method will throw an
1165 @deffn {Scheme Procedure} type-const type
1166 Return a new @code{<gdb:type>} object which represents a
1167 @code{const}-qualified variant of @var{type}.
1170 @deffn {Scheme Procedure} type-volatile type
1171 Return a new @code{<gdb:type>} object which represents a
1172 @code{volatile}-qualified variant of @var{type}.
1175 @deffn {Scheme Procedure} type-unqualified type
1176 Return a new @code{<gdb:type>} object which represents an unqualified
1177 variant of @var{type}. That is, the result is neither @code{const} nor
1181 @deffn {Scheme Procedure} type-num-fields
1182 Return the number of fields of @code{<gdb:type>} @var{type}.
1185 @deffn {Scheme Procedure} type-fields type
1186 Return the fields of @var{type} as a list.
1187 For structure and union types, @code{fields} has the usual meaning.
1188 Range types have two fields, the minimum and maximum values. Enum types
1189 have one field per enum constant. Function and method types have one
1190 field per parameter. The base types of C@t{++} classes are also
1191 represented as fields. If the type has no fields, or does not fit
1192 into one of these categories, an empty list will be returned.
1193 @xref{Fields of a type in Guile}.
1196 @deffn {Scheme Procedure} make-field-iterator type
1197 Return the fields of @var{type} as a <gdb:iterator> object.
1198 @xref{Iterators In Guile}.
1201 @deffn {Scheme Procedure} type-field type field-name
1202 Return field named @var{field-name} in @var{type}.
1203 The result is an object of type @code{<gdb:field>}.
1204 @xref{Fields of a type in Guile}.
1205 If the type does not have fields, or @var{field-name} is not a field
1206 of @var{type}, an exception is thrown.
1208 For example, if @code{some-type} is a @code{<gdb:type>} instance holding
1209 a structure type, you can access its @code{foo} field with:
1212 (define bar (type-field some-type "foo"))
1215 @code{bar} will be a @code{<gdb:field>} object.
1218 @deffn {Scheme Procedure} type-has-field? type name
1219 Return @code{#t} if @code{<gdb:type>} @var{type} has field named @var{name}.
1220 Otherwise return @code{#f}.
1223 Each type has a code, which indicates what category this type falls
1224 into. The available type categories are represented by constants
1225 defined in the @code{(gdb)} module:
1229 The type is a pointer.
1231 @item TYPE_CODE_ARRAY
1232 The type is an array.
1234 @item TYPE_CODE_STRUCT
1235 The type is a structure.
1237 @item TYPE_CODE_UNION
1238 The type is a union.
1240 @item TYPE_CODE_ENUM
1241 The type is an enum.
1243 @item TYPE_CODE_FLAGS
1244 A bit flags type, used for things such as status registers.
1246 @item TYPE_CODE_FUNC
1247 The type is a function.
1250 The type is an integer type.
1253 A floating point type.
1255 @item TYPE_CODE_VOID
1256 The special type @code{void}.
1261 @item TYPE_CODE_RANGE
1262 A range type, that is, an integer type with bounds.
1264 @item TYPE_CODE_STRING
1265 A string type. Note that this is only used for certain languages with
1266 language-defined string types; C strings are not represented this way.
1268 @item TYPE_CODE_BITSTRING
1269 A string of bits. It is deprecated.
1271 @item TYPE_CODE_ERROR
1272 An unknown or erroneous type.
1274 @item TYPE_CODE_METHOD
1275 A method type, as found in C@t{++}.
1277 @item TYPE_CODE_METHODPTR
1278 A pointer-to-member-function.
1280 @item TYPE_CODE_MEMBERPTR
1281 A pointer-to-member.
1286 @item TYPE_CODE_RVALUE_REF
1287 A C@t{++}11 rvalue reference type.
1289 @item TYPE_CODE_CHAR
1292 @item TYPE_CODE_BOOL
1295 @item TYPE_CODE_COMPLEX
1296 A complex float type.
1298 @item TYPE_CODE_TYPEDEF
1299 A typedef to some other type.
1301 @item TYPE_CODE_NAMESPACE
1302 A C@t{++} namespace.
1304 @item TYPE_CODE_DECFLOAT
1305 A decimal floating point type.
1307 @item TYPE_CODE_INTERNAL_FUNCTION
1308 A function internal to @value{GDBN}. This is the type used to represent
1309 convenience functions (@pxref{Convenience Funs}).
1312 Further support for types is provided in the @code{(gdb types)}
1313 Guile module (@pxref{Guile Types Module}).
1315 @anchor{Fields of a type in Guile}
1316 Each field is represented as an object of type @code{<gdb:field>}.
1318 The following field-related procedures are provided by the
1319 @code{(gdb)} module:
1321 @deffn {Scheme Procedure} field? object
1322 Return @code{#t} if @var{object} is an object of type @code{<gdb:field>}.
1323 Otherwise return @code{#f}.
1326 @deffn {Scheme Procedure} field-name field
1327 Return the name of the field, or @code{#f} for anonymous fields.
1330 @deffn {Scheme Procedure} field-type field
1331 Return the type of the field. This is usually an instance of
1332 @code{<gdb:type>}, but it can be @code{#f} in some situations.
1335 @deffn {Scheme Procedure} field-enumval field
1336 Return the enum value represented by @code{<gdb:field>} @var{field}.
1339 @deffn {Scheme Procedure} field-bitpos field
1340 Return the bit position of @code{<gdb:field>} @var{field}.
1341 This attribute is not available for @code{static} fields (as in
1345 @deffn {Scheme Procedure} field-bitsize field
1346 If the field is packed, or is a bitfield, return the size of
1347 @code{<gdb:field>} @var{field} in bits. Otherwise, zero is returned;
1348 in which case the field's size is given by its type.
1351 @deffn {Scheme Procedure} field-artificial? field
1352 Return @code{#t} if the field is artificial, usually meaning that
1353 it was provided by the compiler and not the user.
1354 Otherwise return @code{#f}.
1357 @deffn {Scheme Procedure} field-base-class? field
1358 Return @code{#t} if the field represents a base class of a C@t{++}
1360 Otherwise return @code{#f}.
1363 @node Guile Pretty Printing API
1364 @subsubsection Guile Pretty Printing API
1365 @cindex guile pretty printing api
1367 An example output is provided (@pxref{Pretty Printing}).
1369 A pretty-printer is represented by an object of type <gdb:pretty-printer>.
1370 Pretty-printer objects are created with @code{make-pretty-printer}.
1372 The following pretty-printer-related procedures are provided by the
1373 @code{(gdb)} module:
1375 @deffn {Scheme Procedure} make-pretty-printer name lookup-function
1376 Return a @code{<gdb:pretty-printer>} object named @var{name}.
1378 @var{lookup-function} is a function of one parameter: the value to
1379 be printed. If the value is handled by this pretty-printer, then
1380 @var{lookup-function} returns an object of type
1381 <gdb:pretty-printer-worker> to perform the actual pretty-printing.
1382 Otherwise @var{lookup-function} returns @code{#f}.
1385 @deffn {Scheme Procedure} pretty-printer? object
1386 Return @code{#t} if @var{object} is a @code{<gdb:pretty-printer>} object.
1387 Otherwise return @code{#f}.
1390 @deffn {Scheme Procedure} pretty-printer-enabled? pretty-printer
1391 Return @code{#t} if @var{pretty-printer} is enabled.
1392 Otherwise return @code{#f}.
1395 @deffn {Scheme Procedure} set-pretty-printer-enabled! pretty-printer flag
1396 Set the enabled flag of @var{pretty-printer} to @var{flag}.
1397 The value returned is unspecified.
1400 @deffn {Scheme Procedure} pretty-printers
1401 Return the list of global pretty-printers.
1404 @deffn {Scheme Procedure} set-pretty-printers! pretty-printers
1405 Set the list of global pretty-printers to @var{pretty-printers}.
1406 The value returned is unspecified.
1409 @deffn {Scheme Procedure} make-pretty-printer-worker display-hint to-string children
1410 Return an object of type @code{<gdb:pretty-printer-worker>}.
1412 This function takes three parameters:
1416 @var{display-hint} provides a hint to @value{GDBN} or @value{GDBN}
1417 front end via MI to change the formatting of the value being printed.
1418 The value must be a string or @code{#f} (meaning there is no hint).
1419 Several values for @var{display-hint}
1420 are predefined by @value{GDBN}:
1424 Indicate that the object being printed is ``array-like''. The CLI
1425 uses this to respect parameters such as @code{set print elements} and
1426 @code{set print array}.
1429 Indicate that the object being printed is ``map-like'', and that the
1430 children of this value can be assumed to alternate between keys and
1434 Indicate that the object being printed is ``string-like''. If the
1435 printer's @code{to-string} function returns a Guile string of some
1436 kind, then @value{GDBN} will call its internal language-specific
1437 string-printing function to format the string. For the CLI this means
1438 adding quotation marks, possibly escaping some characters, respecting
1439 @code{set print elements}, and the like.
1443 @var{to-string} is either a function of one parameter, the
1444 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1446 When printing from the CLI, if the @code{to-string} method exists,
1447 then @value{GDBN} will prepend its result to the values returned by
1448 @code{children}. Exactly how this formatting is done is dependent on
1449 the display hint, and may change as more hints are added. Also,
1450 depending on the print settings (@pxref{Print Settings}), the CLI may
1451 print just the result of @code{to-string} in a stack trace, omitting
1452 the result of @code{children}.
1454 If this method returns a string, it is printed verbatim.
1456 Otherwise, if this method returns an instance of @code{<gdb:value>},
1457 then @value{GDBN} prints this value. This may result in a call to
1458 another pretty-printer.
1460 If instead the method returns a Guile value which is convertible to a
1461 @code{<gdb:value>}, then @value{GDBN} performs the conversion and prints
1462 the resulting value. Again, this may result in a call to another
1463 pretty-printer. Guile scalars (integers, floats, and booleans) and
1464 strings are convertible to @code{<gdb:value>}; other types are not.
1466 Finally, if this method returns @code{#f} then no further operations
1467 are peformed in this method and nothing is printed.
1469 If the result is not one of these types, an exception is raised.
1471 @var{to-string} may also be @code{#f} in which case it is left to
1472 @var{children} to print the value.
1475 @var{children} is either a function of one parameter, the
1476 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1478 @value{GDBN} will call this function on a pretty-printer to compute the
1479 children of the pretty-printer's value.
1481 This function must return a <gdb:iterator> object.
1482 Each item returned by the iterator must be a tuple holding
1483 two elements. The first element is the ``name'' of the child; the
1484 second element is the child's value. The value can be any Guile
1485 object which is convertible to a @value{GDBN} value.
1487 If @var{children} is @code{#f}, @value{GDBN} will act
1488 as though the value has no children.
1490 Children may be hidden from display based on the value of @samp{set
1491 print max-depth} (@pxref{Print Settings}).
1495 @value{GDBN} provides a function which can be used to look up the
1496 default pretty-printer for a @code{<gdb:value>}:
1498 @deffn {Scheme Procedure} default-visualizer value
1499 This function takes a @code{<gdb:value>} object as an argument. If a
1500 pretty-printer for this value exists, then it is returned. If no such
1501 printer exists, then this returns @code{#f}.
1504 @node Selecting Guile Pretty-Printers
1505 @subsubsection Selecting Guile Pretty-Printers
1506 @cindex selecting guile pretty-printers
1508 There are three sets of pretty-printers that @value{GDBN} searches:
1512 Per-objfile list of pretty-printers (@pxref{Objfiles In Guile}).
1514 Per-progspace list of pretty-printers (@pxref{Progspaces In Guile}).
1516 The global list of pretty-printers (@pxref{Guile Pretty Printing API}).
1517 These printers are available when debugging any inferior.
1520 Pretty-printer lookup is done by passing the value to be printed to the
1521 lookup function of each enabled object in turn.
1522 Lookup stops when a lookup function returns a non-@code{#f} value
1523 or when the list is exhausted.
1524 Lookup functions must return either a @code{<gdb:pretty-printer-worker>}
1525 object or @code{#f}. Otherwise an exception is thrown.
1527 @value{GDBN} first checks the result of @code{objfile-pretty-printers}
1528 of each @code{<gdb:objfile>} in the current program space and iteratively
1529 calls each enabled lookup function in the list for that @code{<gdb:objfile>}
1530 until a non-@code{#f} object is returned.
1531 If no pretty-printer is found in the objfile lists, @value{GDBN} then
1532 searches the result of @code{progspace-pretty-printers} of the current
1533 program space, calling each enabled function until a non-@code{#f} object
1535 After these lists have been exhausted, it tries the global pretty-printers
1536 list, obtained with @code{pretty-printers}, again calling each enabled
1537 function until a non-@code{#f} object is returned.
1539 The order in which the objfiles are searched is not specified. For a
1540 given list, functions are always invoked from the head of the list,
1541 and iterated over sequentially until the end of the list, or a
1542 @code{<gdb:pretty-printer-worker>} object is returned.
1544 For various reasons a pretty-printer may not work.
1545 For example, the underlying data structure may have changed and
1546 the pretty-printer is out of date.
1548 The consequences of a broken pretty-printer are severe enough that
1549 @value{GDBN} provides support for enabling and disabling individual
1550 printers. For example, if @code{print frame-arguments} is on,
1551 a backtrace can become highly illegible if any argument is printed
1552 with a broken printer.
1554 Pretty-printers are enabled and disabled from Scheme by calling
1555 @code{set-pretty-printer-enabled!}.
1556 @xref{Guile Pretty Printing API}.
1558 @node Writing a Guile Pretty-Printer
1559 @subsubsection Writing a Guile Pretty-Printer
1560 @cindex writing a Guile pretty-printer
1562 A pretty-printer consists of two basic parts: a lookup function to determine
1563 if the type is supported, and the printer itself.
1565 Here is an example showing how a @code{std::string} printer might be
1566 written. @xref{Guile Pretty Printing API}, for details.
1569 (define (make-my-string-printer value)
1570 "Print a my::string string"
1571 (make-pretty-printer-worker
1574 (value-field value "_data"))
1578 And here is an example showing how a lookup function for the printer
1579 example above might be written.
1582 (define (str-lookup-function pretty-printer value)
1583 (let ((tag (type-tag (value-type value))))
1585 (string-prefix? "std::string<" tag)
1586 (make-my-string-printer value))))
1589 Then to register this printer in the global printer list:
1592 (append-pretty-printer!
1593 (make-pretty-printer "my-string" str-lookup-function))
1596 The example lookup function extracts the value's type, and attempts to
1597 match it to a type that it can pretty-print. If it is a type the
1598 printer can pretty-print, it will return a <gdb:pretty-printer-worker> object.
1599 If not, it returns @code{#f}.
1601 We recommend that you put your core pretty-printers into a Guile
1602 package. If your pretty-printers are for use with a library, we
1603 further recommend embedding a version number into the package name.
1604 This practice will enable @value{GDBN} to load multiple versions of
1605 your pretty-printers at the same time, because they will have
1608 You should write auto-loaded code (@pxref{Guile Auto-loading}) such that it
1609 can be evaluated multiple times without changing its meaning. An
1610 ideal auto-load file will consist solely of @code{import}s of your
1611 printer modules, followed by a call to a register pretty-printers with
1612 the current objfile.
1614 Taken as a whole, this approach will scale nicely to multiple
1615 inferiors, each potentially using a different library version.
1616 Embedding a version number in the Guile package name will ensure that
1617 @value{GDBN} is able to load both sets of printers simultaneously.
1618 Then, because the search for pretty-printers is done by objfile, and
1619 because your auto-loaded code took care to register your library's
1620 printers with a specific objfile, @value{GDBN} will find the correct
1621 printers for the specific version of the library used by each
1624 To continue the @code{my::string} example,
1625 this code might appear in @code{(my-project my-library v1)}:
1629 (define (register-printers objfile)
1630 (append-objfile-pretty-printer!
1631 (make-pretty-printer "my-string" str-lookup-function)))
1635 And then the corresponding contents of the auto-load file would be:
1638 (use-modules (gdb) (my-project my-library v1))
1639 (register-printers (current-objfile))
1642 The previous example illustrates a basic pretty-printer.
1643 There are a few things that can be improved on.
1644 The printer only handles one type, whereas a library typically has
1645 several types. One could install a lookup function for each desired type
1646 in the library, but one could also have a single lookup function recognize
1647 several types. The latter is the conventional way this is handled.
1648 If a pretty-printer can handle multiple data types, then its
1649 @dfn{subprinters} are the printers for the individual data types.
1651 The @code{(gdb printing)} module provides a formal way of solving this
1652 problem (@pxref{Guile Printing Module}).
1653 Here is another example that handles multiple types.
1655 These are the types we are going to pretty-print:
1658 struct foo @{ int a, b; @};
1659 struct bar @{ struct foo x, y; @};
1662 Here are the printers:
1665 (define (make-foo-printer value)
1666 "Print a foo object"
1667 (make-pretty-printer-worker
1670 (format #f "a=<~a> b=<~a>"
1671 (value-field value "a") (value-field value "a")))
1674 (define (make-bar-printer value)
1675 "Print a bar object"
1676 (make-pretty-printer-worker
1679 (format #f "x=<~a> y=<~a>"
1680 (value-field value "x") (value-field value "y")))
1684 This example doesn't need a lookup function, that is handled by the
1685 @code{(gdb printing)} module. Instead a function is provided to build up
1686 the object that handles the lookup.
1689 (use-modules (gdb printing))
1691 (define (build-pretty-printer)
1692 (let ((pp (make-pretty-printer-collection "my-library")))
1693 (pp-collection-add-tag-printer "foo" make-foo-printer)
1694 (pp-collection-add-tag-printer "bar" make-bar-printer)
1698 And here is the autoload support:
1701 (use-modules (gdb) (my-library))
1702 (append-objfile-pretty-printer! (current-objfile) (build-pretty-printer))
1705 Finally, when this printer is loaded into @value{GDBN}, here is the
1706 corresponding output of @samp{info pretty-printer}:
1709 (gdb) info pretty-printer
1716 @node Commands In Guile
1717 @subsubsection Commands In Guile
1719 @cindex commands in guile
1720 @cindex guile commands
1721 You can implement new @value{GDBN} CLI commands in Guile. A CLI
1722 command object is created with the @code{make-command} Guile function,
1723 and added to @value{GDBN} with the @code{register-command!} Guile function.
1724 This two-step approach is taken to separate out the side-effect of adding
1725 the command to @value{GDBN} from @code{make-command}.
1727 There is no support for multi-line commands, that is commands that
1728 consist of multiple lines and are terminated with @code{end}.
1730 @c TODO: line length
1731 @deffn {Scheme Procedure} (make-command name @r{[}#:invoke invoke{]} @r{[}#:command-class command-class@r{]} @r{[}#:completer-class completer{]} @r{[}#:prefix? prefix@r{]} @r{[}#:doc doc-string{]})
1733 The argument @var{name} is the name of the command. If @var{name} consists of
1734 multiple words, then the initial words are looked for as prefix
1735 commands. In this case, if one of the prefix commands does not exist,
1736 an exception is raised.
1738 The result is the @code{<gdb:command>} object representing the command.
1739 The command is not usable until it has been registered with @value{GDBN}
1740 with @code{register-command!}.
1742 The rest of the arguments are optional.
1744 The argument @var{invoke} is a procedure of three arguments: @var{self},
1745 @var{args} and @var{from-tty}. The argument @var{self} is the
1746 @code{<gdb:command>} object representing the command.
1747 The argument @var{args} is a string representing the arguments passed to
1748 the command, after leading and trailing whitespace has been stripped.
1749 The argument @var{from-tty} is a boolean flag and specifies whether the
1750 command should consider itself to have been originated from the user
1751 invoking it interactively. If this function throws an exception,
1752 it is turned into a @value{GDBN} @code{error} call.
1753 Otherwise, the return value is ignored.
1755 The argument @var{command-class} is one of the @samp{COMMAND_} constants
1756 defined below. This argument tells @value{GDBN} how to categorize the
1757 new command in the help system. The default is @code{COMMAND_NONE}.
1759 The argument @var{completer} is either @code{#f}, one of the @samp{COMPLETE_}
1760 constants defined below, or a procedure, also defined below.
1761 This argument tells @value{GDBN} how to perform completion
1762 for this command. If not provided or if the value is @code{#f},
1763 then no completion is performed on the command.
1765 The argument @var{prefix} is a boolean flag indicating whether the new
1766 command is a prefix command; sub-commands of this command may be
1769 The argument @var{doc-string} is help text for the new command.
1770 If no documentation string is provided, the default value ``This command is
1771 not documented.'' is used.
1774 @deffn {Scheme Procedure} register-command! command
1775 Add @var{command}, a @code{<gdb:command>} object, to @value{GDBN}'s
1777 It is an error to register a command more than once.
1778 The result is unspecified.
1781 @deffn {Scheme Procedure} command? object
1782 Return @code{#t} if @var{object} is a @code{<gdb:command>} object.
1783 Otherwise return @code{#f}.
1786 @cindex don't repeat Guile command
1787 @deffn {Scheme Procedure} dont-repeat
1788 By default, a @value{GDBN} command is repeated when the user enters a
1789 blank line at the command prompt. A command can suppress this
1790 behavior by invoking the @code{dont-repeat} function. This is similar
1791 to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
1794 @deffn {Scheme Procedure} string->argv string
1795 Convert a string to a list of strings split up according to
1796 @value{GDBN}'s argv parsing rules.
1797 It is recommended to use this for consistency.
1798 Arguments are separated by spaces and may be quoted.
1802 scheme@@(guile-user)> (string->argv "1 2\\ \\\"3 '4 \"5' \"6 '7\"")
1803 $1 = ("1" "2 \"3" "4 \"5" "6 '7")
1807 @deffn {Scheme Procedure} throw-user-error message . args
1808 Throw a @code{gdb:user-error} exception.
1809 The argument @var{message} is the error message as a format string, like the
1810 @var{fmt} argument to the @code{format} Scheme function.
1811 @xref{Formatted Output,,, guile, GNU Guile Reference Manual}.
1812 The argument @var{args} is a list of the optional arguments of @var{message}.
1814 This is used when the command detects a user error of some kind,
1815 say a bad command argument.
1818 (gdb) guile (use-modules (gdb))
1820 (register-command! (make-command "test-user-error"
1821 #:command-class COMMAND_OBSCURE
1822 #:invoke (lambda (self arg from-tty)
1823 (throw-user-error "Bad argument ~a" arg))))
1825 (gdb) test-user-error ugh
1826 ERROR: Bad argument ugh
1830 @cindex completion of Guile commands
1831 @deffn completer self text word
1832 If the @var{completer} option to @code{make-command} is a procedure,
1833 it takes three arguments: @var{self} which is the @code{<gdb:command>}
1834 object, and @var{text} and @var{word} which are both strings.
1835 The argument @var{text} holds the complete command line up to the cursor's
1836 location. The argument @var{word} holds the last word of the command line;
1837 this is computed using a word-breaking heuristic.
1839 All forms of completion are handled by this function, that is,
1840 the @key{TAB} and @key{M-?} key bindings (@pxref{Completion}),
1841 and the @code{complete} command (@pxref{Help, complete}).
1843 This procedure can return several kinds of values:
1847 If the return value is a list, the contents of the list are used as the
1848 completions. It is up to @var{completer} to ensure that the
1849 contents actually do complete the word. An empty list is
1850 allowed, it means that there were no completions available. Only
1851 string elements of the list are used; other elements in the
1855 If the return value is a @code{<gdb:iterator>} object, it is iterated over to
1856 obtain the completions. It is up to @code{completer-procedure} to ensure
1857 that the results actually do complete the word. Only
1858 string elements of the result are used; other elements in the
1859 sequence are ignored.
1862 All other results are treated as though there were no available
1867 When a new command is registered, it will have been declared as a member of
1868 some general class of commands. This is used to classify top-level
1869 commands in the on-line help system; note that prefix commands are not
1870 listed under their own category but rather that of their top-level
1871 command. The available classifications are represented by constants
1872 defined in the @code{gdb} module:
1876 The command does not belong to any particular class. A command in
1877 this category will not be displayed in any of the help categories.
1878 This is the default.
1880 @item COMMAND_RUNNING
1881 The command is related to running the inferior. For example,
1882 @code{start}, @code{step}, and @code{continue} are in this category.
1883 Type @kbd{help running} at the @value{GDBN} prompt to see a list of
1884 commands in this category.
1887 The command is related to data or variables. For example,
1888 @code{call}, @code{find}, and @code{print} are in this category. Type
1889 @kbd{help data} at the @value{GDBN} prompt to see a list of commands
1893 The command has to do with manipulation of the stack. For example,
1894 @code{backtrace}, @code{frame}, and @code{return} are in this
1895 category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
1896 list of commands in this category.
1899 This class is used for file-related commands. For example,
1900 @code{file}, @code{list} and @code{section} are in this category.
1901 Type @kbd{help files} at the @value{GDBN} prompt to see a list of
1902 commands in this category.
1904 @item COMMAND_SUPPORT
1905 This should be used for ``support facilities'', generally meaning
1906 things that are useful to the user when interacting with @value{GDBN},
1907 but not related to the state of the inferior. For example,
1908 @code{help}, @code{make}, and @code{shell} are in this category. Type
1909 @kbd{help support} at the @value{GDBN} prompt to see a list of
1910 commands in this category.
1912 @item COMMAND_STATUS
1913 The command is an @samp{info}-related command, that is, related to the
1914 state of @value{GDBN} itself. For example, @code{info}, @code{macro},
1915 and @code{show} are in this category. Type @kbd{help status} at the
1916 @value{GDBN} prompt to see a list of commands in this category.
1918 @item COMMAND_BREAKPOINTS
1919 The command has to do with breakpoints. For example, @code{break},
1920 @code{clear}, and @code{delete} are in this category. Type @kbd{help
1921 breakpoints} at the @value{GDBN} prompt to see a list of commands in
1924 @item COMMAND_TRACEPOINTS
1925 The command has to do with tracepoints. For example, @code{trace},
1926 @code{actions}, and @code{tfind} are in this category. Type
1927 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
1928 commands in this category.
1931 The command is a general purpose command for the user, and typically
1932 does not fit in one of the other categories.
1933 Type @kbd{help user-defined} at the @value{GDBN} prompt to see
1934 a list of commands in this category, as well as the list of gdb macros
1935 (@pxref{Sequences}).
1937 @item COMMAND_OBSCURE
1938 The command is only used in unusual circumstances, or is not of
1939 general interest to users. For example, @code{checkpoint},
1940 @code{fork}, and @code{stop} are in this category. Type @kbd{help
1941 obscure} at the @value{GDBN} prompt to see a list of commands in this
1944 @item COMMAND_MAINTENANCE
1945 The command is only useful to @value{GDBN} maintainers. The
1946 @code{maintenance} and @code{flushregs} commands are in this category.
1947 Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
1948 commands in this category.
1951 A new command can use a predefined completion function, either by
1952 specifying it via an argument at initialization, or by returning it
1953 from the @code{completer} procedure. These predefined completion
1954 constants are all defined in the @code{gdb} module:
1958 This constant means that no completion should be done.
1960 @item COMPLETE_FILENAME
1961 This constant means that filename completion should be performed.
1963 @item COMPLETE_LOCATION
1964 This constant means that location completion should be done.
1965 @xref{Specify Location}.
1967 @item COMPLETE_COMMAND
1968 This constant means that completion should examine @value{GDBN}
1971 @item COMPLETE_SYMBOL
1972 This constant means that completion should be done using symbol names
1975 @item COMPLETE_EXPRESSION
1976 This constant means that completion should be done on expressions.
1977 Often this means completing on symbol names, but some language
1978 parsers also have support for completing on field names.
1981 The following code snippet shows how a trivial CLI command can be
1982 implemented in Guile:
1986 (register-command! (make-command "hello-world"
1987 #:command-class COMMAND_USER
1988 #:doc "Greet the whole world."
1989 #:invoke (lambda (self args from-tty) (display "Hello, World!\n"))))
1995 @node Parameters In Guile
1996 @subsubsection Parameters In Guile
1998 @cindex parameters in guile
1999 @cindex guile parameters
2001 You can implement new @value{GDBN} @dfn{parameters} using Guile
2002 @footnote{Note that @value{GDBN} parameters must not be confused with
2003 Guile’s parameter objects (@pxref{Parameters,,, guile, GNU Guile
2004 Reference Manual}).}.
2006 There are many parameters that already exist and can be set in
2007 @value{GDBN}. Two examples are: @code{set follow-fork} and
2008 @code{set charset}. Setting these parameters influences certain
2009 behavior in @value{GDBN}. Similarly, you can define parameters that
2010 can be used to influence behavior in custom Guile scripts and commands.
2012 A new parameter is defined with the @code{make-parameter} Guile function,
2013 and added to @value{GDBN} with the @code{register-parameter!} Guile function.
2014 This two-step approach is taken to separate out the side-effect of adding
2015 the parameter to @value{GDBN} from @code{make-parameter}.
2017 Parameters are exposed to the user via the @code{set} and
2018 @code{show} commands. @xref{Help}.
2021 @deffn {Scheme Procedure} (make-parameter name @r{[}#:command-class command-class@r{]} @r{[}#:parameter-type parameter-type{]} @r{[}#:enum-list enum-list@r{]} @r{[}#:set-func set-func{]} @r{[}#:show-func show-func{]} @r{[}#:doc doc{]} @r{[}#:set-doc set-doc{]} @r{[}#:show-doc show-doc{]} @r{[}#:initial-value initial-value{]})
2023 The argument @var{name} is the name of the new parameter. If @var{name}
2024 consists of multiple words, then the initial words are looked for as prefix
2025 parameters. An example of this can be illustrated with the
2026 @code{set print} set of parameters. If @var{name} is
2027 @code{print foo}, then @code{print} will be searched as the prefix
2028 parameter. In this case the parameter can subsequently be accessed in
2029 @value{GDBN} as @code{set print foo}.
2030 If @var{name} consists of multiple words, and no prefix parameter group
2031 can be found, an exception is raised.
2033 The result is the @code{<gdb:parameter>} object representing the parameter.
2034 The parameter is not usable until it has been registered with @value{GDBN}
2035 with @code{register-parameter!}.
2037 The rest of the arguments are optional.
2039 The argument @var{command-class} should be one of the @samp{COMMAND_} constants
2040 (@pxref{Commands In Guile}). This argument tells @value{GDBN} how to
2041 categorize the new parameter in the help system.
2042 The default is @code{COMMAND_NONE}.
2044 The argument @var{parameter-type} should be one of the @samp{PARAM_} constants
2045 defined below. This argument tells @value{GDBN} the type of the new
2046 parameter; this information is used for input validation and
2047 completion. The default is @code{PARAM_BOOLEAN}.
2049 If @var{parameter-type} is @code{PARAM_ENUM}, then
2050 @var{enum-list} must be a list of strings. These strings
2051 represent the possible values for the parameter.
2053 If @var{parameter-type} is not @code{PARAM_ENUM}, then the presence
2054 of @var{enum-list} will cause an exception to be thrown.
2056 The argument @var{set-func} is a function of one argument: @var{self} which
2057 is the @code{<gdb:parameter>} object representing the parameter.
2058 @value{GDBN} will call this function when a @var{parameter}'s value has
2059 been changed via the @code{set} API (for example, @kbd{set foo off}).
2060 The value of the parameter has already been set to the new value.
2061 This function must return a string to be displayed to the user.
2062 @value{GDBN} will add a trailing newline if the string is non-empty.
2063 @value{GDBN} generally doesn't print anything when a parameter is set,
2064 thus typically this function should return @samp{""}.
2065 A non-empty string result should typically be used for displaying warnings
2068 The argument @var{show-func} is a function of two arguments: @var{self} which
2069 is the @code{<gdb:parameter>} object representing the parameter, and
2070 @var{svalue} which is the string representation of the current value.
2071 @value{GDBN} will call this function when a @var{parameter}'s
2072 @code{show} API has been invoked (for example, @kbd{show foo}).
2073 This function must return a string, and will be displayed to the user.
2074 @value{GDBN} will add a trailing newline.
2076 The argument @var{doc} is the help text for the new parameter.
2077 If there is no documentation string, a default value is used.
2079 The argument @var{set-doc} is the help text for this parameter's
2082 The argument @var{show-doc} is the help text for this parameter's
2083 @code{show} command.
2085 The argument @var{initial-value} specifies the initial value of the parameter.
2086 If it is a function, it takes one parameter, the @code{<gdb:parameter>}
2087 object and its result is used as the initial value of the parameter.
2088 The initial value must be valid for the parameter type,
2089 otherwise an exception is thrown.
2092 @deffn {Scheme Procedure} register-parameter! parameter
2093 Add @var{parameter}, a @code{<gdb:parameter>} object, to @value{GDBN}'s
2095 It is an error to register a parameter more than once.
2096 The result is unspecified.
2099 @deffn {Scheme Procedure} parameter? object
2100 Return @code{#t} if @var{object} is a @code{<gdb:parameter>} object.
2101 Otherwise return @code{#f}.
2104 @deffn {Scheme Procedure} parameter-value parameter
2105 Return the value of @var{parameter} which may either be
2106 a @code{<gdb:parameter>} object or a string naming the parameter.
2109 @deffn {Scheme Procedure} set-parameter-value! parameter new-value
2110 Assign @var{parameter} the value of @var{new-value}.
2111 The argument @var{parameter} must be an object of type @code{<gdb:parameter>}.
2112 @value{GDBN} does validation when assignments are made.
2115 When a new parameter is defined, its type must be specified. The
2116 available types are represented by constants defined in the @code{gdb}
2121 The value is a plain boolean. The Guile boolean values, @code{#t}
2122 and @code{#f} are the only valid values.
2124 @item PARAM_AUTO_BOOLEAN
2125 The value has three possible states: true, false, and @samp{auto}. In
2126 Guile, true and false are represented using boolean constants, and
2127 @samp{auto} is represented using @code{#:auto}.
2129 @item PARAM_UINTEGER
2130 The value is an unsigned integer. The value of 0 should be
2131 interpreted to mean ``unlimited''.
2133 @item PARAM_ZINTEGER
2134 The value is an integer.
2136 @item PARAM_ZUINTEGER
2137 The value is an unsigned integer.
2139 @item PARAM_ZUINTEGER_UNLIMITED
2140 The value is an integer in the range @samp{[0, INT_MAX]}.
2141 A value of @samp{-1} means ``unlimited'', and other negative
2142 numbers are not allowed.
2145 The value is a string. When the user modifies the string, any escape
2146 sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
2147 translated into corresponding characters and encoded into the current
2150 @item PARAM_STRING_NOESCAPE
2151 The value is a string. When the user modifies the string, escapes are
2152 passed through untranslated.
2154 @item PARAM_OPTIONAL_FILENAME
2155 The value is a either a filename (a string), or @code{#f}.
2157 @item PARAM_FILENAME
2158 The value is a filename. This is just like
2159 @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
2162 The value is a string, which must be one of a collection of string
2163 constants provided when the parameter is created.
2166 @node Progspaces In Guile
2167 @subsubsection Program Spaces In Guile
2169 @cindex progspaces in guile
2170 @tindex <gdb:progspace>
2171 A program space, or @dfn{progspace}, represents a symbolic view
2172 of an address space.
2173 It consists of all of the objfiles of the program.
2174 @xref{Objfiles In Guile}.
2175 @xref{Inferiors Connections and Programs, program spaces}, for more details
2176 about program spaces.
2178 Each progspace is represented by an instance of the @code{<gdb:progspace>}
2179 smob. @xref{GDB Scheme Data Types}.
2181 The following progspace-related functions are available in the
2182 @code{(gdb)} module:
2184 @deffn {Scheme Procedure} progspace? object
2185 Return @code{#t} if @var{object} is a @code{<gdb:progspace>} object.
2186 Otherwise return @code{#f}.
2189 @deffn {Scheme Procedure} progspace-valid? progspace
2190 Return @code{#t} if @var{progspace} is valid, @code{#f} if not.
2191 A @code{<gdb:progspace>} object can become invalid
2192 if the program it refers to is not loaded in @value{GDBN} any longer.
2195 @deffn {Scheme Procedure} current-progspace
2196 This function returns the program space of the currently selected inferior.
2197 There is always a current progspace, this never returns @code{#f}.
2198 @xref{Inferiors Connections and Programs}.
2201 @deffn {Scheme Procedure} progspaces
2202 Return a list of all the progspaces currently known to @value{GDBN}.
2205 @deffn {Scheme Procedure} progspace-filename progspace
2206 Return the absolute file name of @var{progspace} as a string.
2207 This is the name of the file passed as the argument to the @code{file}
2208 or @code{symbol-file} commands.
2209 If the program space does not have an associated file name,
2210 then @code{#f} is returned. This occurs, for example, when @value{GDBN}
2211 is started without a program to debug.
2213 A @code{gdb:invalid-object-error} exception is thrown if @var{progspace}
2217 @deffn {Scheme Procedure} progspace-objfiles progspace
2218 Return the list of objfiles of @var{progspace}.
2219 The order of objfiles in the result is arbitrary.
2220 Each element is an object of type @code{<gdb:objfile>}.
2221 @xref{Objfiles In Guile}.
2223 A @code{gdb:invalid-object-error} exception is thrown if @var{progspace}
2227 @deffn {Scheme Procedure} progspace-pretty-printers progspace
2228 Return the list of pretty-printers of @var{progspace}.
2229 Each element is an object of type @code{<gdb:pretty-printer>}.
2230 @xref{Guile Pretty Printing API}, for more information.
2233 @deffn {Scheme Procedure} set-progspace-pretty-printers! progspace printer-list
2234 Set the list of registered @code{<gdb:pretty-printer>} objects for
2235 @var{progspace} to @var{printer-list}.
2236 @xref{Guile Pretty Printing API}, for more information.
2239 @node Objfiles In Guile
2240 @subsubsection Objfiles In Guile
2242 @cindex objfiles in guile
2243 @tindex <gdb:objfile>
2244 @value{GDBN} loads symbols for an inferior from various
2245 symbol-containing files (@pxref{Files}). These include the primary
2246 executable file, any shared libraries used by the inferior, and any
2247 separate debug info files (@pxref{Separate Debug Files}).
2248 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
2250 Each objfile is represented as an object of type @code{<gdb:objfile>}.
2252 The following objfile-related procedures are provided by the
2253 @code{(gdb)} module:
2255 @deffn {Scheme Procedure} objfile? object
2256 Return @code{#t} if @var{object} is a @code{<gdb:objfile>} object.
2257 Otherwise return @code{#f}.
2260 @deffn {Scheme Procedure} objfile-valid? objfile
2261 Return @code{#t} if @var{objfile} is valid, @code{#f} if not.
2262 A @code{<gdb:objfile>} object can become invalid
2263 if the object file it refers to is not loaded in @value{GDBN} any
2264 longer. All other @code{<gdb:objfile>} procedures will throw an exception
2265 if it is invalid at the time the procedure is called.
2268 @deffn {Scheme Procedure} objfile-filename objfile
2269 Return the file name of @var{objfile} as a string,
2270 with symbolic links resolved.
2273 @deffn {Scheme Procedure} objfile-progspace objfile
2274 Return the @code{<gdb:progspace>} that this object file lives in.
2275 @xref{Progspaces In Guile}, for more on progspaces.
2278 @deffn {Scheme Procedure} objfile-pretty-printers objfile
2279 Return the list of registered @code{<gdb:pretty-printer>} objects for
2280 @var{objfile}. @xref{Guile Pretty Printing API}, for more information.
2283 @deffn {Scheme Procedure} set-objfile-pretty-printers! objfile printer-list
2284 Set the list of registered @code{<gdb:pretty-printer>} objects for
2285 @var{objfile} to @var{printer-list}. The
2286 @var{printer-list} must be a list of @code{<gdb:pretty-printer>} objects.
2287 @xref{Guile Pretty Printing API}, for more information.
2290 @deffn {Scheme Procedure} current-objfile
2291 When auto-loading a Guile script (@pxref{Guile Auto-loading}), @value{GDBN}
2292 sets the ``current objfile'' to the corresponding objfile. This
2293 function returns the current objfile. If there is no current objfile,
2294 this function returns @code{#f}.
2297 @deffn {Scheme Procedure} objfiles
2298 Return a list of all the objfiles in the current program space.
2301 @node Frames In Guile
2302 @subsubsection Accessing inferior stack frames from Guile.
2304 @cindex frames in guile
2305 When the debugged program stops, @value{GDBN} is able to analyze its call
2306 stack (@pxref{Frames,,Stack frames}). The @code{<gdb:frame>} class
2307 represents a frame in the stack. A @code{<gdb:frame>} object is only valid
2308 while its corresponding frame exists in the inferior's stack. If you try
2309 to use an invalid frame object, @value{GDBN} will throw a
2310 @code{gdb:invalid-object} exception (@pxref{Guile Exception Handling}).
2312 Two @code{<gdb:frame>} objects can be compared for equality with the
2313 @code{equal?} function, like:
2316 (@value{GDBP}) guile (equal? (newest-frame) (selected-frame))
2320 The following frame-related procedures are provided by the
2321 @code{(gdb)} module:
2323 @deffn {Scheme Procedure} frame? object
2324 Return @code{#t} if @var{object} is a @code{<gdb:frame>} object.
2325 Otherwise return @code{#f}.
2328 @deffn {Scheme Procedure} frame-valid? frame
2329 Returns @code{#t} if @var{frame} is valid, @code{#f} if not.
2330 A frame object can become invalid if the frame it refers to doesn't
2331 exist anymore in the inferior. All @code{<gdb:frame>} procedures will throw
2332 an exception if the frame is invalid at the time the procedure is called.
2335 @deffn {Scheme Procedure} frame-name frame
2336 Return the function name of @var{frame}, or @code{#f} if it can't be
2340 @deffn {Scheme Procedure} frame-arch frame
2341 Return the @code{<gdb:architecture>} object corresponding to @var{frame}'s
2342 architecture. @xref{Architectures In Guile}.
2345 @deffn {Scheme Procedure} frame-type frame
2346 Return the type of @var{frame}. The value can be one of:
2350 An ordinary stack frame.
2353 A fake stack frame that was created by @value{GDBN} when performing an
2354 inferior function call.
2357 A frame representing an inlined function. The function was inlined
2358 into a @code{NORMAL_FRAME} that is older than this one.
2360 @item TAILCALL_FRAME
2361 A frame representing a tail call. @xref{Tail Call Frames}.
2363 @item SIGTRAMP_FRAME
2364 A signal trampoline frame. This is the frame created by the OS when
2365 it calls into a signal handler.
2368 A fake stack frame representing a cross-architecture call.
2370 @item SENTINEL_FRAME
2371 This is like @code{NORMAL_FRAME}, but it is only used for the
2376 @deffn {Scheme Procedure} frame-unwind-stop-reason frame
2377 Return an integer representing the reason why it's not possible to find
2378 more frames toward the outermost frame. Use
2379 @code{unwind-stop-reason-string} to convert the value returned by this
2380 function to a string. The value can be one of:
2383 @item FRAME_UNWIND_NO_REASON
2384 No particular reason (older frames should be available).
2386 @item FRAME_UNWIND_NULL_ID
2387 The previous frame's analyzer returns an invalid result.
2389 @item FRAME_UNWIND_OUTERMOST
2390 This frame is the outermost.
2392 @item FRAME_UNWIND_UNAVAILABLE
2393 Cannot unwind further, because that would require knowing the
2394 values of registers or memory that have not been collected.
2396 @item FRAME_UNWIND_INNER_ID
2397 This frame ID looks like it ought to belong to a NEXT frame,
2398 but we got it for a PREV frame. Normally, this is a sign of
2399 unwinder failure. It could also indicate stack corruption.
2401 @item FRAME_UNWIND_SAME_ID
2402 This frame has the same ID as the previous one. That means
2403 that unwinding further would almost certainly give us another
2404 frame with exactly the same ID, so break the chain. Normally,
2405 this is a sign of unwinder failure. It could also indicate
2408 @item FRAME_UNWIND_NO_SAVED_PC
2409 The frame unwinder did not find any saved PC, but we needed
2410 one to unwind further.
2412 @item FRAME_UNWIND_MEMORY_ERROR
2413 The frame unwinder caused an error while trying to access memory.
2415 @item FRAME_UNWIND_FIRST_ERROR
2416 Any stop reason greater or equal to this value indicates some kind
2417 of error. This special value facilitates writing code that tests
2418 for errors in unwinding in a way that will work correctly even if
2419 the list of the other values is modified in future @value{GDBN}
2420 versions. Using it, you could write:
2423 (define reason (frame-unwind-stop-readon (selected-frame)))
2424 (define reason-str (unwind-stop-reason-string reason))
2425 (if (>= reason FRAME_UNWIND_FIRST_ERROR)
2426 (format #t "An error occured: ~s\n" reason-str))
2431 @deffn {Scheme Procedure} frame-pc frame
2432 Return the frame's resume address.
2435 @deffn {Scheme Procedure} frame-block frame
2436 Return the frame's code block as a @code{<gdb:block>} object.
2437 @xref{Blocks In Guile}.
2440 @deffn {Scheme Procedure} frame-function frame
2441 Return the symbol for the function corresponding to this frame
2442 as a @code{<gdb:symbol>} object, or @code{#f} if there isn't one.
2443 @xref{Symbols In Guile}.
2446 @deffn {Scheme Procedure} frame-older frame
2447 Return the frame that called @var{frame}.
2450 @deffn {Scheme Procedure} frame-newer frame
2451 Return the frame called by @var{frame}.
2454 @deffn {Scheme Procedure} frame-sal frame
2455 Return the frame's @code{<gdb:sal>} (symtab and line) object.
2456 @xref{Symbol Tables In Guile}.
2459 @deffn {Scheme Procedure} frame-read-register frame register
2460 Return the value of @var{register} in @var{frame}. @var{register}
2461 should be a string, like @samp{pc}.
2464 @deffn {Scheme Procedure} frame-read-var frame variable @r{[}#:block block@r{]}
2465 Return the value of @var{variable} in @var{frame}. If the optional
2466 argument @var{block} is provided, search for the variable from that
2467 block; otherwise start at the frame's current block (which is
2468 determined by the frame's current program counter). The
2469 @var{variable} must be given as a string or a @code{<gdb:symbol>}
2470 object, and @var{block} must be a @code{<gdb:block>} object.
2473 @deffn {Scheme Procedure} frame-select frame
2474 Set @var{frame} to be the selected frame. @xref{Stack, ,Examining the
2478 @deffn {Scheme Procedure} selected-frame
2479 Return the selected frame object. @xref{Selection,,Selecting a Frame}.
2482 @deffn {Scheme Procedure} newest-frame
2483 Return the newest frame object for the selected thread.
2486 @deffn {Scheme Procedure} unwind-stop-reason-string reason
2487 Return a string explaining the reason why @value{GDBN} stopped unwinding
2488 frames, as expressed by the given @var{reason} code (an integer, see the
2489 @code{frame-unwind-stop-reason} procedure above in this section).
2492 @node Blocks In Guile
2493 @subsubsection Accessing blocks from Guile.
2495 @cindex blocks in guile
2498 In @value{GDBN}, symbols are stored in blocks. A block corresponds
2499 roughly to a scope in the source code. Blocks are organized
2500 hierarchically, and are represented individually in Guile as an object
2501 of type @code{<gdb:block>}. Blocks rely on debugging information being
2504 A frame has a block. Please see @ref{Frames In Guile}, for a more
2505 in-depth discussion of frames.
2507 The outermost block is known as the @dfn{global block}. The global
2508 block typically holds public global variables and functions.
2510 The block nested just inside the global block is the @dfn{static
2511 block}. The static block typically holds file-scoped variables and
2514 @value{GDBN} provides a method to get a block's superblock, but there
2515 is currently no way to examine the sub-blocks of a block, or to
2516 iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
2519 Here is a short example that should help explain blocks:
2522 /* This is in the global block. */
2525 /* This is in the static block. */
2526 static int file_scope;
2528 /* 'function' is in the global block, and 'argument' is
2529 in a block nested inside of 'function'. */
2530 int function (int argument)
2532 /* 'local' is in a block inside 'function'. It may or may
2533 not be in the same block as 'argument'. */
2537 /* 'inner' is in a block whose superblock is the one holding
2541 /* If this call is expanded by the compiler, you may see
2542 a nested block here whose function is 'inline_function'
2543 and whose superblock is the one holding 'inner'. */
2549 The following block-related procedures are provided by the
2550 @code{(gdb)} module:
2552 @deffn {Scheme Procedure} block? object
2553 Return @code{#t} if @var{object} is a @code{<gdb:block>} object.
2554 Otherwise return @code{#f}.
2557 @deffn {Scheme Procedure} block-valid? block
2558 Returns @code{#t} if @code{<gdb:block>} @var{block} is valid,
2559 @code{#f} if not. A block object can become invalid if the block it
2560 refers to doesn't exist anymore in the inferior. All other
2561 @code{<gdb:block>} methods will throw an exception if it is invalid at
2562 the time the procedure is called. The block's validity is also checked
2563 during iteration over symbols of the block.
2566 @deffn {Scheme Procedure} block-start block
2567 Return the start address of @code{<gdb:block>} @var{block}.
2570 @deffn {Scheme Procedure} block-end block
2571 Return the end address of @code{<gdb:block>} @var{block}.
2574 @deffn {Scheme Procedure} block-function block
2575 Return the name of @code{<gdb:block>} @var{block} represented as a
2576 @code{<gdb:symbol>} object.
2577 If the block is not named, then @code{#f} is returned.
2579 For ordinary function blocks, the superblock is the static block.
2580 However, you should note that it is possible for a function block to
2581 have a superblock that is not the static block -- for instance this
2582 happens for an inlined function.
2585 @deffn {Scheme Procedure} block-superblock block
2586 Return the block containing @code{<gdb:block>} @var{block}.
2587 If the parent block does not exist, then @code{#f} is returned.
2590 @deffn {Scheme Procedure} block-global-block block
2591 Return the global block associated with @code{<gdb:block>} @var{block}.
2594 @deffn {Scheme Procedure} block-static-block block
2595 Return the static block associated with @code{<gdb:block>} @var{block}.
2598 @deffn {Scheme Procedure} block-global? block
2599 Return @code{#t} if @code{<gdb:block>} @var{block} is a global block.
2600 Otherwise return @code{#f}.
2603 @deffn {Scheme Procedure} block-static? block
2604 Return @code{#t} if @code{<gdb:block>} @var{block} is a static block.
2605 Otherwise return @code{#f}.
2608 @deffn {Scheme Procedure} block-symbols
2609 Return a list of all symbols (as <gdb:symbol> objects) in
2610 @code{<gdb:block>} @var{block}.
2613 @deffn {Scheme Procedure} make-block-symbols-iterator block
2614 Return an object of type @code{<gdb:iterator>} that will iterate
2615 over all symbols of the block.
2616 Guile programs should not assume that a specific block object will
2617 always contain a given symbol, since changes in @value{GDBN} features and
2618 infrastructure may cause symbols move across blocks in a symbol table.
2619 @xref{Iterators In Guile}.
2622 @deffn {Scheme Procedure} block-symbols-progress?
2623 Return #t if the object is a <gdb:block-symbols-progress> object.
2624 This object would be obtained from the @code{progress} element of the
2625 @code{<gdb:iterator>} object returned by @code{make-block-symbols-iterator}.
2628 @deffn {Scheme Procedure} lookup-block pc
2629 Return the innermost @code{<gdb:block>} containing the given @var{pc}
2630 value. If the block cannot be found for the @var{pc} value specified,
2631 the function will return @code{#f}.
2634 @node Symbols In Guile
2635 @subsubsection Guile representation of Symbols.
2637 @cindex symbols in guile
2638 @tindex <gdb:symbol>
2640 @value{GDBN} represents every variable, function and type as an
2641 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
2642 Guile represents these symbols in @value{GDBN} with the
2643 @code{<gdb:symbol>} object.
2645 The following symbol-related procedures are provided by the
2646 @code{(gdb)} module:
2648 @deffn {Scheme Procedure} symbol? object
2649 Return @code{#t} if @var{object} is an object of type @code{<gdb:symbol>}.
2650 Otherwise return @code{#f}.
2653 @deffn {Scheme Procedure} symbol-valid? symbol
2654 Return @code{#t} if the @code{<gdb:symbol>} object is valid,
2655 @code{#f} if not. A @code{<gdb:symbol>} object can become invalid if
2656 the symbol it refers to does not exist in @value{GDBN} any longer.
2657 All other @code{<gdb:symbol>} procedures will throw an exception if it is
2658 invalid at the time the procedure is called.
2661 @deffn {Scheme Procedure} symbol-type symbol
2662 Return the type of @var{symbol} or @code{#f} if no type is recorded.
2663 The result is an object of type @code{<gdb:type>}.
2664 @xref{Types In Guile}.
2667 @deffn {Scheme Procedure} symbol-symtab symbol
2668 Return the symbol table in which @var{symbol} appears.
2669 The result is an object of type @code{<gdb:symtab>}.
2670 @xref{Symbol Tables In Guile}.
2673 @deffn {Scheme Procedure} symbol-line symbol
2674 Return the line number in the source code at which @var{symbol} was defined.
2678 @deffn {Scheme Procedure} symbol-name symbol
2679 Return the name of @var{symbol} as a string.
2682 @deffn {Scheme Procedure} symbol-linkage-name symbol
2683 Return the name of @var{symbol}, as used by the linker (i.e., may be mangled).
2686 @deffn {Scheme Procedure} symbol-print-name symbol
2687 Return the name of @var{symbol} in a form suitable for output. This is either
2688 @code{name} or @code{linkage_name}, depending on whether the user
2689 asked @value{GDBN} to display demangled or mangled names.
2692 @deffn {Scheme Procedure} symbol-addr-class symbol
2693 Return the address class of the symbol. This classifies how to find the value
2694 of a symbol. Each address class is a constant defined in the
2695 @code{(gdb)} module and described later in this chapter.
2698 @deffn {Scheme Procedure} symbol-needs-frame? symbol
2699 Return @code{#t} if evaluating @var{symbol}'s value requires a frame
2700 (@pxref{Frames In Guile}) and @code{#f} otherwise. Typically,
2701 local variables will require a frame, but other symbols will not.
2704 @deffn {Scheme Procedure} symbol-argument? symbol
2705 Return @code{#t} if @var{symbol} is an argument of a function.
2706 Otherwise return @code{#f}.
2709 @deffn {Scheme Procedure} symbol-constant? symbol
2710 Return @code{#t} if @var{symbol} is a constant.
2711 Otherwise return @code{#f}.
2714 @deffn {Scheme Procedure} symbol-function? symbol
2715 Return @code{#t} if @var{symbol} is a function or a method.
2716 Otherwise return @code{#f}.
2719 @deffn {Scheme Procedure} symbol-variable? symbol
2720 Return @code{#t} if @var{symbol} is a variable.
2721 Otherwise return @code{#f}.
2724 @deffn {Scheme Procedure} symbol-value symbol @r{[}#:frame frame@r{]}
2725 Compute the value of @var{symbol}, as a @code{<gdb:value>}. For
2726 functions, this computes the address of the function, cast to the
2727 appropriate type. If the symbol requires a frame in order to compute
2728 its value, then @var{frame} must be given. If @var{frame} is not
2729 given, or if @var{frame} is invalid, then an exception is thrown.
2732 @c TODO: line length
2733 @deffn {Scheme Procedure} lookup-symbol name @r{[}#:block block@r{]} @r{[}#:domain domain@r{]}
2734 This function searches for a symbol by name. The search scope can be
2735 restricted to the parameters defined in the optional domain and block
2738 @var{name} is the name of the symbol. It must be a string. The
2739 optional @var{block} argument restricts the search to symbols visible
2740 in that @var{block}. The @var{block} argument must be a
2741 @code{<gdb:block>} object. If omitted, the block for the current frame
2742 is used. The optional @var{domain} argument restricts
2743 the search to the domain type. The @var{domain} argument must be a
2744 domain constant defined in the @code{(gdb)} module and described later
2747 The result is a list of two elements.
2748 The first element is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2750 If the symbol is found, the second element is @code{#t} if the symbol
2751 is a field of a method's object (e.g., @code{this} in C@t{++}),
2752 otherwise it is @code{#f}.
2753 If the symbol is not found, the second element is @code{#f}.
2756 @deffn {Scheme Procedure} lookup-global-symbol name @r{[}#:domain domain@r{]}
2757 This function searches for a global symbol by name.
2758 The search scope can be restricted by the domain argument.
2760 @var{name} is the name of the symbol. It must be a string.
2761 The optional @var{domain} argument restricts the search to the domain type.
2762 The @var{domain} argument must be a domain constant defined in the @code{(gdb)}
2763 module and described later in this chapter.
2765 The result is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2769 The available domain categories in @code{<gdb:symbol>} are represented
2770 as constants in the @code{(gdb)} module:
2773 @item SYMBOL_UNDEF_DOMAIN
2774 This is used when a domain has not been discovered or none of the
2775 following domains apply. This usually indicates an error either
2776 in the symbol information or in @value{GDBN}'s handling of symbols.
2778 @item SYMBOL_VAR_DOMAIN
2779 This domain contains variables, function names, typedef names and enum
2782 @item SYMBOL_STRUCT_DOMAIN
2783 This domain holds struct, union and enum type names.
2785 @item SYMBOL_LABEL_DOMAIN
2786 This domain contains names of labels (for gotos).
2788 @item SYMBOL_VARIABLES_DOMAIN
2789 This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
2790 contains everything minus functions and types.
2792 @item SYMBOL_FUNCTIONS_DOMAIN
2793 This domain contains all functions.
2795 @item SYMBOL_TYPES_DOMAIN
2796 This domain contains all types.
2799 The available address class categories in @code{<gdb:symbol>} are represented
2800 as constants in the @code{gdb} module:
2803 @item SYMBOL_LOC_UNDEF
2804 If this is returned by address class, it indicates an error either in
2805 the symbol information or in @value{GDBN}'s handling of symbols.
2807 @item SYMBOL_LOC_CONST
2808 Value is constant int.
2810 @item SYMBOL_LOC_STATIC
2811 Value is at a fixed address.
2813 @item SYMBOL_LOC_REGISTER
2814 Value is in a register.
2816 @item SYMBOL_LOC_ARG
2817 Value is an argument. This value is at the offset stored within the
2818 symbol inside the frame's argument list.
2820 @item SYMBOL_LOC_REF_ARG
2821 Value address is stored in the frame's argument list. Just like
2822 @code{LOC_ARG} except that the value's address is stored at the
2823 offset, not the value itself.
2825 @item SYMBOL_LOC_REGPARM_ADDR
2826 Value is a specified register. Just like @code{LOC_REGISTER} except
2827 the register holds the address of the argument instead of the argument
2830 @item SYMBOL_LOC_LOCAL
2831 Value is a local variable.
2833 @item SYMBOL_LOC_TYPEDEF
2834 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
2837 @item SYMBOL_LOC_BLOCK
2840 @item SYMBOL_LOC_CONST_BYTES
2841 Value is a byte-sequence.
2843 @item SYMBOL_LOC_UNRESOLVED
2844 Value is at a fixed address, but the address of the variable has to be
2845 determined from the minimal symbol table whenever the variable is
2848 @item SYMBOL_LOC_OPTIMIZED_OUT
2849 The value does not actually exist in the program.
2851 @item SYMBOL_LOC_COMPUTED
2852 The value's address is a computed location.
2855 @node Symbol Tables In Guile
2856 @subsubsection Symbol table representation in Guile.
2858 @cindex symbol tables in guile
2859 @tindex <gdb:symtab>
2862 Access to symbol table data maintained by @value{GDBN} on the inferior
2863 is exposed to Guile via two objects: @code{<gdb:sal>} (symtab-and-line) and
2864 @code{<gdb:symtab>}. Symbol table and line data for a frame is returned
2865 from the @code{frame-find-sal} @code{<gdb:frame>} procedure.
2866 @xref{Frames In Guile}.
2868 For more information on @value{GDBN}'s symbol table management, see
2869 @ref{Symbols, ,Examining the Symbol Table}.
2871 The following symtab-related procedures are provided by the
2872 @code{(gdb)} module:
2874 @deffn {Scheme Procedure} symtab? object
2875 Return @code{#t} if @var{object} is an object of type @code{<gdb:symtab>}.
2876 Otherwise return @code{#f}.
2879 @deffn {Scheme Procedure} symtab-valid? symtab
2880 Return @code{#t} if the @code{<gdb:symtab>} object is valid,
2881 @code{#f} if not. A @code{<gdb:symtab>} object becomes invalid when
2882 the symbol table it refers to no longer exists in @value{GDBN}.
2883 All other @code{<gdb:symtab>} procedures will throw an exception
2884 if it is invalid at the time the procedure is called.
2887 @deffn {Scheme Procedure} symtab-filename symtab
2888 Return the symbol table's source filename.
2891 @deffn {Scheme Procedure} symtab-fullname symtab
2892 Return the symbol table's source absolute file name.
2895 @deffn {Scheme Procedure} symtab-objfile symtab
2896 Return the symbol table's backing object file. @xref{Objfiles In Guile}.
2899 @deffn {Scheme Procedure} symtab-global-block symtab
2900 Return the global block of the underlying symbol table.
2901 @xref{Blocks In Guile}.
2904 @deffn {Scheme Procedure} symtab-static-block symtab
2905 Return the static block of the underlying symbol table.
2906 @xref{Blocks In Guile}.
2909 The following symtab-and-line-related procedures are provided by the
2910 @code{(gdb)} module:
2912 @deffn {Scheme Procedure} sal? object
2913 Return @code{#t} if @var{object} is an object of type @code{<gdb:sal>}.
2914 Otherwise return @code{#f}.
2917 @deffn {Scheme Procedure} sal-valid? sal
2918 Return @code{#t} if @var{sal} is valid, @code{#f} if not.
2919 A @code{<gdb:sal>} object becomes invalid when the Symbol table object
2920 it refers to no longer exists in @value{GDBN}. All other
2921 @code{<gdb:sal>} procedures will throw an exception if it is
2922 invalid at the time the procedure is called.
2925 @deffn {Scheme Procedure} sal-symtab sal
2926 Return the symbol table object (@code{<gdb:symtab>}) for @var{sal}.
2929 @deffn {Scheme Procedure} sal-line sal
2930 Return the line number for @var{sal}.
2933 @deffn {Scheme Procedure} sal-pc sal
2934 Return the start of the address range occupied by code for @var{sal}.
2937 @deffn {Scheme Procedure} sal-last sal
2938 Return the end of the address range occupied by code for @var{sal}.
2941 @deffn {Scheme Procedure} find-pc-line pc
2942 Return the @code{<gdb:sal>} object corresponding to the @var{pc} value.
2943 If an invalid value of @var{pc} is passed as an argument, then the
2944 @code{symtab} and @code{line} attributes of the returned @code{<gdb:sal>}
2945 object will be @code{#f} and 0 respectively.
2948 @node Breakpoints In Guile
2949 @subsubsection Manipulating breakpoints using Guile
2951 @cindex breakpoints in guile
2952 @tindex <gdb:breakpoint>
2954 Breakpoints in Guile are represented by objects of type
2955 @code{<gdb:breakpoint>}. New breakpoints can be created with the
2956 @code{make-breakpoint} Guile function, and then added to @value{GDBN} with the
2957 @code{register-breakpoint!} Guile function.
2958 This two-step approach is taken to separate out the side-effect of adding
2959 the breakpoint to @value{GDBN} from @code{make-breakpoint}.
2961 Support is also provided to view and manipulate breakpoints created
2964 The following breakpoint-related procedures are provided by the
2965 @code{(gdb)} module:
2967 @c TODO: line length
2968 @deffn {Scheme Procedure} make-breakpoint location @r{[}#:type type@r{]} @r{[}#:wp-class wp-class@r{]} @r{[}#:internal internal@r{]}
2969 Create a new breakpoint at @var{location}, a string naming the
2970 location of the breakpoint, or an expression that defines a watchpoint.
2971 The contents can be any location recognized by the @code{break} command,
2972 or in the case of a watchpoint, by the @code{watch} command.
2974 The breakpoint is initially marked as @samp{invalid}.
2975 The breakpoint is not usable until it has been registered with @value{GDBN}
2976 with @code{register-breakpoint!}, at which point it becomes @samp{valid}.
2977 The result is the @code{<gdb:breakpoint>} object representing the breakpoint.
2979 The optional @var{type} denotes the breakpoint to create.
2980 This argument can be either @code{BP_BREAKPOINT} or @code{BP_WATCHPOINT},
2981 and defaults to @code{BP_BREAKPOINT}.
2983 The optional @var{wp-class} argument defines the class of watchpoint to
2984 create, if @var{type} is @code{BP_WATCHPOINT}. If a watchpoint class is
2985 not provided, it is assumed to be a @code{WP_WRITE} class.
2987 The optional @var{internal} argument allows the breakpoint to become
2988 invisible to the user. The breakpoint will neither be reported when
2989 registered, nor will it be listed in the output from @code{info breakpoints}
2990 (but will be listed with the @code{maint info breakpoints} command).
2991 If an internal flag is not provided, the breakpoint is visible
2994 When a watchpoint is created, @value{GDBN} will try to create a
2995 hardware assisted watchpoint. If successful, the type of the watchpoint
2996 is changed from @code{BP_WATCHPOINT} to @code{BP_HARDWARE_WATCHPOINT}
2997 for @code{WP_WRITE}, @code{BP_READ_WATCHPOINT} for @code{WP_READ},
2998 and @code{BP_ACCESS_WATCHPOINT} for @code{WP_ACCESS}.
2999 If not successful, the type of the watchpoint is left as @code{WP_WATCHPOINT}.
3001 The available types are represented by constants defined in the @code{gdb}
3006 Normal code breakpoint.
3009 Watchpoint breakpoint.
3011 @item BP_HARDWARE_WATCHPOINT
3012 Hardware assisted watchpoint.
3013 This value cannot be specified when creating the breakpoint.
3015 @item BP_READ_WATCHPOINT
3016 Hardware assisted read watchpoint.
3017 This value cannot be specified when creating the breakpoint.
3019 @item BP_ACCESS_WATCHPOINT
3020 Hardware assisted access watchpoint.
3021 This value cannot be specified when creating the breakpoint.
3025 This value cannot be specified when creating the breakpoint.
3028 The available watchpoint types are represented by constants defined in the
3029 @code{(gdb)} module:
3033 Read only watchpoint.
3036 Write only watchpoint.
3039 Read/Write watchpoint.
3044 @deffn {Scheme Procedure} register-breakpoint! breakpoint
3045 Add @var{breakpoint}, a @code{<gdb:breakpoint>} object, to @value{GDBN}'s
3046 list of breakpoints. The breakpoint must have been created with
3047 @code{make-breakpoint}. One cannot register breakpoints that have been
3048 created outside of Guile. Once a breakpoint is registered it becomes
3050 It is an error to register an already registered breakpoint.
3051 The result is unspecified.
3054 @deffn {Scheme Procedure} delete-breakpoint! breakpoint
3055 Remove @var{breakpoint} from @value{GDBN}'s list of breakpoints.
3056 This also invalidates the Guile @var{breakpoint} object.
3057 Any further attempt to access the object will throw an exception.
3059 If @var{breakpoint} was created from Guile with @code{make-breakpoint}
3060 it may be re-registered with @value{GDBN}, in which case the breakpoint
3061 becomes valid again.
3064 @deffn {Scheme Procedure} breakpoints
3065 Return a list of all breakpoints.
3066 Each element of the list is a @code{<gdb:breakpoint>} object.
3069 @deffn {Scheme Procedure} breakpoint? object
3070 Return @code{#t} if @var{object} is a @code{<gdb:breakpoint>} object,
3071 and @code{#f} otherwise.
3074 @deffn {Scheme Procedure} breakpoint-valid? breakpoint
3075 Return @code{#t} if @var{breakpoint} is valid, @code{#f} otherwise.
3076 Breakpoints created with @code{make-breakpoint} are marked as invalid
3077 until they are registered with @value{GDBN} with @code{register-breakpoint!}.
3078 A @code{<gdb:breakpoint>} object can become invalid
3079 if the user deletes the breakpoint. In this case, the object still
3080 exists, but the underlying breakpoint does not. In the cases of
3081 watchpoint scope, the watchpoint remains valid even if execution of the
3082 inferior leaves the scope of that watchpoint.
3085 @deffn {Scheme Procedure} breakpoint-number breakpoint
3086 Return the breakpoint's number --- the identifier used by
3087 the user to manipulate the breakpoint.
3090 @deffn {Scheme Procedure} breakpoint-type breakpoint
3091 Return the breakpoint's type --- the identifier used to
3092 determine the actual breakpoint type or use-case.
3095 @deffn {Scheme Procedure} breakpoint-visible? breakpoint
3096 Return @code{#t} if the breakpoint is visible to the user
3097 when hit, or when the @samp{info breakpoints} command is run.
3098 Otherwise return @code{#f}.
3101 @deffn {Scheme Procedure} breakpoint-location breakpoint
3102 Return the location of the breakpoint, as specified by
3103 the user. It is a string. If the breakpoint does not have a location
3104 (that is, it is a watchpoint) return @code{#f}.
3107 @deffn {Scheme Procedure} breakpoint-expression breakpoint
3108 Return the breakpoint expression, as specified by the user. It is a string.
3109 If the breakpoint does not have an expression (the breakpoint is not a
3110 watchpoint) return @code{#f}.
3113 @deffn {Scheme Procedure} breakpoint-enabled? breakpoint
3114 Return @code{#t} if the breakpoint is enabled, and @code{#f} otherwise.
3117 @deffn {Scheme Procedure} set-breakpoint-enabled! breakpoint flag
3118 Set the enabled state of @var{breakpoint} to @var{flag}.
3119 If flag is @code{#f} it is disabled, otherwise it is enabled.
3122 @deffn {Scheme Procedure} breakpoint-silent? breakpoint
3123 Return @code{#t} if the breakpoint is silent, and @code{#f} otherwise.
3125 Note that a breakpoint can also be silent if it has commands and the
3126 first command is @code{silent}. This is not reported by the
3127 @code{silent} attribute.
3130 @deffn {Scheme Procedure} set-breakpoint-silent! breakpoint flag
3131 Set the silent state of @var{breakpoint} to @var{flag}.
3132 If flag is @code{#f} the breakpoint is made silent,
3133 otherwise it is made non-silent (or noisy).
3136 @deffn {Scheme Procedure} breakpoint-ignore-count breakpoint
3137 Return the ignore count for @var{breakpoint}.
3140 @deffn {Scheme Procedure} set-breakpoint-ignore-count! breakpoint count
3141 Set the ignore count for @var{breakpoint} to @var{count}.
3144 @deffn {Scheme Procedure} breakpoint-hit-count breakpoint
3145 Return hit count of @var{breakpoint}.
3148 @deffn {Scheme Procedure} set-breakpoint-hit-count! breakpoint count
3149 Set the hit count of @var{breakpoint} to @var{count}.
3150 At present, @var{count} must be zero.
3153 @deffn {Scheme Procedure} breakpoint-thread breakpoint
3154 Return the global-thread-id for thread-specific breakpoint
3155 @var{breakpoint}. Return #f if @var{breakpoint} is not
3159 @deffn {Scheme Procedure} set-breakpoint-thread! breakpoint global-thread-id|#f
3160 Set the thread-id for @var{breakpoint} to @var{global-thread-id} If
3161 set to @code{#f}, the breakpoint is no longer thread-specific.
3164 @deffn {Scheme Procedure} breakpoint-task breakpoint
3165 If the breakpoint is Ada task-specific, return the Ada task id.
3166 If the breakpoint is not task-specific (or the underlying
3167 language is not Ada), return @code{#f}.
3170 @deffn {Scheme Procedure} set-breakpoint-task! breakpoint task
3171 Set the Ada task of @var{breakpoint} to @var{task}.
3172 If set to @code{#f}, the breakpoint is no longer task-specific.
3175 @deffn {Scheme Procedure} breakpoint-condition breakpoint
3176 Return the condition of @var{breakpoint}, as specified by the user.
3177 It is a string. If there is no condition, return @code{#f}.
3180 @deffn {Scheme Procedure} set-breakpoint-condition! breakpoint condition
3181 Set the condition of @var{breakpoint} to @var{condition},
3182 which must be a string. If set to @code{#f} then the breakpoint
3183 becomes unconditional.
3186 @deffn {Scheme Procedure} breakpoint-stop breakpoint
3187 Return the stop predicate of @var{breakpoint}.
3188 See @code{set-breakpoint-stop!} below in this section.
3191 @deffn {Scheme Procedure} set-breakpoint-stop! breakpoint procedure|#f
3192 Set the stop predicate of @var{breakpoint}. The predicate
3193 @var{procedure} takes one argument: the <gdb:breakpoint> object.
3194 If this predicate is set to a procedure then it is invoked whenever
3195 the inferior reaches this breakpoint. If it returns @code{#t},
3196 or any non-@code{#f} value, then the inferior is stopped,
3197 otherwise the inferior will continue.
3199 If there are multiple breakpoints at the same location with a
3200 @code{stop} predicate, each one will be called regardless of the
3201 return status of the previous. This ensures that all @code{stop}
3202 predicates have a chance to execute at that location. In this scenario
3203 if one of the methods returns @code{#t} but the others return
3204 @code{#f}, the inferior will still be stopped.
3206 You should not alter the execution state of the inferior (i.e.@:, step,
3207 next, etc.), alter the current frame context (i.e.@:, change the current
3208 active frame), or alter, add or delete any breakpoint. As a general
3209 rule, you should not alter any data within @value{GDBN} or the inferior
3212 Example @code{stop} implementation:
3215 (define (my-stop? bkpt)
3216 (let ((int-val (parse-and-eval "foo")))
3217 (value=? int-val 3)))
3218 (define bkpt (make-breakpoint "main.c:42"))
3219 (register-breakpoint! bkpt)
3220 (set-breakpoint-stop! bkpt my-stop?)
3224 @deffn {Scheme Procedure} breakpoint-commands breakpoint
3225 Return the commands attached to @var{breakpoint} as a string,
3226 or @code{#f} if there are none.
3229 @node Lazy Strings In Guile
3230 @subsubsection Guile representation of lazy strings.
3232 @cindex lazy strings in guile
3233 @tindex <gdb:lazy-string>
3235 A @dfn{lazy string} is a string whose contents is not retrieved or
3236 encoded until it is needed.
3238 A @code{<gdb:lazy-string>} is represented in @value{GDBN} as an
3239 @code{address} that points to a region of memory, an @code{encoding}
3240 that will be used to encode that region of memory, and a @code{length}
3241 to delimit the region of memory that represents the string. The
3242 difference between a @code{<gdb:lazy-string>} and a string wrapped within
3243 a @code{<gdb:value>} is that a @code{<gdb:lazy-string>} will be treated
3244 differently by @value{GDBN} when printing. A @code{<gdb:lazy-string>} is
3245 retrieved and encoded during printing, while a @code{<gdb:value>}
3246 wrapping a string is immediately retrieved and encoded on creation.
3248 The following lazy-string-related procedures are provided by the
3249 @code{(gdb)} module:
3251 @deffn {Scheme Procedure} lazy-string? object
3252 Return @code{#t} if @var{object} is an object of type @code{<gdb:lazy-string>}.
3253 Otherwise return @code{#f}.
3256 @deffn {Scheme Procedure} lazy-string-address lazy-sring
3257 Return the address of @var{lazy-string}.
3260 @deffn {Scheme Procedure} lazy-string-length lazy-string
3261 Return the length of @var{lazy-string} in characters. If the
3262 length is -1, then the string will be fetched and encoded up to the
3263 first null of appropriate width.
3266 @deffn {Scheme Procedure} lazy-string-encoding lazy-string
3267 Return the encoding that will be applied to @var{lazy-string}
3268 when the string is printed by @value{GDBN}. If the encoding is not
3269 set, or contains an empty string, then @value{GDBN} will select the
3270 most appropriate encoding when the string is printed.
3273 @deffn {Scheme Procedure} lazy-string-type lazy-string
3274 Return the type that is represented by @var{lazy-string}'s type.
3275 For a lazy string this is a pointer or array type. To
3276 resolve this to the lazy string's character type, use @code{type-target-type}.
3277 @xref{Types In Guile}.
3280 @deffn {Scheme Procedure} lazy-string->value lazy-string
3281 Convert the @code{<gdb:lazy-string>} to a @code{<gdb:value>}. This value
3282 will point to the string in memory, but will lose all the delayed
3283 retrieval, encoding and handling that @value{GDBN} applies to a
3284 @code{<gdb:lazy-string>}.
3287 @node Architectures In Guile
3288 @subsubsection Guile representation of architectures
3290 @cindex guile architectures
3293 @value{GDBN} uses architecture specific parameters and artifacts in a
3294 number of its various computations. An architecture is represented
3295 by an instance of the @code{<gdb:arch>} class.
3297 The following architecture-related procedures are provided by the
3298 @code{(gdb)} module:
3300 @deffn {Scheme Procedure} arch? object
3301 Return @code{#t} if @var{object} is an object of type @code{<gdb:arch>}.
3302 Otherwise return @code{#f}.
3305 @deffn {Scheme Procedure} current-arch
3306 Return the current architecture as a @code{<gdb:arch>} object.
3309 @deffn {Scheme Procedure} arch-name arch
3310 Return the name (string value) of @code{<gdb:arch>} @var{arch}.
3313 @deffn {Scheme Procedure} arch-charset arch
3314 Return name of target character set of @code{<gdb:arch>} @var{arch}.
3317 @deffn {Scheme Procedure} arch-wide-charset
3318 Return name of target wide character set of @code{<gdb:arch>} @var{arch}.
3321 Each architecture provides a set of predefined types, obtained by
3322 the following functions.
3324 @deffn {Scheme Procedure} arch-void-type arch
3325 Return the @code{<gdb:type>} object for a @code{void} type
3326 of architecture @var{arch}.
3329 @deffn {Scheme Procedure} arch-char-type arch
3330 Return the @code{<gdb:type>} object for a @code{char} type
3331 of architecture @var{arch}.
3334 @deffn {Scheme Procedure} arch-short-type arch
3335 Return the @code{<gdb:type>} object for a @code{short} type
3336 of architecture @var{arch}.
3339 @deffn {Scheme Procedure} arch-int-type arch
3340 Return the @code{<gdb:type>} object for an @code{int} type
3341 of architecture @var{arch}.
3344 @deffn {Scheme Procedure} arch-long-type arch
3345 Return the @code{<gdb:type>} object for a @code{long} type
3346 of architecture @var{arch}.
3349 @deffn {Scheme Procedure} arch-schar-type arch
3350 Return the @code{<gdb:type>} object for a @code{signed char} type
3351 of architecture @var{arch}.
3354 @deffn {Scheme Procedure} arch-uchar-type arch
3355 Return the @code{<gdb:type>} object for an @code{unsigned char} type
3356 of architecture @var{arch}.
3359 @deffn {Scheme Procedure} arch-ushort-type arch
3360 Return the @code{<gdb:type>} object for an @code{unsigned short} type
3361 of architecture @var{arch}.
3364 @deffn {Scheme Procedure} arch-uint-type arch
3365 Return the @code{<gdb:type>} object for an @code{unsigned int} type
3366 of architecture @var{arch}.
3369 @deffn {Scheme Procedure} arch-ulong-type arch
3370 Return the @code{<gdb:type>} object for an @code{unsigned long} type
3371 of architecture @var{arch}.
3374 @deffn {Scheme Procedure} arch-float-type arch
3375 Return the @code{<gdb:type>} object for a @code{float} type
3376 of architecture @var{arch}.
3379 @deffn {Scheme Procedure} arch-double-type arch
3380 Return the @code{<gdb:type>} object for a @code{double} type
3381 of architecture @var{arch}.
3384 @deffn {Scheme Procedure} arch-longdouble-type arch
3385 Return the @code{<gdb:type>} object for a @code{long double} type
3386 of architecture @var{arch}.
3389 @deffn {Scheme Procedure} arch-bool-type arch
3390 Return the @code{<gdb:type>} object for a @code{bool} type
3391 of architecture @var{arch}.
3394 @deffn {Scheme Procedure} arch-longlong-type arch
3395 Return the @code{<gdb:type>} object for a @code{long long} type
3396 of architecture @var{arch}.
3399 @deffn {Scheme Procedure} arch-ulonglong-type arch
3400 Return the @code{<gdb:type>} object for an @code{unsigned long long} type
3401 of architecture @var{arch}.
3404 @deffn {Scheme Procedure} arch-int8-type arch
3405 Return the @code{<gdb:type>} object for an @code{int8} type
3406 of architecture @var{arch}.
3409 @deffn {Scheme Procedure} arch-uint8-type arch
3410 Return the @code{<gdb:type>} object for a @code{uint8} type
3411 of architecture @var{arch}.
3414 @deffn {Scheme Procedure} arch-int16-type arch
3415 Return the @code{<gdb:type>} object for an @code{int16} type
3416 of architecture @var{arch}.
3419 @deffn {Scheme Procedure} arch-uint16-type arch
3420 Return the @code{<gdb:type>} object for a @code{uint16} type
3421 of architecture @var{arch}.
3424 @deffn {Scheme Procedure} arch-int32-type arch
3425 Return the @code{<gdb:type>} object for an @code{int32} type
3426 of architecture @var{arch}.
3429 @deffn {Scheme Procedure} arch-uint32-type arch
3430 Return the @code{<gdb:type>} object for a @code{uint32} type
3431 of architecture @var{arch}.
3434 @deffn {Scheme Procedure} arch-int64-type arch
3435 Return the @code{<gdb:type>} object for an @code{int64} type
3436 of architecture @var{arch}.
3439 @deffn {Scheme Procedure} arch-uint64-type arch
3440 Return the @code{<gdb:type>} object for a @code{uint64} type
3441 of architecture @var{arch}.
3447 (gdb) guile (type-name (arch-uchar-type (current-arch)))
3451 @node Disassembly In Guile
3452 @subsubsection Disassembly In Guile
3454 The disassembler can be invoked from Scheme code.
3455 Furthermore, the disassembler can take a Guile port as input,
3456 allowing one to disassemble from any source, and not just target memory.
3458 @c TODO: line length
3459 @deffn {Scheme Procedure} arch-disassemble arch start-pc @r{[}#:port port@r{]} @r{[}#:offset offset@r{]} @r{[}#:size size@r{]} @r{[}#:count count@r{]}
3460 Return a list of disassembled instructions starting from the memory
3461 address @var{start-pc}.
3463 The optional argument @var{port} specifies the input port to read bytes from.
3464 If @var{port} is @code{#f} then bytes are read from target memory.
3466 The optional argument @var{offset} specifies the address offset of the
3467 first byte in @var{port}. This is useful, for example, when @var{port}
3468 specifies a @samp{bytevector} and you want the bytevector to be disassembled
3469 as if it came from that address. The @var{start-pc} passed to the reader
3470 for @var{port} is offset by the same amount.
3474 (gdb) guile (use-modules (rnrs io ports))
3475 (gdb) guile (define pc (value->integer (parse-and-eval "$pc")))
3476 (gdb) guile (define mem (open-memory #:start pc))
3477 (gdb) guile (define bv (get-bytevector-n mem 10))
3478 (gdb) guile (define bv-port (open-bytevector-input-port bv))
3479 (gdb) guile (define arch (current-arch))
3480 (gdb) guile (arch-disassemble arch pc #:port bv-port #:offset pc)
3481 (((address . 4195516) (asm . "mov $0x4005c8,%edi") (length . 5)))
3484 The optional arguments @var{size} and
3485 @var{count} determine the number of instructions in the returned list.
3486 If either @var{size} or @var{count} is specified as zero, then
3487 no instructions are disassembled and an empty list is returned.
3488 If both the optional arguments @var{size} and @var{count} are
3489 specified, then a list of at most @var{count} disassembled instructions
3490 whose start address falls in the closed memory address interval from
3491 @var{start-pc} to (@var{start-pc} + @var{size} - 1) are returned.
3492 If @var{size} is not specified, but @var{count} is specified,
3493 then @var{count} number of instructions starting from the address
3494 @var{start-pc} are returned. If @var{count} is not specified but
3495 @var{size} is specified, then all instructions whose start address
3496 falls in the closed memory address interval from @var{start-pc} to
3497 (@var{start-pc} + @var{size} - 1) are returned.
3498 If neither @var{size} nor @var{count} are specified, then a single
3499 instruction at @var{start-pc} is returned.
3501 Each element of the returned list is an alist (associative list)
3502 with the following keys:
3507 The value corresponding to this key is a Guile integer of
3508 the memory address of the instruction.
3511 The value corresponding to this key is a string value which represents
3512 the instruction with assembly language mnemonics. The assembly
3513 language flavor used is the same as that specified by the current CLI
3514 variable @code{disassembly-flavor}. @xref{Machine Code}.
3517 The value corresponding to this key is the length of the instruction in bytes.
3522 @node I/O Ports in Guile
3523 @subsubsection I/O Ports in Guile
3525 @deffn {Scheme Procedure} input-port
3526 Return @value{GDBN}'s input port as a Guile port object.
3529 @deffn {Scheme Procedure} output-port
3530 Return @value{GDBN}'s output port as a Guile port object.
3533 @deffn {Scheme Procedure} error-port
3534 Return @value{GDBN}'s error port as a Guile port object.
3537 @deffn {Scheme Procedure} stdio-port? object
3538 Return @code{#t} if @var{object} is a @value{GDBN} stdio port.
3539 Otherwise return @code{#f}.
3542 @node Memory Ports in Guile
3543 @subsubsection Memory Ports in Guile
3545 @value{GDBN} provides a @code{port} interface to target memory.
3546 This allows Guile code to read/write target memory using Guile's port and
3547 bytevector functionality. The main routine is @code{open-memory} which
3548 returns a port object. One can then read/write memory using that object.
3550 @deffn {Scheme Procedure} open-memory @r{[}#:mode mode{]} @r{[}#:start address{]} @r{[}#:size size{]}
3551 Return a port object that can be used for reading and writing memory.
3552 The port will be open according to @var{mode}, which is the standard
3553 mode argument to Guile port open routines, except that the @samp{"a"}
3554 and @samp{"l"} modes are not supported.
3555 @xref{File Ports,,, guile, GNU Guile Reference Manual}.
3556 The @samp{"b"} (binary) character may be present, but is ignored:
3557 memory ports are binary only. If @samp{"0"} is appended then
3558 the port is marked as unbuffered.
3559 The default is @samp{"r"}, read-only and buffered.
3561 The chunk of memory that can be accessed can be bounded.
3562 If both @var{start} and @var{size} are unspecified, all of memory can be
3563 accessed. If only @var{start} is specified, all of memory from that point
3564 on can be accessed. If only @var{size} if specified, all memory in the
3565 range [0,@var{size}) can be accessed. If both are specified, all memory
3566 in the rane [@var{start},@var{start}+@var{size}) can be accessed.
3569 @deffn {Scheme Procedure} memory-port?
3570 Return @code{#t} if @var{object} is an object of type @code{<gdb:memory-port>}.
3571 Otherwise return @code{#f}.
3574 @deffn {Scheme Procedure} memory-port-range memory-port
3575 Return the range of @code{<gdb:memory-port>} @var{memory-port} as a list
3576 of two elements: @code{(start end)}. The range is @var{start} to @var{end}
3580 @deffn {Scheme Procedure} memory-port-read-buffer-size memory-port
3581 Return the size of the read buffer of @code{<gdb:memory-port>}
3584 This procedure is deprecated and will be removed in @value{GDBN} 11.
3585 It returns 0 when using Guile 2.2 or later.
3588 @deffn {Scheme Procedure} set-memory-port-read-buffer-size! memory-port size
3589 Set the size of the read buffer of @code{<gdb:memory-port>}
3590 @var{memory-port} to @var{size}. The result is unspecified.
3592 This procedure is deprecated and will be removed in @value{GDBN} 11.
3593 When @value{GDBN} is built with Guile 2.2 or later, you can call
3594 @code{setvbuf} instead (@pxref{Buffering, @code{setvbuf},, guile, GNU
3595 Guile Reference Manual}).
3598 @deffn {Scheme Procedure} memory-port-write-buffer-size memory-port
3599 Return the size of the write buffer of @code{<gdb:memory-port>}
3602 This procedure is deprecated and will be removed in @value{GDBN} 11.
3603 It returns 0 when @value{GDBN} is built with Guile 2.2 or later.
3606 @deffn {Scheme Procedure} set-memory-port-write-buffer-size! memory-port size
3607 Set the size of the write buffer of @code{<gdb:memory-port>}
3608 @var{memory-port} to @var{size}. The result is unspecified.
3610 This procedure is deprecated and will be removed in @value{GDBN} 11.
3611 When @value{GDBN} is built with Guile 2.2 or later, you can call
3612 @code{setvbuf} instead.
3615 A memory port is closed like any other port, with @code{close-port}.
3617 Combined with Guile's @code{bytevectors}, memory ports provide a lot
3618 of utility. For example, to fill a buffer of 10 integers in memory,
3619 one can do something like the following.
3622 ;; In the program: int buffer[10];
3623 (use-modules (rnrs bytevectors))
3624 (use-modules (rnrs io ports))
3625 (define addr (parse-and-eval "buffer"))
3627 (define byte-size (* n 4))
3628 (define mem-port (open-memory #:mode "r+" #:start
3629 (value->integer addr) #:size byte-size))
3630 (define byte-vec (make-bytevector byte-size))
3633 (bytevector-s32-native-set! byte-vec (* i 4) (* i 42)))
3634 (put-bytevector mem-port byte-vec)
3635 (close-port mem-port)
3638 @node Iterators In Guile
3639 @subsubsection Iterators In Guile
3641 @cindex guile iterators
3642 @tindex <gdb:iterator>
3644 A simple iterator facility is provided to allow, for example,
3645 iterating over the set of program symbols without having to first
3646 construct a list of all of them. A useful contribution would be
3647 to add support for SRFI 41 and SRFI 45.
3649 @deffn {Scheme Procedure} make-iterator object progress next!
3650 A @code{<gdb:iterator>} object is constructed with the @code{make-iterator}
3651 procedure. It takes three arguments: the object to be iterated over,
3652 an object to record the progress of the iteration, and a procedure to
3653 return the next element in the iteration, or an implementation chosen value
3654 to denote the end of iteration.
3656 By convention, end of iteration is marked with @code{(end-of-iteration)},
3657 and may be tested with the @code{end-of-iteration?} predicate.
3658 The result of @code{(end-of-iteration)} is chosen so that it is not
3659 otherwise used by the @code{(gdb)} module. If you are using
3660 @code{<gdb:iterator>} in your own code it is your responsibility to
3661 maintain this invariant.
3663 A trivial example for illustration's sake:
3666 (use-modules (gdb iterator))
3667 (define my-list (list 1 2 3))
3669 (make-iterator my-list my-list
3671 (let ((l (iterator-progress iter)))
3675 (set-iterator-progress! iter (cdr l))
3679 Here is a slightly more realistic example, which computes a list of all the
3680 functions in @code{my-global-block}.
3683 (use-modules (gdb iterator))
3684 (define this-sal (find-pc-line (frame-pc (selected-frame))))
3685 (define this-symtab (sal-symtab this-sal))
3686 (define this-global-block (symtab-global-block this-symtab))
3687 (define syms-iter (make-block-symbols-iterator this-global-block))
3688 (define functions (iterator-filter symbol-function? syms-iter))
3692 @deffn {Scheme Procedure} iterator? object
3693 Return @code{#t} if @var{object} is a @code{<gdb:iterator>} object.
3694 Otherwise return @code{#f}.
3697 @deffn {Scheme Procedure} iterator-object iterator
3698 Return the first argument that was passed to @code{make-iterator}.
3699 This is the object being iterated over.
3702 @deffn {Scheme Procedure} iterator-progress iterator
3703 Return the object tracking iteration progress.
3706 @deffn {Scheme Procedure} set-iterator-progress! iterator new-value
3707 Set the object tracking iteration progress.
3710 @deffn {Scheme Procedure} iterator-next! iterator
3711 Invoke the procedure that was the third argument to @code{make-iterator},
3712 passing it one argument, the @code{<gdb:iterator>} object.
3713 The result is either the next element in the iteration, or an end
3714 marker as implemented by the @code{next!} procedure.
3715 By convention the end marker is the result of @code{(end-of-iteration)}.
3718 @deffn {Scheme Procedure} end-of-iteration
3719 Return the Scheme object that denotes end of iteration.
3722 @deffn {Scheme Procedure} end-of-iteration? object
3723 Return @code{#t} if @var{object} is the end of iteration marker.
3724 Otherwise return @code{#f}.
3727 These functions are provided by the @code{(gdb iterator)} module to
3728 assist in using iterators.
3730 @deffn {Scheme Procedure} make-list-iterator list
3731 Return a @code{<gdb:iterator>} object that will iterate over @var{list}.
3734 @deffn {Scheme Procedure} iterator->list iterator
3735 Return the elements pointed to by @var{iterator} as a list.
3738 @deffn {Scheme Procedure} iterator-map proc iterator
3739 Return the list of objects obtained by applying @var{proc} to the object
3740 pointed to by @var{iterator} and to each subsequent object.
3743 @deffn {Scheme Procedure} iterator-for-each proc iterator
3744 Apply @var{proc} to each element pointed to by @var{iterator}.
3745 The result is unspecified.
3748 @deffn {Scheme Procedure} iterator-filter pred iterator
3749 Return the list of elements pointed to by @var{iterator} that satisfy
3753 @deffn {Scheme Procedure} iterator-until pred iterator
3754 Run @var{iterator} until the result of @code{(pred element)} is true
3755 and return that as the result. Otherwise return @code{#f}.
3758 @node Guile Auto-loading
3759 @subsection Guile Auto-loading
3760 @cindex guile auto-loading
3762 When a new object file is read (for example, due to the @code{file}
3763 command, or because the inferior has loaded a shared library),
3764 @value{GDBN} will look for Guile support scripts in two ways:
3765 @file{@var{objfile}-gdb.scm} and the @code{.debug_gdb_scripts} section.
3766 @xref{Auto-loading extensions}.
3768 The auto-loading feature is useful for supplying application-specific
3769 debugging commands and scripts.
3771 Auto-loading can be enabled or disabled,
3772 and the list of auto-loaded scripts can be printed.
3775 @anchor{set auto-load guile-scripts}
3776 @kindex set auto-load guile-scripts
3777 @item set auto-load guile-scripts [on|off]
3778 Enable or disable the auto-loading of Guile scripts.
3780 @anchor{show auto-load guile-scripts}
3781 @kindex show auto-load guile-scripts
3782 @item show auto-load guile-scripts
3783 Show whether auto-loading of Guile scripts is enabled or disabled.
3785 @anchor{info auto-load guile-scripts}
3786 @kindex info auto-load guile-scripts
3787 @cindex print list of auto-loaded Guile scripts
3788 @item info auto-load guile-scripts [@var{regexp}]
3789 Print the list of all Guile scripts that @value{GDBN} auto-loaded.
3791 Also printed is the list of Guile scripts that were mentioned in
3792 the @code{.debug_gdb_scripts} section and were not found.
3793 This is useful because their names are not printed when @value{GDBN}
3794 tries to load them and fails. There may be many of them, and printing
3795 an error message for each one is problematic.
3797 If @var{regexp} is supplied only Guile scripts with matching names are printed.
3802 (gdb) info auto-load guile-scripts
3804 Yes scm-section-script.scm
3805 full name: /tmp/scm-section-script.scm
3806 No my-foo-pretty-printers.scm
3810 When reading an auto-loaded file, @value{GDBN} sets the
3811 @dfn{current objfile}. This is available via the @code{current-objfile}
3812 procedure (@pxref{Objfiles In Guile}). This can be useful for
3813 registering objfile-specific pretty-printers.
3816 @subsection Guile Modules
3817 @cindex guile modules
3819 @value{GDBN} comes with several modules to assist writing Guile code.
3822 * Guile Printing Module:: Building and registering pretty-printers
3823 * Guile Types Module:: Utilities for working with types
3826 @node Guile Printing Module
3827 @subsubsection Guile Printing Module
3829 This module provides a collection of utilities for working with
3835 (use-modules (gdb printing))
3838 @deffn {Scheme Procedure} prepend-pretty-printer! object printer
3839 Add @var{printer} to the front of the list of pretty-printers for
3840 @var{object}. The @var{object} must either be a @code{<gdb:objfile>} object,
3841 or @code{#f} in which case @var{printer} is added to the global list of
3845 @deffn {Scheme Procecure} append-pretty-printer! object printer
3846 Add @var{printer} to the end of the list of pretty-printers for
3847 @var{object}. The @var{object} must either be a @code{<gdb:objfile>} object,
3848 or @code{#f} in which case @var{printer} is added to the global list of
3852 @node Guile Types Module
3853 @subsubsection Guile Types Module
3855 This module provides a collection of utilities for working with
3856 @code{<gdb:type>} objects.
3861 (use-modules (gdb types))
3864 @deffn {Scheme Procedure} get-basic-type type
3865 Return @var{type} with const and volatile qualifiers stripped,
3866 and with typedefs and C@t{++} references converted to the underlying type.
3871 typedef const int const_int;
3873 const_int& foo_ref (foo);
3874 int main () @{ return 0; @}
3881 (gdb) guile (use-modules (gdb) (gdb types))
3882 (gdb) guile (define foo-ref (parse-and-eval "foo_ref"))
3883 (gdb) guile (get-basic-type (value-type foo-ref))
3888 @deffn {Scheme Procedure} type-has-field-deep? type field
3889 Return @code{#t} if @var{type}, assumed to be a type with fields
3890 (e.g., a structure or union), has field @var{field}.
3891 Otherwise return @code{#f}.
3892 This searches baseclasses, whereas @code{type-has-field?} does not.
3895 @deffn {Scheme Procedure} make-enum-hashtable enum-type
3896 Return a Guile hash table produced from @var{enum-type}.
3897 Elements in the hash table are referenced with @code{hashq-ref}.