Introduce assign_operation
[deliverable/binutils-gdb.git] / gdb / doc / guile.texi
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.
8 @c
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.''
12
13 @node Guile
14 @section Extending @value{GDBN} using Guile
15 @cindex guile scripting
16 @cindex scripting with guile
17
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}.
22
23 @menu
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}
29 @end menu
30
31 @node Guile Introduction
32 @subsection Guile Introduction
33
34 Guile is an implementation of the Scheme programming language
35 and is the GNU project's official extension language.
36
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.
40
41 @value{GDBN} requires Guile version 3.0, 2.2, or 2.0.
42
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.
50
51 @node Guile Commands
52 @subsection Guile Commands
53 @cindex guile commands
54 @cindex commands to access guile
55
56 @value{GDBN} provides two commands for accessing the Guile interpreter:
57
58 @table @code
59 @kindex guile-repl
60 @kindex gr
61 @item guile-repl
62 @itemx gr
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.
67
68 @kindex guile
69 @kindex gu
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.
73
74 If given an argument, @value{GDBN} will pass the argument to the Guile
75 interpreter for evaluation.
76
77 @smallexample
78 (@value{GDBP}) guile (display (+ 20 3)) (newline)
79 23
80 @end smallexample
81
82 The result of the Scheme expression is displayed using normal Guile rules.
83
84 @smallexample
85 (@value{GDBP}) guile (+ 20 3)
86 23
87 @end smallexample
88
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:
94
95 @smallexample
96 (@value{GDBP}) guile
97 >(display 23)
98 >(newline)
99 >end
100 23
101 @end smallexample
102 @end table
103
104 It is also possible to execute a Guile script from the @value{GDBN}
105 interpreter:
106
107 @table @code
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}.
112
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}).
118 @end table
119
120 @node Guile API
121 @subsection Guile API
122 @cindex guile api
123 @cindex programming in guile
124
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.
131
132 @menu
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
158 @end menu
159
160 @node Basic Guile
161 @subsubsection Basic Guile
162
163 @cindex guile stdout
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}.
170
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}.
175
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.
179
180 Some care must be taken when writing Guile code to run in
181 @value{GDBN}. Two things are worth noting in particular:
182
183 @itemize @bullet
184 @item
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.
191
192 @item
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
198 child process.
199 @end itemize
200
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
209 to your ~/.gdbinit.
210
211 @smallexample
212 guile (use-modules (gdb))
213 @end smallexample
214
215 @smallexample
216 guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))
217 @end smallexample
218
219 Which one to choose depends on your preference.
220 The second one adds @code{gdb:} as a prefix to all module functions
221 and variables.
222
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}
225 for more information
226 (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}).
227
228 Example:
229
230 @smallexample
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))
236 int
237 (gdb)
238 @end smallexample
239
240 The @code{(gdb)} module provides these basic Guile functions.
241
242 @c TODO: line length
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}.
248
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}.
252
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}.
261 @end deffn
262
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
271 raised.
272
273 If no exception is raised, the return value is always an instance of
274 @code{<gdb:value>} (@pxref{Values From Inferior In Guile}).
275
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
280 command line.
281 @end deffn
282
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.
286
287 Putting into history values returned by Guile extensions will allow
288 the user convenient access to those values via CLI history
289 facilities.
290 @end deffn
291
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.
296
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>}.
303 @end deffn
304
305 @node Guile Configuration
306 @subsubsection Guile Configuration
307 @cindex guile configuration
308
309 @value{GDBN} provides these Scheme functions to access various configuration
310 parameters.
311
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.
315 @end deffn
316
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}.
320 @end deffn
321
322 @deffn {Scheme Procedure} gdb-version
323 Return a string containing the @value{GDBN} version.
324 @end deffn
325
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.
329 @end deffn
330
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.
334 @end deffn
335
336 @node GDB Scheme Data Types
337 @subsubsection GDB Scheme Data Types
338 @cindex gdb objects
339
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.
343
344 @deffn {Scheme Procedure} gdb-object-kind object
345 Return the kind of the @value{GDBN} object, e.g., @code{<gdb:breakpoint>},
346 as a symbol.
347 @end deffn
348
349 @value{GDBN} defines the following object types:
350
351 @table @code
352 @item <gdb:arch>
353 @xref{Architectures In Guile}.
354
355 @item <gdb:block>
356 @xref{Blocks In Guile}.
357
358 @item <gdb:block-symbols-iterator>
359 @xref{Blocks In Guile}.
360
361 @item <gdb:breakpoint>
362 @xref{Breakpoints In Guile}.
363
364 @item <gdb:command>
365 @xref{Commands In Guile}.
366
367 @item <gdb:exception>
368 @xref{Guile Exception Handling}.
369
370 @item <gdb:frame>
371 @xref{Frames In Guile}.
372
373 @item <gdb:iterator>
374 @xref{Iterators In Guile}.
375
376 @item <gdb:lazy-string>
377 @xref{Lazy Strings In Guile}.
378
379 @item <gdb:objfile>
380 @xref{Objfiles In Guile}.
381
382 @item <gdb:parameter>
383 @xref{Parameters In Guile}.
384
385 @item <gdb:pretty-printer>
386 @xref{Guile Pretty Printing API}.
387
388 @item <gdb:pretty-printer-worker>
389 @xref{Guile Pretty Printing API}.
390
391 @item <gdb:progspace>
392 @xref{Progspaces In Guile}.
393
394 @item <gdb:symbol>
395 @xref{Symbols In Guile}.
396
397 @item <gdb:symtab>
398 @xref{Symbol Tables In Guile}.
399
400 @item <gdb:sal>
401 @xref{Symbol Tables In Guile}.
402
403 @item <gdb:type>
404 @xref{Types In Guile}.
405
406 @item <gdb:field>
407 @xref{Types In Guile}.
408
409 @item <gdb:value>
410 @xref{Values From Inferior In Guile}.
411 @end table
412
413 The following @value{GDBN} objects are managed internally so that the
414 Scheme function @code{eq?} may be applied to them.
415
416 @table @code
417 @item <gdb:arch>
418 @item <gdb:block>
419 @item <gdb:breakpoint>
420 @item <gdb:frame>
421 @item <gdb:objfile>
422 @item <gdb:progspace>
423 @item <gdb:symbol>
424 @item <gdb:symtab>
425 @item <gdb:type>
426 @end table
427
428 @node Guile Exception Handling
429 @subsubsection Guile Exception Handling
430 @cindex guile exceptions
431 @cindex exceptions, guile
432 @kindex set guile print-stack
433
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.
440
441 The @code{guile print-stack} parameter has three settings:
442
443 @table @code
444 @item none
445 Nothing is printed.
446
447 @item message
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:
451
452 @smallexample
453 (@value{GDBP}) guile (display foo)
454 ERROR: In procedure memoize-variable-access!:
455 ERROR: Unbound variable: foo
456 Error while executing Scheme code.
457 @end smallexample
458
459 @item full
460 In addition to an error message a full backtrace is printed.
461
462 @smallexample
463 (@value{GDBP}) set guile print-stack full
464 (@value{GDBP}) guile (display foo)
465 Guile Backtrace:
466 In ice-9/boot-9.scm:
467 157: 10 [catch #t #<catch-closure 2c76e20> ...]
468 In unknown file:
469 ?: 9 [apply-smob/1 #<catch-closure 2c76e20>]
470 In ice-9/boot-9.scm:
471 157: 8 [catch #t #<catch-closure 2c76d20> ...]
472 In unknown file:
473 ?: 7 [apply-smob/1 #<catch-closure 2c76d20>]
474 ?: 6 [call-with-input-string "(display foo)" ...]
475 In ice-9/boot-9.scm:
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)]
480 In ice-9/eval.scm:
481 387: 2 [eval # ()]
482 393: 1 [eval #<memoized foo> ()]
483 In unknown file:
484 ?: 0 [memoize-variable-access! #<memoized foo> ...]
485
486 ERROR: In procedure memoize-variable-access!:
487 ERROR: Unbound variable: foo
488 Error while executing Scheme code.
489 @end smallexample
490 @end table
491
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.
495
496 Guile procedures provided by @value{GDBN} can throw the standard
497 Guile exceptions like @code{wrong-type-arg} and @code{out-of-range}.
498
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
501 @code{SIGINT}.
502
503 @value{GDBN} Guile procedures can also throw these exceptions:
504
505 @vtable @code
506 @item gdb:error
507 This exception is a catch-all for errors generated from within @value{GDBN}.
508
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.
516
517 @item gdb:memory-error
518 This exception is thrown when an operation tried to access invalid
519 memory in the inferior.
520
521 @item gdb:pp-type-error
522 This exception is thrown when a Guile pretty-printer passes a bad object
523 to @value{GDBN}.
524 @end vtable
525
526 The following exception-related procedures are provided by the
527 @code{(gdb)} module.
528
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}).
534 @end deffn
535
536 @deffn {Scheme Procedure} exception? object
537 Return @code{#t} if @var{object} is a @code{<gdb:exception>} object.
538 Otherwise return @code{#f}.
539 @end deffn
540
541 @deffn {Scheme Procedure} exception-key exception
542 Return the @var{args} field of a @code{<gdb:exception>} object.
543 @end deffn
544
545 @deffn {Scheme Procedure} exception-args exception
546 Return the @var{args} field of a @code{<gdb:exception>} object.
547 @end deffn
548
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
553
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.
559
560 @value{GDBN} does not memoize @code{<gdb:value>} objects.
561 @code{make-value} always returns a fresh object.
562
563 @smallexample
564 (gdb) guile (eq? (make-value 1) (make-value 1))
565 $1 = #f
566 (gdb) guile (equal? (make-value 1) (make-value 1))
567 $1 = #t
568 @end smallexample
569
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.
574
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:
578
579 @smallexample
580 (define result (value-call some-val 10 20))
581 @end smallexample
582
583 Any values returned from a function call are @code{<gdb:value>} objects.
584
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.
591
592 The following value-related procedures are provided by the
593 @code{(gdb)} module.
594
595 @deffn {Scheme Procedure} value? object
596 Return @code{#t} if @var{object} is a @code{<gdb:value>} object.
597 Otherwise return @code{#f}.
598 @end deffn
599
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.
606
607 @xref{Architectures In Guile}, for a list of the builtin
608 types for an architecture.
609
610 Here's how Scheme values are converted when @var{type} argument to
611 @code{make-value} is not specified:
612
613 @table @asis
614 @item Scheme boolean
615 A Scheme boolean is converted the boolean type for the current language.
616
617 @item Scheme integer
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.
622
623 If the Scheme integer cannot be represented as a target integer
624 an @code{out-of-range} exception is thrown.
625
626 @item Scheme real
627 A Scheme real is converted to the C @code{double} type for the
628 current architecture.
629
630 @item Scheme string
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}).
637
638 Passing @var{type} is not supported in this case,
639 if it is provided a @code{wrong-type-arg} exception is thrown.
640
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
644 its result is used.
645
646 Passing @var{type} is not supported in this case,
647 if it is provided a @code{wrong-type-arg} exception is thrown.
648
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}.
653
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.
656 @end table
657 @end deffn
658
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}.
664 @end deffn
665
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.
670 @end deffn
671
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}).
675 @end deffn
676
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
685 type.
686
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}.
691 @end deffn
692
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.
698 @end deffn
699
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.
703 @end deffn
704
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.
708 @end deffn
709
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
714
715 @smallexample
716 int *foo;
717 @end smallexample
718
719 @noindent
720 then you can use the corresponding @code{<gdb:value>} to access what
721 @code{foo} points to like this:
722
723 @smallexample
724 (define bar (value-dereference foo))
725 @end smallexample
726
727 The result @code{bar} will be a @code{<gdb:value>} object holding the
728 value pointed to by @code{foo}.
729
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
738 as
739
740 @smallexample
741 typedef int *intptr;
742 ...
743 int val = 10;
744 intptr ptr = &val;
745 intptr &ptrref = ptr;
746 @end smallexample
747
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}.
754
755 @smallexample
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))
759 @end smallexample
760
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.
771 @end deffn
772
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
782
783 @smallexample
784 int val = 10;
785 int &ref = val;
786 @end smallexample
787
788 @noindent
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}.
793
794 @smallexample
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
798 @end smallexample
799
800 The @code{<gdb:value>} object @code{scm-val} is identical to that
801 corresponding to @code{val}.
802 @end deffn
803
804 @deffn {Scheme Procedure} value-field value field-name
805 Return field @var{field-name} from @code{<gdb:value>} object @var{value}.
806 @end deffn
807
808 @deffn {Scheme Procedure} value-subscript value index
809 Return the value of array @var{value} at index @var{index}.
810 The @var{value} argument must be a subscriptable @code{<gdb:value>} object.
811 @end deffn
812
813 @deffn {Scheme Procedure} value-call value arg-list
814 Perform an inferior function call, taking @var{value} as a pointer
815 to the function to call.
816 Each element of list @var{arg-list} must be a <gdb:value> object or an object
817 that can be converted to a value.
818 The result is the value returned by the function.
819 @end deffn
820
821 @deffn {Scheme Procedure} value->bool value
822 Return the Scheme boolean representing @code{<gdb:value>} @var{value}.
823 The value must be ``integer like''. Pointers are ok.
824 @end deffn
825
826 @deffn {Scheme Procedure} value->integer
827 Return the Scheme integer representing @code{<gdb:value>} @var{value}.
828 The value must be ``integer like''. Pointers are ok.
829 @end deffn
830
831 @deffn {Scheme Procedure} value->real
832 Return the Scheme real number representing @code{<gdb:value>} @var{value}.
833 The value must be a number.
834 @end deffn
835
836 @deffn {Scheme Procedure} value->bytevector
837 Return a Scheme bytevector with the raw contents of @code{<gdb:value>}
838 @var{value}. No transformation, endian or otherwise, is performed.
839 @end deffn
840
841 @c TODO: line length
842 @deffn {Scheme Procedure} value->string value @r{[}#:encoding encoding@r{]} @r{[}#:errors errors@r{]} @r{[}#:length length@r{]}
843 If @var{value>} represents a string, then this method
844 converts the contents to a Guile string. Otherwise, this method will
845 throw an exception.
846
847 Values are interpreted as strings according to the rules of the
848 current language. If the optional length argument is given, the
849 string will be converted to that length, and will include any embedded
850 zeroes that the string may contain. Otherwise, for languages
851 where the string is zero-terminated, the entire string will be
852 converted.
853
854 For example, in C-like languages, a value is a string if it is a pointer
855 to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
856 or @code{char32_t}.
857
858 If the optional @var{encoding} argument is given, it must be a string
859 naming the encoding of the string in the @code{<gdb:value>}, such as
860 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
861 the same encodings as the corresponding argument to Guile's
862 @code{scm_from_stringn} function, and the Guile codec machinery will be used
863 to convert the string. If @var{encoding} is not given, or if
864 @var{encoding} is the empty string, then either the @code{target-charset}
865 (@pxref{Character Sets}) will be used, or a language-specific encoding
866 will be used, if the current language is able to supply one.
867
868 The optional @var{errors} argument is one of @code{#f}, @code{error} or
869 @code{substitute}. @code{error} and @code{substitute} must be symbols.
870 If @var{errors} is not specified, or if its value is @code{#f}, then the
871 default conversion strategy is used, which is set with the Scheme function
872 @code{set-port-conversion-strategy!}.
873 If the value is @code{'error} then an exception is thrown if there is any
874 conversion error. If the value is @code{'substitute} then any conversion
875 error is replaced with question marks.
876 @xref{Strings,,, guile, GNU Guile Reference Manual}.
877
878 If the optional @var{length} argument is given, the string will be
879 fetched and converted to the given length.
880 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
881 @end deffn
882
883 @c TODO: line length
884 @deffn {Scheme Procedure} value->lazy-string value @r{[}#:encoding encoding@r{]} @r{[}#:length length@r{]}
885 If this @code{<gdb:value>} represents a string, then this method
886 converts @var{value} to a @code{<gdb:lazy-string} (@pxref{Lazy Strings
887 In Guile}). Otherwise, this method will throw an exception.
888
889 If the optional @var{encoding} argument is given, it must be a string
890 naming the encoding of the @code{<gdb:lazy-string}. Some examples are:
891 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. If the
892 @var{encoding} argument is an encoding that @value{GDBN} does not
893 recognize, @value{GDBN} will raise an error.
894
895 When a lazy string is printed, the @value{GDBN} encoding machinery is
896 used to convert the string during printing. If the optional
897 @var{encoding} argument is not provided, or is an empty string,
898 @value{GDBN} will automatically select the encoding most suitable for
899 the string type. For further information on encoding in @value{GDBN}
900 please see @ref{Character Sets}.
901
902 If the optional @var{length} argument is given, the string will be
903 fetched and encoded to the length of characters specified. If
904 the @var{length} argument is not provided, the string will be fetched
905 and encoded until a null of appropriate width is found.
906 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
907 @end deffn
908
909 @deffn {Scheme Procedure} value-lazy? value
910 Return @code{#t} if @var{value} has not yet been fetched
911 from the inferior.
912 Otherwise return @code{#f}.
913 @value{GDBN} does not fetch values until necessary, for efficiency.
914 For example:
915
916 @smallexample
917 (define myval (parse-and-eval "somevar"))
918 @end smallexample
919
920 The value of @code{somevar} is not fetched at this time. It will be
921 fetched when the value is needed, or when the @code{fetch-lazy}
922 procedure is invoked.
923 @end deffn
924
925 @deffn {Scheme Procedure} make-lazy-value type address
926 Return a @code{<gdb:value>} that will be lazily fetched from the
927 target. The object of type @code{<gdb:type>} whose value to fetch is
928 specified by its @var{type} and its target memory @var{address}, which
929 is a Scheme integer.
930 @end deffn
931
932 @deffn {Scheme Procedure} value-fetch-lazy! value
933 If @var{value} is a lazy value (@code{(value-lazy? value)} is @code{#t}),
934 then the value is fetched from the inferior.
935 Any errors that occur in the process will produce a Guile exception.
936
937 If @var{value} is not a lazy value, this method has no effect.
938
939 The result of this function is unspecified.
940 @end deffn
941
942 @deffn {Scheme Procedure} value-print value
943 Return the string representation (print form) of @code{<gdb:value>}
944 @var{value}.
945 @end deffn
946
947 @node Arithmetic In Guile
948 @subsubsection Arithmetic In Guile
949
950 The @code{(gdb)} module provides several functions for performing
951 arithmetic on @code{<gdb:value>} objects.
952 The arithmetic is performed as if it were done by the target,
953 and therefore has target semantics which are not necessarily
954 those of Scheme. For example operations work with a fixed precision,
955 not the arbitrary precision of Scheme.
956
957 Wherever a function takes an integer or pointer as an operand,
958 @value{GDBN} will convert appropriate Scheme values to perform
959 the operation.
960
961 @deffn {Scheme Procedure} value-add a b
962 @end deffn
963
964 @deffn {Scheme Procedure} value-sub a b
965 @end deffn
966
967 @deffn {Scheme Procedure} value-mul a b
968 @end deffn
969
970 @deffn {Scheme Procedure} value-div a b
971 @end deffn
972
973 @deffn {Scheme Procedure} value-rem a b
974 @end deffn
975
976 @deffn {Scheme Procedure} value-mod a b
977 @end deffn
978
979 @deffn {Scheme Procedure} value-pow a b
980 @end deffn
981
982 @deffn {Scheme Procedure} value-not a
983 @end deffn
984
985 @deffn {Scheme Procedure} value-neg a
986 @end deffn
987
988 @deffn {Scheme Procedure} value-pos a
989 @end deffn
990
991 @deffn {Scheme Procedure} value-abs a
992 @end deffn
993
994 @deffn {Scheme Procedure} value-lsh a b
995 @end deffn
996
997 @deffn {Scheme Procedure} value-rsh a b
998 @end deffn
999
1000 @deffn {Scheme Procedure} value-min a b
1001 @end deffn
1002
1003 @deffn {Scheme Procedure} value-max a b
1004 @end deffn
1005
1006 @deffn {Scheme Procedure} value-lognot a
1007 @end deffn
1008
1009 @deffn {Scheme Procedure} value-logand a b
1010 @end deffn
1011
1012 @deffn {Scheme Procedure} value-logior a b
1013 @end deffn
1014
1015 @deffn {Scheme Procedure} value-logxor a b
1016 @end deffn
1017
1018 @deffn {Scheme Procedure} value=? a b
1019 @end deffn
1020
1021 @deffn {Scheme Procedure} value<? a b
1022 @end deffn
1023
1024 @deffn {Scheme Procedure} value<=? a b
1025 @end deffn
1026
1027 @deffn {Scheme Procedure} value>? a b
1028 @end deffn
1029
1030 @deffn {Scheme Procedure} value>=? a b
1031 @end deffn
1032
1033 Scheme does not provide a @code{not-equal} function,
1034 and thus Guile support in @value{GDBN} does not either.
1035
1036 @node Types In Guile
1037 @subsubsection Types In Guile
1038 @cindex types in guile
1039 @cindex guile, working with types
1040
1041 @tindex <gdb:type>
1042 @value{GDBN} represents types from the inferior in objects of type
1043 @code{<gdb:type>}.
1044
1045 The following type-related procedures are provided by the
1046 @code{(gdb)} module.
1047
1048 @deffn {Scheme Procedure} type? object
1049 Return @code{#t} if @var{object} is an object of type @code{<gdb:type>}.
1050 Otherwise return @code{#f}.
1051 @end deffn
1052
1053 @deffn {Scheme Procedure} lookup-type name @r{[}#:block block@r{]}
1054 This function looks up a type by its @var{name}, which must be a string.
1055
1056 If @var{block} is given, it is an object of type @code{<gdb:block>},
1057 and @var{name} is looked up in that scope.
1058 Otherwise, it is searched for globally.
1059
1060 Ordinarily, this function will return an instance of @code{<gdb:type>}.
1061 If the named type cannot be found, it will throw an exception.
1062 @end deffn
1063
1064 @deffn {Scheme Procedure} type-code type
1065 Return the type code of @var{type}. The type code will be one of the
1066 @code{TYPE_CODE_} constants defined below.
1067 @end deffn
1068
1069 @deffn {Scheme Procedure} type-tag type
1070 Return the tag name of @var{type}. The tag name is the name after
1071 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
1072 languages have this concept. If this type has no tag name, then
1073 @code{#f} is returned.
1074 @end deffn
1075
1076 @deffn {Scheme Procedure} type-name type
1077 Return the name of @var{type}.
1078 If this type has no name, then @code{#f} is returned.
1079 @end deffn
1080
1081 @deffn {Scheme Procedure} type-print-name type
1082 Return the print name of @var{type}.
1083 This returns something even for anonymous types.
1084 For example, for an anonymous C struct @code{"struct @{...@}"} is returned.
1085 @end deffn
1086
1087 @deffn {Scheme Procedure} type-sizeof type
1088 Return the size of this type, in target @code{char} units. Usually, a
1089 target's @code{char} type will be an 8-bit byte. However, on some
1090 unusual platforms, this type may have a different size.
1091 @end deffn
1092
1093 @deffn {Scheme Procedure} type-strip-typedefs type
1094 Return a new @code{<gdb:type>} that represents the real type of @var{type},
1095 after removing all layers of typedefs.
1096 @end deffn
1097
1098 @deffn {Scheme Procedure} type-array type n1 @r{[}n2@r{]}
1099 Return a new @code{<gdb:type>} object which represents an array of this
1100 type. If one argument is given, it is the inclusive upper bound of
1101 the array; in this case the lower bound is zero. If two arguments are
1102 given, the first argument is the lower bound of the array, and the
1103 second argument is the upper bound of the array. An array's length
1104 must not be negative, but the bounds can be.
1105 @end deffn
1106
1107 @deffn {Scheme Procedure} type-vector type n1 @r{[}n2@r{]}
1108 Return a new @code{<gdb:type>} object which represents a vector of this
1109 type. If one argument is given, it is the inclusive upper bound of
1110 the vector; in this case the lower bound is zero. If two arguments are
1111 given, the first argument is the lower bound of the vector, and the
1112 second argument is the upper bound of the vector. A vector's length
1113 must not be negative, but the bounds can be.
1114
1115 The difference between an @code{array} and a @code{vector} is that
1116 arrays behave like in C: when used in expressions they decay to a pointer
1117 to the first element whereas vectors are treated as first class values.
1118 @end deffn
1119
1120 @deffn {Scheme Procedure} type-pointer type
1121 Return a new @code{<gdb:type>} object which represents a pointer to
1122 @var{type}.
1123 @end deffn
1124
1125 @deffn {Scheme Procedure} type-range type
1126 Return a list of two elements: the low bound and high bound of @var{type}.
1127 If @var{type} does not have a range, an exception is thrown.
1128 @end deffn
1129
1130 @deffn {Scheme Procedure} type-reference type
1131 Return a new @code{<gdb:type>} object which represents a reference to
1132 @var{type}.
1133 @end deffn
1134
1135 @deffn {Scheme Procedure} type-target type
1136 Return a new @code{<gdb:type>} object which represents the target type
1137 of @var{type}.
1138
1139 For a pointer type, the target type is the type of the pointed-to
1140 object. For an array type (meaning C-like arrays), the target type is
1141 the type of the elements of the array. For a function or method type,
1142 the target type is the type of the return value. For a complex type,
1143 the target type is the type of the elements. For a typedef, the
1144 target type is the aliased type.
1145
1146 If the type does not have a target, this method will throw an
1147 exception.
1148 @end deffn
1149
1150 @deffn {Scheme Procedure} type-const type
1151 Return a new @code{<gdb:type>} object which represents a
1152 @code{const}-qualified variant of @var{type}.
1153 @end deffn
1154
1155 @deffn {Scheme Procedure} type-volatile type
1156 Return a new @code{<gdb:type>} object which represents a
1157 @code{volatile}-qualified variant of @var{type}.
1158 @end deffn
1159
1160 @deffn {Scheme Procedure} type-unqualified type
1161 Return a new @code{<gdb:type>} object which represents an unqualified
1162 variant of @var{type}. That is, the result is neither @code{const} nor
1163 @code{volatile}.
1164 @end deffn
1165
1166 @deffn {Scheme Procedure} type-num-fields
1167 Return the number of fields of @code{<gdb:type>} @var{type}.
1168 @end deffn
1169
1170 @deffn {Scheme Procedure} type-fields type
1171 Return the fields of @var{type} as a list.
1172 For structure and union types, @code{fields} has the usual meaning.
1173 Range types have two fields, the minimum and maximum values. Enum types
1174 have one field per enum constant. Function and method types have one
1175 field per parameter. The base types of C@t{++} classes are also
1176 represented as fields. If the type has no fields, or does not fit
1177 into one of these categories, an empty list will be returned.
1178 @xref{Fields of a type in Guile}.
1179 @end deffn
1180
1181 @deffn {Scheme Procedure} make-field-iterator type
1182 Return the fields of @var{type} as a <gdb:iterator> object.
1183 @xref{Iterators In Guile}.
1184 @end deffn
1185
1186 @deffn {Scheme Procedure} type-field type field-name
1187 Return field named @var{field-name} in @var{type}.
1188 The result is an object of type @code{<gdb:field>}.
1189 @xref{Fields of a type in Guile}.
1190 If the type does not have fields, or @var{field-name} is not a field
1191 of @var{type}, an exception is thrown.
1192
1193 For example, if @code{some-type} is a @code{<gdb:type>} instance holding
1194 a structure type, you can access its @code{foo} field with:
1195
1196 @smallexample
1197 (define bar (type-field some-type "foo"))
1198 @end smallexample
1199
1200 @code{bar} will be a @code{<gdb:field>} object.
1201 @end deffn
1202
1203 @deffn {Scheme Procedure} type-has-field? type name
1204 Return @code{#t} if @code{<gdb:type>} @var{type} has field named @var{name}.
1205 Otherwise return @code{#f}.
1206 @end deffn
1207
1208 Each type has a code, which indicates what category this type falls
1209 into. The available type categories are represented by constants
1210 defined in the @code{(gdb)} module:
1211
1212 @vtable @code
1213 @item TYPE_CODE_PTR
1214 The type is a pointer.
1215
1216 @item TYPE_CODE_ARRAY
1217 The type is an array.
1218
1219 @item TYPE_CODE_STRUCT
1220 The type is a structure.
1221
1222 @item TYPE_CODE_UNION
1223 The type is a union.
1224
1225 @item TYPE_CODE_ENUM
1226 The type is an enum.
1227
1228 @item TYPE_CODE_FLAGS
1229 A bit flags type, used for things such as status registers.
1230
1231 @item TYPE_CODE_FUNC
1232 The type is a function.
1233
1234 @item TYPE_CODE_INT
1235 The type is an integer type.
1236
1237 @item TYPE_CODE_FLT
1238 A floating point type.
1239
1240 @item TYPE_CODE_VOID
1241 The special type @code{void}.
1242
1243 @item TYPE_CODE_SET
1244 A Pascal set type.
1245
1246 @item TYPE_CODE_RANGE
1247 A range type, that is, an integer type with bounds.
1248
1249 @item TYPE_CODE_STRING
1250 A string type. Note that this is only used for certain languages with
1251 language-defined string types; C strings are not represented this way.
1252
1253 @item TYPE_CODE_BITSTRING
1254 A string of bits. It is deprecated.
1255
1256 @item TYPE_CODE_ERROR
1257 An unknown or erroneous type.
1258
1259 @item TYPE_CODE_METHOD
1260 A method type, as found in C@t{++}.
1261
1262 @item TYPE_CODE_METHODPTR
1263 A pointer-to-member-function.
1264
1265 @item TYPE_CODE_MEMBERPTR
1266 A pointer-to-member.
1267
1268 @item TYPE_CODE_REF
1269 A reference type.
1270
1271 @item TYPE_CODE_CHAR
1272 A character type.
1273
1274 @item TYPE_CODE_BOOL
1275 A boolean type.
1276
1277 @item TYPE_CODE_COMPLEX
1278 A complex float type.
1279
1280 @item TYPE_CODE_TYPEDEF
1281 A typedef to some other type.
1282
1283 @item TYPE_CODE_NAMESPACE
1284 A C@t{++} namespace.
1285
1286 @item TYPE_CODE_DECFLOAT
1287 A decimal floating point type.
1288
1289 @item TYPE_CODE_INTERNAL_FUNCTION
1290 A function internal to @value{GDBN}. This is the type used to represent
1291 convenience functions (@pxref{Convenience Funs}).
1292 @end vtable
1293
1294 Further support for types is provided in the @code{(gdb types)}
1295 Guile module (@pxref{Guile Types Module}).
1296
1297 @anchor{Fields of a type in Guile}
1298 Each field is represented as an object of type @code{<gdb:field>}.
1299
1300 The following field-related procedures are provided by the
1301 @code{(gdb)} module:
1302
1303 @deffn {Scheme Procedure} field? object
1304 Return @code{#t} if @var{object} is an object of type @code{<gdb:field>}.
1305 Otherwise return @code{#f}.
1306 @end deffn
1307
1308 @deffn {Scheme Procedure} field-name field
1309 Return the name of the field, or @code{#f} for anonymous fields.
1310 @end deffn
1311
1312 @deffn {Scheme Procedure} field-type field
1313 Return the type of the field. This is usually an instance of
1314 @code{<gdb:type>}, but it can be @code{#f} in some situations.
1315 @end deffn
1316
1317 @deffn {Scheme Procedure} field-enumval field
1318 Return the enum value represented by @code{<gdb:field>} @var{field}.
1319 @end deffn
1320
1321 @deffn {Scheme Procedure} field-bitpos field
1322 Return the bit position of @code{<gdb:field>} @var{field}.
1323 This attribute is not available for @code{static} fields (as in
1324 C@t{++}).
1325 @end deffn
1326
1327 @deffn {Scheme Procedure} field-bitsize field
1328 If the field is packed, or is a bitfield, return the size of
1329 @code{<gdb:field>} @var{field} in bits. Otherwise, zero is returned;
1330 in which case the field's size is given by its type.
1331 @end deffn
1332
1333 @deffn {Scheme Procedure} field-artificial? field
1334 Return @code{#t} if the field is artificial, usually meaning that
1335 it was provided by the compiler and not the user.
1336 Otherwise return @code{#f}.
1337 @end deffn
1338
1339 @deffn {Scheme Procedure} field-base-class? field
1340 Return @code{#t} if the field represents a base class of a C@t{++}
1341 structure.
1342 Otherwise return @code{#f}.
1343 @end deffn
1344
1345 @node Guile Pretty Printing API
1346 @subsubsection Guile Pretty Printing API
1347 @cindex guile pretty printing api
1348
1349 An example output is provided (@pxref{Pretty Printing}).
1350
1351 A pretty-printer is represented by an object of type <gdb:pretty-printer>.
1352 Pretty-printer objects are created with @code{make-pretty-printer}.
1353
1354 The following pretty-printer-related procedures are provided by the
1355 @code{(gdb)} module:
1356
1357 @deffn {Scheme Procedure} make-pretty-printer name lookup-function
1358 Return a @code{<gdb:pretty-printer>} object named @var{name}.
1359
1360 @var{lookup-function} is a function of one parameter: the value to
1361 be printed. If the value is handled by this pretty-printer, then
1362 @var{lookup-function} returns an object of type
1363 <gdb:pretty-printer-worker> to perform the actual pretty-printing.
1364 Otherwise @var{lookup-function} returns @code{#f}.
1365 @end deffn
1366
1367 @deffn {Scheme Procedure} pretty-printer? object
1368 Return @code{#t} if @var{object} is a @code{<gdb:pretty-printer>} object.
1369 Otherwise return @code{#f}.
1370 @end deffn
1371
1372 @deffn {Scheme Procedure} pretty-printer-enabled? pretty-printer
1373 Return @code{#t} if @var{pretty-printer} is enabled.
1374 Otherwise return @code{#f}.
1375 @end deffn
1376
1377 @deffn {Scheme Procedure} set-pretty-printer-enabled! pretty-printer flag
1378 Set the enabled flag of @var{pretty-printer} to @var{flag}.
1379 The value returned is unspecified.
1380 @end deffn
1381
1382 @deffn {Scheme Procedure} pretty-printers
1383 Return the list of global pretty-printers.
1384 @end deffn
1385
1386 @deffn {Scheme Procedure} set-pretty-printers! pretty-printers
1387 Set the list of global pretty-printers to @var{pretty-printers}.
1388 The value returned is unspecified.
1389 @end deffn
1390
1391 @deffn {Scheme Procedure} make-pretty-printer-worker display-hint to-string children
1392 Return an object of type @code{<gdb:pretty-printer-worker>}.
1393
1394 This function takes three parameters:
1395
1396 @table @samp
1397 @item display-hint
1398 @var{display-hint} provides a hint to @value{GDBN} or @value{GDBN}
1399 front end via MI to change the formatting of the value being printed.
1400 The value must be a string or @code{#f} (meaning there is no hint).
1401 Several values for @var{display-hint}
1402 are predefined by @value{GDBN}:
1403
1404 @table @samp
1405 @item array
1406 Indicate that the object being printed is ``array-like''. The CLI
1407 uses this to respect parameters such as @code{set print elements} and
1408 @code{set print array}.
1409
1410 @item map
1411 Indicate that the object being printed is ``map-like'', and that the
1412 children of this value can be assumed to alternate between keys and
1413 values.
1414
1415 @item string
1416 Indicate that the object being printed is ``string-like''. If the
1417 printer's @code{to-string} function returns a Guile string of some
1418 kind, then @value{GDBN} will call its internal language-specific
1419 string-printing function to format the string. For the CLI this means
1420 adding quotation marks, possibly escaping some characters, respecting
1421 @code{set print elements}, and the like.
1422 @end table
1423
1424 @item to-string
1425 @var{to-string} is either a function of one parameter, the
1426 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1427
1428 When printing from the CLI, if the @code{to-string} method exists,
1429 then @value{GDBN} will prepend its result to the values returned by
1430 @code{children}. Exactly how this formatting is done is dependent on
1431 the display hint, and may change as more hints are added. Also,
1432 depending on the print settings (@pxref{Print Settings}), the CLI may
1433 print just the result of @code{to-string} in a stack trace, omitting
1434 the result of @code{children}.
1435
1436 If this method returns a string, it is printed verbatim.
1437
1438 Otherwise, if this method returns an instance of @code{<gdb:value>},
1439 then @value{GDBN} prints this value. This may result in a call to
1440 another pretty-printer.
1441
1442 If instead the method returns a Guile value which is convertible to a
1443 @code{<gdb:value>}, then @value{GDBN} performs the conversion and prints
1444 the resulting value. Again, this may result in a call to another
1445 pretty-printer. Guile scalars (integers, floats, and booleans) and
1446 strings are convertible to @code{<gdb:value>}; other types are not.
1447
1448 Finally, if this method returns @code{#f} then no further operations
1449 are peformed in this method and nothing is printed.
1450
1451 If the result is not one of these types, an exception is raised.
1452
1453 @var{to-string} may also be @code{#f} in which case it is left to
1454 @var{children} to print the value.
1455
1456 @item children
1457 @var{children} is either a function of one parameter, the
1458 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1459
1460 @value{GDBN} will call this function on a pretty-printer to compute the
1461 children of the pretty-printer's value.
1462
1463 This function must return a <gdb:iterator> object.
1464 Each item returned by the iterator must be a tuple holding
1465 two elements. The first element is the ``name'' of the child; the
1466 second element is the child's value. The value can be any Guile
1467 object which is convertible to a @value{GDBN} value.
1468
1469 If @var{children} is @code{#f}, @value{GDBN} will act
1470 as though the value has no children.
1471
1472 Children may be hidden from display based on the value of @samp{set
1473 print max-depth} (@pxref{Print Settings}).
1474 @end table
1475 @end deffn
1476
1477 @value{GDBN} provides a function which can be used to look up the
1478 default pretty-printer for a @code{<gdb:value>}:
1479
1480 @deffn {Scheme Procedure} default-visualizer value
1481 This function takes a @code{<gdb:value>} object as an argument. If a
1482 pretty-printer for this value exists, then it is returned. If no such
1483 printer exists, then this returns @code{#f}.
1484 @end deffn
1485
1486 @node Selecting Guile Pretty-Printers
1487 @subsubsection Selecting Guile Pretty-Printers
1488 @cindex selecting guile pretty-printers
1489
1490 There are three sets of pretty-printers that @value{GDBN} searches:
1491
1492 @itemize @bullet
1493 @item
1494 Per-objfile list of pretty-printers (@pxref{Objfiles In Guile}).
1495 @item
1496 Per-progspace list of pretty-printers (@pxref{Progspaces In Guile}).
1497 @item
1498 The global list of pretty-printers (@pxref{Guile Pretty Printing API}).
1499 These printers are available when debugging any inferior.
1500 @end itemize
1501
1502 Pretty-printer lookup is done by passing the value to be printed to the
1503 lookup function of each enabled object in turn.
1504 Lookup stops when a lookup function returns a non-@code{#f} value
1505 or when the list is exhausted.
1506 Lookup functions must return either a @code{<gdb:pretty-printer-worker>}
1507 object or @code{#f}. Otherwise an exception is thrown.
1508
1509 @value{GDBN} first checks the result of @code{objfile-pretty-printers}
1510 of each @code{<gdb:objfile>} in the current program space and iteratively
1511 calls each enabled lookup function in the list for that @code{<gdb:objfile>}
1512 until a non-@code{#f} object is returned.
1513 If no pretty-printer is found in the objfile lists, @value{GDBN} then
1514 searches the result of @code{progspace-pretty-printers} of the current
1515 program space, calling each enabled function until a non-@code{#f} object
1516 is returned.
1517 After these lists have been exhausted, it tries the global pretty-printers
1518 list, obtained with @code{pretty-printers}, again calling each enabled
1519 function until a non-@code{#f} object is returned.
1520
1521 The order in which the objfiles are searched is not specified. For a
1522 given list, functions are always invoked from the head of the list,
1523 and iterated over sequentially until the end of the list, or a
1524 @code{<gdb:pretty-printer-worker>} object is returned.
1525
1526 For various reasons a pretty-printer may not work.
1527 For example, the underlying data structure may have changed and
1528 the pretty-printer is out of date.
1529
1530 The consequences of a broken pretty-printer are severe enough that
1531 @value{GDBN} provides support for enabling and disabling individual
1532 printers. For example, if @code{print frame-arguments} is on,
1533 a backtrace can become highly illegible if any argument is printed
1534 with a broken printer.
1535
1536 Pretty-printers are enabled and disabled from Scheme by calling
1537 @code{set-pretty-printer-enabled!}.
1538 @xref{Guile Pretty Printing API}.
1539
1540 @node Writing a Guile Pretty-Printer
1541 @subsubsection Writing a Guile Pretty-Printer
1542 @cindex writing a Guile pretty-printer
1543
1544 A pretty-printer consists of two basic parts: a lookup function to determine
1545 if the type is supported, and the printer itself.
1546
1547 Here is an example showing how a @code{std::string} printer might be
1548 written. @xref{Guile Pretty Printing API}, for details.
1549
1550 @smallexample
1551 (define (make-my-string-printer value)
1552 "Print a my::string string"
1553 (make-pretty-printer-worker
1554 "string"
1555 (lambda (printer)
1556 (value-field value "_data"))
1557 #f))
1558 @end smallexample
1559
1560 And here is an example showing how a lookup function for the printer
1561 example above might be written.
1562
1563 @smallexample
1564 (define (str-lookup-function pretty-printer value)
1565 (let ((tag (type-tag (value-type value))))
1566 (and tag
1567 (string-prefix? "std::string<" tag)
1568 (make-my-string-printer value))))
1569 @end smallexample
1570
1571 Then to register this printer in the global printer list:
1572
1573 @smallexample
1574 (append-pretty-printer!
1575 (make-pretty-printer "my-string" str-lookup-function))
1576 @end smallexample
1577
1578 The example lookup function extracts the value's type, and attempts to
1579 match it to a type that it can pretty-print. If it is a type the
1580 printer can pretty-print, it will return a <gdb:pretty-printer-worker> object.
1581 If not, it returns @code{#f}.
1582
1583 We recommend that you put your core pretty-printers into a Guile
1584 package. If your pretty-printers are for use with a library, we
1585 further recommend embedding a version number into the package name.
1586 This practice will enable @value{GDBN} to load multiple versions of
1587 your pretty-printers at the same time, because they will have
1588 different names.
1589
1590 You should write auto-loaded code (@pxref{Guile Auto-loading}) such that it
1591 can be evaluated multiple times without changing its meaning. An
1592 ideal auto-load file will consist solely of @code{import}s of your
1593 printer modules, followed by a call to a register pretty-printers with
1594 the current objfile.
1595
1596 Taken as a whole, this approach will scale nicely to multiple
1597 inferiors, each potentially using a different library version.
1598 Embedding a version number in the Guile package name will ensure that
1599 @value{GDBN} is able to load both sets of printers simultaneously.
1600 Then, because the search for pretty-printers is done by objfile, and
1601 because your auto-loaded code took care to register your library's
1602 printers with a specific objfile, @value{GDBN} will find the correct
1603 printers for the specific version of the library used by each
1604 inferior.
1605
1606 To continue the @code{my::string} example,
1607 this code might appear in @code{(my-project my-library v1)}:
1608
1609 @smallexample
1610 (use-modules (gdb))
1611 (define (register-printers objfile)
1612 (append-objfile-pretty-printer!
1613 (make-pretty-printer "my-string" str-lookup-function)))
1614 @end smallexample
1615
1616 @noindent
1617 And then the corresponding contents of the auto-load file would be:
1618
1619 @smallexample
1620 (use-modules (gdb) (my-project my-library v1))
1621 (register-printers (current-objfile))
1622 @end smallexample
1623
1624 The previous example illustrates a basic pretty-printer.
1625 There are a few things that can be improved on.
1626 The printer only handles one type, whereas a library typically has
1627 several types. One could install a lookup function for each desired type
1628 in the library, but one could also have a single lookup function recognize
1629 several types. The latter is the conventional way this is handled.
1630 If a pretty-printer can handle multiple data types, then its
1631 @dfn{subprinters} are the printers for the individual data types.
1632
1633 The @code{(gdb printing)} module provides a formal way of solving this
1634 problem (@pxref{Guile Printing Module}).
1635 Here is another example that handles multiple types.
1636
1637 These are the types we are going to pretty-print:
1638
1639 @smallexample
1640 struct foo @{ int a, b; @};
1641 struct bar @{ struct foo x, y; @};
1642 @end smallexample
1643
1644 Here are the printers:
1645
1646 @smallexample
1647 (define (make-foo-printer value)
1648 "Print a foo object"
1649 (make-pretty-printer-worker
1650 "foo"
1651 (lambda (printer)
1652 (format #f "a=<~a> b=<~a>"
1653 (value-field value "a") (value-field value "a")))
1654 #f))
1655
1656 (define (make-bar-printer value)
1657 "Print a bar object"
1658 (make-pretty-printer-worker
1659 "foo"
1660 (lambda (printer)
1661 (format #f "x=<~a> y=<~a>"
1662 (value-field value "x") (value-field value "y")))
1663 #f))
1664 @end smallexample
1665
1666 This example doesn't need a lookup function, that is handled by the
1667 @code{(gdb printing)} module. Instead a function is provided to build up
1668 the object that handles the lookup.
1669
1670 @smallexample
1671 (use-modules (gdb printing))
1672
1673 (define (build-pretty-printer)
1674 (let ((pp (make-pretty-printer-collection "my-library")))
1675 (pp-collection-add-tag-printer "foo" make-foo-printer)
1676 (pp-collection-add-tag-printer "bar" make-bar-printer)
1677 pp))
1678 @end smallexample
1679
1680 And here is the autoload support:
1681
1682 @smallexample
1683 (use-modules (gdb) (my-library))
1684 (append-objfile-pretty-printer! (current-objfile) (build-pretty-printer))
1685 @end smallexample
1686
1687 Finally, when this printer is loaded into @value{GDBN}, here is the
1688 corresponding output of @samp{info pretty-printer}:
1689
1690 @smallexample
1691 (gdb) info pretty-printer
1692 my_library.so:
1693 my-library
1694 foo
1695 bar
1696 @end smallexample
1697
1698 @node Commands In Guile
1699 @subsubsection Commands In Guile
1700
1701 @cindex commands in guile
1702 @cindex guile commands
1703 You can implement new @value{GDBN} CLI commands in Guile. A CLI
1704 command object is created with the @code{make-command} Guile function,
1705 and added to @value{GDBN} with the @code{register-command!} Guile function.
1706 This two-step approach is taken to separate out the side-effect of adding
1707 the command to @value{GDBN} from @code{make-command}.
1708
1709 There is no support for multi-line commands, that is commands that
1710 consist of multiple lines and are terminated with @code{end}.
1711
1712 @c TODO: line length
1713 @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{]})
1714
1715 The argument @var{name} is the name of the command. If @var{name} consists of
1716 multiple words, then the initial words are looked for as prefix
1717 commands. In this case, if one of the prefix commands does not exist,
1718 an exception is raised.
1719
1720 The result is the @code{<gdb:command>} object representing the command.
1721 The command is not usable until it has been registered with @value{GDBN}
1722 with @code{register-command!}.
1723
1724 The rest of the arguments are optional.
1725
1726 The argument @var{invoke} is a procedure of three arguments: @var{self},
1727 @var{args} and @var{from-tty}. The argument @var{self} is the
1728 @code{<gdb:command>} object representing the command.
1729 The argument @var{args} is a string representing the arguments passed to
1730 the command, after leading and trailing whitespace has been stripped.
1731 The argument @var{from-tty} is a boolean flag and specifies whether the
1732 command should consider itself to have been originated from the user
1733 invoking it interactively. If this function throws an exception,
1734 it is turned into a @value{GDBN} @code{error} call.
1735 Otherwise, the return value is ignored.
1736
1737 The argument @var{command-class} is one of the @samp{COMMAND_} constants
1738 defined below. This argument tells @value{GDBN} how to categorize the
1739 new command in the help system. The default is @code{COMMAND_NONE}.
1740
1741 The argument @var{completer} is either @code{#f}, one of the @samp{COMPLETE_}
1742 constants defined below, or a procedure, also defined below.
1743 This argument tells @value{GDBN} how to perform completion
1744 for this command. If not provided or if the value is @code{#f},
1745 then no completion is performed on the command.
1746
1747 The argument @var{prefix} is a boolean flag indicating whether the new
1748 command is a prefix command; sub-commands of this command may be
1749 registered.
1750
1751 The argument @var{doc-string} is help text for the new command.
1752 If no documentation string is provided, the default value ``This command is
1753 not documented.'' is used.
1754 @end deffn
1755
1756 @deffn {Scheme Procedure} register-command! command
1757 Add @var{command}, a @code{<gdb:command>} object, to @value{GDBN}'s
1758 list of commands.
1759 It is an error to register a command more than once.
1760 The result is unspecified.
1761 @end deffn
1762
1763 @deffn {Scheme Procedure} command? object
1764 Return @code{#t} if @var{object} is a @code{<gdb:command>} object.
1765 Otherwise return @code{#f}.
1766 @end deffn
1767
1768 @cindex don't repeat Guile command
1769 @deffn {Scheme Procedure} dont-repeat
1770 By default, a @value{GDBN} command is repeated when the user enters a
1771 blank line at the command prompt. A command can suppress this
1772 behavior by invoking the @code{dont-repeat} function. This is similar
1773 to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
1774 @end deffn
1775
1776 @deffn {Scheme Procedure} string->argv string
1777 Convert a string to a list of strings split up according to
1778 @value{GDBN}'s argv parsing rules.
1779 It is recommended to use this for consistency.
1780 Arguments are separated by spaces and may be quoted.
1781 Example:
1782
1783 @smallexample
1784 scheme@@(guile-user)> (string->argv "1 2\\ \\\"3 '4 \"5' \"6 '7\"")
1785 $1 = ("1" "2 \"3" "4 \"5" "6 '7")
1786 @end smallexample
1787 @end deffn
1788
1789 @deffn {Scheme Procedure} throw-user-error message . args
1790 Throw a @code{gdb:user-error} exception.
1791 The argument @var{message} is the error message as a format string, like the
1792 @var{fmt} argument to the @code{format} Scheme function.
1793 @xref{Formatted Output,,, guile, GNU Guile Reference Manual}.
1794 The argument @var{args} is a list of the optional arguments of @var{message}.
1795
1796 This is used when the command detects a user error of some kind,
1797 say a bad command argument.
1798
1799 @smallexample
1800 (gdb) guile (use-modules (gdb))
1801 (gdb) guile
1802 (register-command! (make-command "test-user-error"
1803 #:command-class COMMAND_OBSCURE
1804 #:invoke (lambda (self arg from-tty)
1805 (throw-user-error "Bad argument ~a" arg))))
1806 end
1807 (gdb) test-user-error ugh
1808 ERROR: Bad argument ugh
1809 @end smallexample
1810 @end deffn
1811
1812 @cindex completion of Guile commands
1813 @deffn completer self text word
1814 If the @var{completer} option to @code{make-command} is a procedure,
1815 it takes three arguments: @var{self} which is the @code{<gdb:command>}
1816 object, and @var{text} and @var{word} which are both strings.
1817 The argument @var{text} holds the complete command line up to the cursor's
1818 location. The argument @var{word} holds the last word of the command line;
1819 this is computed using a word-breaking heuristic.
1820
1821 All forms of completion are handled by this function, that is,
1822 the @key{TAB} and @key{M-?} key bindings (@pxref{Completion}),
1823 and the @code{complete} command (@pxref{Help, complete}).
1824
1825 This procedure can return several kinds of values:
1826
1827 @itemize @bullet
1828 @item
1829 If the return value is a list, the contents of the list are used as the
1830 completions. It is up to @var{completer} to ensure that the
1831 contents actually do complete the word. An empty list is
1832 allowed, it means that there were no completions available. Only
1833 string elements of the list are used; other elements in the
1834 list are ignored.
1835
1836 @item
1837 If the return value is a @code{<gdb:iterator>} object, it is iterated over to
1838 obtain the completions. It is up to @code{completer-procedure} to ensure
1839 that the results actually do complete the word. Only
1840 string elements of the result are used; other elements in the
1841 sequence are ignored.
1842
1843 @item
1844 All other results are treated as though there were no available
1845 completions.
1846 @end itemize
1847 @end deffn
1848
1849 When a new command is registered, it will have been declared as a member of
1850 some general class of commands. This is used to classify top-level
1851 commands in the on-line help system; note that prefix commands are not
1852 listed under their own category but rather that of their top-level
1853 command. The available classifications are represented by constants
1854 defined in the @code{gdb} module:
1855
1856 @vtable @code
1857 @item COMMAND_NONE
1858 The command does not belong to any particular class. A command in
1859 this category will not be displayed in any of the help categories.
1860 This is the default.
1861
1862 @item COMMAND_RUNNING
1863 The command is related to running the inferior. For example,
1864 @code{start}, @code{step}, and @code{continue} are in this category.
1865 Type @kbd{help running} at the @value{GDBN} prompt to see a list of
1866 commands in this category.
1867
1868 @item COMMAND_DATA
1869 The command is related to data or variables. For example,
1870 @code{call}, @code{find}, and @code{print} are in this category. Type
1871 @kbd{help data} at the @value{GDBN} prompt to see a list of commands
1872 in this category.
1873
1874 @item COMMAND_STACK
1875 The command has to do with manipulation of the stack. For example,
1876 @code{backtrace}, @code{frame}, and @code{return} are in this
1877 category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
1878 list of commands in this category.
1879
1880 @item COMMAND_FILES
1881 This class is used for file-related commands. For example,
1882 @code{file}, @code{list} and @code{section} are in this category.
1883 Type @kbd{help files} at the @value{GDBN} prompt to see a list of
1884 commands in this category.
1885
1886 @item COMMAND_SUPPORT
1887 This should be used for ``support facilities'', generally meaning
1888 things that are useful to the user when interacting with @value{GDBN},
1889 but not related to the state of the inferior. For example,
1890 @code{help}, @code{make}, and @code{shell} are in this category. Type
1891 @kbd{help support} at the @value{GDBN} prompt to see a list of
1892 commands in this category.
1893
1894 @item COMMAND_STATUS
1895 The command is an @samp{info}-related command, that is, related to the
1896 state of @value{GDBN} itself. For example, @code{info}, @code{macro},
1897 and @code{show} are in this category. Type @kbd{help status} at the
1898 @value{GDBN} prompt to see a list of commands in this category.
1899
1900 @item COMMAND_BREAKPOINTS
1901 The command has to do with breakpoints. For example, @code{break},
1902 @code{clear}, and @code{delete} are in this category. Type @kbd{help
1903 breakpoints} at the @value{GDBN} prompt to see a list of commands in
1904 this category.
1905
1906 @item COMMAND_TRACEPOINTS
1907 The command has to do with tracepoints. For example, @code{trace},
1908 @code{actions}, and @code{tfind} are in this category. Type
1909 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
1910 commands in this category.
1911
1912 @item COMMAND_USER
1913 The command is a general purpose command for the user, and typically
1914 does not fit in one of the other categories.
1915 Type @kbd{help user-defined} at the @value{GDBN} prompt to see
1916 a list of commands in this category, as well as the list of gdb macros
1917 (@pxref{Sequences}).
1918
1919 @item COMMAND_OBSCURE
1920 The command is only used in unusual circumstances, or is not of
1921 general interest to users. For example, @code{checkpoint},
1922 @code{fork}, and @code{stop} are in this category. Type @kbd{help
1923 obscure} at the @value{GDBN} prompt to see a list of commands in this
1924 category.
1925
1926 @item COMMAND_MAINTENANCE
1927 The command is only useful to @value{GDBN} maintainers. The
1928 @code{maintenance} and @code{flushregs} commands are in this category.
1929 Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
1930 commands in this category.
1931 @end vtable
1932
1933 A new command can use a predefined completion function, either by
1934 specifying it via an argument at initialization, or by returning it
1935 from the @code{completer} procedure. These predefined completion
1936 constants are all defined in the @code{gdb} module:
1937
1938 @vtable @code
1939 @item COMPLETE_NONE
1940 This constant means that no completion should be done.
1941
1942 @item COMPLETE_FILENAME
1943 This constant means that filename completion should be performed.
1944
1945 @item COMPLETE_LOCATION
1946 This constant means that location completion should be done.
1947 @xref{Specify Location}.
1948
1949 @item COMPLETE_COMMAND
1950 This constant means that completion should examine @value{GDBN}
1951 command names.
1952
1953 @item COMPLETE_SYMBOL
1954 This constant means that completion should be done using symbol names
1955 as the source.
1956
1957 @item COMPLETE_EXPRESSION
1958 This constant means that completion should be done on expressions.
1959 Often this means completing on symbol names, but some language
1960 parsers also have support for completing on field names.
1961 @end vtable
1962
1963 The following code snippet shows how a trivial CLI command can be
1964 implemented in Guile:
1965
1966 @smallexample
1967 (gdb) guile
1968 (register-command! (make-command "hello-world"
1969 #:command-class COMMAND_USER
1970 #:doc "Greet the whole world."
1971 #:invoke (lambda (self args from-tty) (display "Hello, World!\n"))))
1972 end
1973 (gdb) hello-world
1974 Hello, World!
1975 @end smallexample
1976
1977 @node Parameters In Guile
1978 @subsubsection Parameters In Guile
1979
1980 @cindex parameters in guile
1981 @cindex guile parameters
1982 @tindex Parameter
1983 You can implement new @value{GDBN} @dfn{parameters} using Guile
1984 @footnote{Note that @value{GDBN} parameters must not be confused with
1985 Guile’s parameter objects (@pxref{Parameters,,, guile, GNU Guile
1986 Reference Manual}).}.
1987
1988 There are many parameters that already exist and can be set in
1989 @value{GDBN}. Two examples are: @code{set follow-fork} and
1990 @code{set charset}. Setting these parameters influences certain
1991 behavior in @value{GDBN}. Similarly, you can define parameters that
1992 can be used to influence behavior in custom Guile scripts and commands.
1993
1994 A new parameter is defined with the @code{make-parameter} Guile function,
1995 and added to @value{GDBN} with the @code{register-parameter!} Guile function.
1996 This two-step approach is taken to separate out the side-effect of adding
1997 the parameter to @value{GDBN} from @code{make-parameter}.
1998
1999 Parameters are exposed to the user via the @code{set} and
2000 @code{show} commands. @xref{Help}.
2001
2002 @c TODO line length
2003 @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{]})
2004
2005 The argument @var{name} is the name of the new parameter. If @var{name}
2006 consists of multiple words, then the initial words are looked for as prefix
2007 parameters. An example of this can be illustrated with the
2008 @code{set print} set of parameters. If @var{name} is
2009 @code{print foo}, then @code{print} will be searched as the prefix
2010 parameter. In this case the parameter can subsequently be accessed in
2011 @value{GDBN} as @code{set print foo}.
2012 If @var{name} consists of multiple words, and no prefix parameter group
2013 can be found, an exception is raised.
2014
2015 The result is the @code{<gdb:parameter>} object representing the parameter.
2016 The parameter is not usable until it has been registered with @value{GDBN}
2017 with @code{register-parameter!}.
2018
2019 The rest of the arguments are optional.
2020
2021 The argument @var{command-class} should be one of the @samp{COMMAND_} constants
2022 (@pxref{Commands In Guile}). This argument tells @value{GDBN} how to
2023 categorize the new parameter in the help system.
2024 The default is @code{COMMAND_NONE}.
2025
2026 The argument @var{parameter-type} should be one of the @samp{PARAM_} constants
2027 defined below. This argument tells @value{GDBN} the type of the new
2028 parameter; this information is used for input validation and
2029 completion. The default is @code{PARAM_BOOLEAN}.
2030
2031 If @var{parameter-type} is @code{PARAM_ENUM}, then
2032 @var{enum-list} must be a list of strings. These strings
2033 represent the possible values for the parameter.
2034
2035 If @var{parameter-type} is not @code{PARAM_ENUM}, then the presence
2036 of @var{enum-list} will cause an exception to be thrown.
2037
2038 The argument @var{set-func} is a function of one argument: @var{self} which
2039 is the @code{<gdb:parameter>} object representing the parameter.
2040 @value{GDBN} will call this function when a @var{parameter}'s value has
2041 been changed via the @code{set} API (for example, @kbd{set foo off}).
2042 The value of the parameter has already been set to the new value.
2043 This function must return a string to be displayed to the user.
2044 @value{GDBN} will add a trailing newline if the string is non-empty.
2045 @value{GDBN} generally doesn't print anything when a parameter is set,
2046 thus typically this function should return @samp{""}.
2047 A non-empty string result should typically be used for displaying warnings
2048 and errors.
2049
2050 The argument @var{show-func} is a function of two arguments: @var{self} which
2051 is the @code{<gdb:parameter>} object representing the parameter, and
2052 @var{svalue} which is the string representation of the current value.
2053 @value{GDBN} will call this function when a @var{parameter}'s
2054 @code{show} API has been invoked (for example, @kbd{show foo}).
2055 This function must return a string, and will be displayed to the user.
2056 @value{GDBN} will add a trailing newline.
2057
2058 The argument @var{doc} is the help text for the new parameter.
2059 If there is no documentation string, a default value is used.
2060
2061 The argument @var{set-doc} is the help text for this parameter's
2062 @code{set} command.
2063
2064 The argument @var{show-doc} is the help text for this parameter's
2065 @code{show} command.
2066
2067 The argument @var{initial-value} specifies the initial value of the parameter.
2068 If it is a function, it takes one parameter, the @code{<gdb:parameter>}
2069 object and its result is used as the initial value of the parameter.
2070 The initial value must be valid for the parameter type,
2071 otherwise an exception is thrown.
2072 @end deffn
2073
2074 @deffn {Scheme Procedure} register-parameter! parameter
2075 Add @var{parameter}, a @code{<gdb:parameter>} object, to @value{GDBN}'s
2076 list of parameters.
2077 It is an error to register a parameter more than once.
2078 The result is unspecified.
2079 @end deffn
2080
2081 @deffn {Scheme Procedure} parameter? object
2082 Return @code{#t} if @var{object} is a @code{<gdb:parameter>} object.
2083 Otherwise return @code{#f}.
2084 @end deffn
2085
2086 @deffn {Scheme Procedure} parameter-value parameter
2087 Return the value of @var{parameter} which may either be
2088 a @code{<gdb:parameter>} object or a string naming the parameter.
2089 @end deffn
2090
2091 @deffn {Scheme Procedure} set-parameter-value! parameter new-value
2092 Assign @var{parameter} the value of @var{new-value}.
2093 The argument @var{parameter} must be an object of type @code{<gdb:parameter>}.
2094 @value{GDBN} does validation when assignments are made.
2095 @end deffn
2096
2097 When a new parameter is defined, its type must be specified. The
2098 available types are represented by constants defined in the @code{gdb}
2099 module:
2100
2101 @vtable @code
2102 @item PARAM_BOOLEAN
2103 The value is a plain boolean. The Guile boolean values, @code{#t}
2104 and @code{#f} are the only valid values.
2105
2106 @item PARAM_AUTO_BOOLEAN
2107 The value has three possible states: true, false, and @samp{auto}. In
2108 Guile, true and false are represented using boolean constants, and
2109 @samp{auto} is represented using @code{#:auto}.
2110
2111 @item PARAM_UINTEGER
2112 The value is an unsigned integer. The value of 0 should be
2113 interpreted to mean ``unlimited''.
2114
2115 @item PARAM_ZINTEGER
2116 The value is an integer.
2117
2118 @item PARAM_ZUINTEGER
2119 The value is an unsigned integer.
2120
2121 @item PARAM_ZUINTEGER_UNLIMITED
2122 The value is an integer in the range @samp{[0, INT_MAX]}.
2123 A value of @samp{-1} means ``unlimited'', and other negative
2124 numbers are not allowed.
2125
2126 @item PARAM_STRING
2127 The value is a string. When the user modifies the string, any escape
2128 sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
2129 translated into corresponding characters and encoded into the current
2130 host charset.
2131
2132 @item PARAM_STRING_NOESCAPE
2133 The value is a string. When the user modifies the string, escapes are
2134 passed through untranslated.
2135
2136 @item PARAM_OPTIONAL_FILENAME
2137 The value is a either a filename (a string), or @code{#f}.
2138
2139 @item PARAM_FILENAME
2140 The value is a filename. This is just like
2141 @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
2142
2143 @item PARAM_ENUM
2144 The value is a string, which must be one of a collection of string
2145 constants provided when the parameter is created.
2146 @end vtable
2147
2148 @node Progspaces In Guile
2149 @subsubsection Program Spaces In Guile
2150
2151 @cindex progspaces in guile
2152 @tindex <gdb:progspace>
2153 A program space, or @dfn{progspace}, represents a symbolic view
2154 of an address space.
2155 It consists of all of the objfiles of the program.
2156 @xref{Objfiles In Guile}.
2157 @xref{Inferiors Connections and Programs, program spaces}, for more details
2158 about program spaces.
2159
2160 Each progspace is represented by an instance of the @code{<gdb:progspace>}
2161 smob. @xref{GDB Scheme Data Types}.
2162
2163 The following progspace-related functions are available in the
2164 @code{(gdb)} module:
2165
2166 @deffn {Scheme Procedure} progspace? object
2167 Return @code{#t} if @var{object} is a @code{<gdb:progspace>} object.
2168 Otherwise return @code{#f}.
2169 @end deffn
2170
2171 @deffn {Scheme Procedure} progspace-valid? progspace
2172 Return @code{#t} if @var{progspace} is valid, @code{#f} if not.
2173 A @code{<gdb:progspace>} object can become invalid
2174 if the program it refers to is not loaded in @value{GDBN} any longer.
2175 @end deffn
2176
2177 @deffn {Scheme Procedure} current-progspace
2178 This function returns the program space of the currently selected inferior.
2179 There is always a current progspace, this never returns @code{#f}.
2180 @xref{Inferiors Connections and Programs}.
2181 @end deffn
2182
2183 @deffn {Scheme Procedure} progspaces
2184 Return a list of all the progspaces currently known to @value{GDBN}.
2185 @end deffn
2186
2187 @deffn {Scheme Procedure} progspace-filename progspace
2188 Return the absolute file name of @var{progspace} as a string.
2189 This is the name of the file passed as the argument to the @code{file}
2190 or @code{symbol-file} commands.
2191 If the program space does not have an associated file name,
2192 then @code{#f} is returned. This occurs, for example, when @value{GDBN}
2193 is started without a program to debug.
2194
2195 A @code{gdb:invalid-object-error} exception is thrown if @var{progspace}
2196 is invalid.
2197 @end deffn
2198
2199 @deffn {Scheme Procedure} progspace-objfiles progspace
2200 Return the list of objfiles of @var{progspace}.
2201 The order of objfiles in the result is arbitrary.
2202 Each element is an object of type @code{<gdb:objfile>}.
2203 @xref{Objfiles In Guile}.
2204
2205 A @code{gdb:invalid-object-error} exception is thrown if @var{progspace}
2206 is invalid.
2207 @end deffn
2208
2209 @deffn {Scheme Procedure} progspace-pretty-printers progspace
2210 Return the list of pretty-printers of @var{progspace}.
2211 Each element is an object of type @code{<gdb:pretty-printer>}.
2212 @xref{Guile Pretty Printing API}, for more information.
2213 @end deffn
2214
2215 @deffn {Scheme Procedure} set-progspace-pretty-printers! progspace printer-list
2216 Set the list of registered @code{<gdb:pretty-printer>} objects for
2217 @var{progspace} to @var{printer-list}.
2218 @xref{Guile Pretty Printing API}, for more information.
2219 @end deffn
2220
2221 @node Objfiles In Guile
2222 @subsubsection Objfiles In Guile
2223
2224 @cindex objfiles in guile
2225 @tindex <gdb:objfile>
2226 @value{GDBN} loads symbols for an inferior from various
2227 symbol-containing files (@pxref{Files}). These include the primary
2228 executable file, any shared libraries used by the inferior, and any
2229 separate debug info files (@pxref{Separate Debug Files}).
2230 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
2231
2232 Each objfile is represented as an object of type @code{<gdb:objfile>}.
2233
2234 The following objfile-related procedures are provided by the
2235 @code{(gdb)} module:
2236
2237 @deffn {Scheme Procedure} objfile? object
2238 Return @code{#t} if @var{object} is a @code{<gdb:objfile>} object.
2239 Otherwise return @code{#f}.
2240 @end deffn
2241
2242 @deffn {Scheme Procedure} objfile-valid? objfile
2243 Return @code{#t} if @var{objfile} is valid, @code{#f} if not.
2244 A @code{<gdb:objfile>} object can become invalid
2245 if the object file it refers to is not loaded in @value{GDBN} any
2246 longer. All other @code{<gdb:objfile>} procedures will throw an exception
2247 if it is invalid at the time the procedure is called.
2248 @end deffn
2249
2250 @deffn {Scheme Procedure} objfile-filename objfile
2251 Return the file name of @var{objfile} as a string,
2252 with symbolic links resolved.
2253 @end deffn
2254
2255 @deffn {Scheme Procedure} objfile-progspace objfile
2256 Return the @code{<gdb:progspace>} that this object file lives in.
2257 @xref{Progspaces In Guile}, for more on progspaces.
2258 @end deffn
2259
2260 @deffn {Scheme Procedure} objfile-pretty-printers objfile
2261 Return the list of registered @code{<gdb:pretty-printer>} objects for
2262 @var{objfile}. @xref{Guile Pretty Printing API}, for more information.
2263 @end deffn
2264
2265 @deffn {Scheme Procedure} set-objfile-pretty-printers! objfile printer-list
2266 Set the list of registered @code{<gdb:pretty-printer>} objects for
2267 @var{objfile} to @var{printer-list}. The
2268 @var{printer-list} must be a list of @code{<gdb:pretty-printer>} objects.
2269 @xref{Guile Pretty Printing API}, for more information.
2270 @end deffn
2271
2272 @deffn {Scheme Procedure} current-objfile
2273 When auto-loading a Guile script (@pxref{Guile Auto-loading}), @value{GDBN}
2274 sets the ``current objfile'' to the corresponding objfile. This
2275 function returns the current objfile. If there is no current objfile,
2276 this function returns @code{#f}.
2277 @end deffn
2278
2279 @deffn {Scheme Procedure} objfiles
2280 Return a list of all the objfiles in the current program space.
2281 @end deffn
2282
2283 @node Frames In Guile
2284 @subsubsection Accessing inferior stack frames from Guile.
2285
2286 @cindex frames in guile
2287 When the debugged program stops, @value{GDBN} is able to analyze its call
2288 stack (@pxref{Frames,,Stack frames}). The @code{<gdb:frame>} class
2289 represents a frame in the stack. A @code{<gdb:frame>} object is only valid
2290 while its corresponding frame exists in the inferior's stack. If you try
2291 to use an invalid frame object, @value{GDBN} will throw a
2292 @code{gdb:invalid-object} exception (@pxref{Guile Exception Handling}).
2293
2294 Two @code{<gdb:frame>} objects can be compared for equality with the
2295 @code{equal?} function, like:
2296
2297 @smallexample
2298 (@value{GDBP}) guile (equal? (newest-frame) (selected-frame))
2299 #t
2300 @end smallexample
2301
2302 The following frame-related procedures are provided by the
2303 @code{(gdb)} module:
2304
2305 @deffn {Scheme Procedure} frame? object
2306 Return @code{#t} if @var{object} is a @code{<gdb:frame>} object.
2307 Otherwise return @code{#f}.
2308 @end deffn
2309
2310 @deffn {Scheme Procedure} frame-valid? frame
2311 Returns @code{#t} if @var{frame} is valid, @code{#f} if not.
2312 A frame object can become invalid if the frame it refers to doesn't
2313 exist anymore in the inferior. All @code{<gdb:frame>} procedures will throw
2314 an exception if the frame is invalid at the time the procedure is called.
2315 @end deffn
2316
2317 @deffn {Scheme Procedure} frame-name frame
2318 Return the function name of @var{frame}, or @code{#f} if it can't be
2319 obtained.
2320 @end deffn
2321
2322 @deffn {Scheme Procedure} frame-arch frame
2323 Return the @code{<gdb:architecture>} object corresponding to @var{frame}'s
2324 architecture. @xref{Architectures In Guile}.
2325 @end deffn
2326
2327 @deffn {Scheme Procedure} frame-type frame
2328 Return the type of @var{frame}. The value can be one of:
2329
2330 @table @code
2331 @item NORMAL_FRAME
2332 An ordinary stack frame.
2333
2334 @item DUMMY_FRAME
2335 A fake stack frame that was created by @value{GDBN} when performing an
2336 inferior function call.
2337
2338 @item INLINE_FRAME
2339 A frame representing an inlined function. The function was inlined
2340 into a @code{NORMAL_FRAME} that is older than this one.
2341
2342 @item TAILCALL_FRAME
2343 A frame representing a tail call. @xref{Tail Call Frames}.
2344
2345 @item SIGTRAMP_FRAME
2346 A signal trampoline frame. This is the frame created by the OS when
2347 it calls into a signal handler.
2348
2349 @item ARCH_FRAME
2350 A fake stack frame representing a cross-architecture call.
2351
2352 @item SENTINEL_FRAME
2353 This is like @code{NORMAL_FRAME}, but it is only used for the
2354 newest frame.
2355 @end table
2356 @end deffn
2357
2358 @deffn {Scheme Procedure} frame-unwind-stop-reason frame
2359 Return an integer representing the reason why it's not possible to find
2360 more frames toward the outermost frame. Use
2361 @code{unwind-stop-reason-string} to convert the value returned by this
2362 function to a string. The value can be one of:
2363
2364 @table @code
2365 @item FRAME_UNWIND_NO_REASON
2366 No particular reason (older frames should be available).
2367
2368 @item FRAME_UNWIND_NULL_ID
2369 The previous frame's analyzer returns an invalid result.
2370
2371 @item FRAME_UNWIND_OUTERMOST
2372 This frame is the outermost.
2373
2374 @item FRAME_UNWIND_UNAVAILABLE
2375 Cannot unwind further, because that would require knowing the
2376 values of registers or memory that have not been collected.
2377
2378 @item FRAME_UNWIND_INNER_ID
2379 This frame ID looks like it ought to belong to a NEXT frame,
2380 but we got it for a PREV frame. Normally, this is a sign of
2381 unwinder failure. It could also indicate stack corruption.
2382
2383 @item FRAME_UNWIND_SAME_ID
2384 This frame has the same ID as the previous one. That means
2385 that unwinding further would almost certainly give us another
2386 frame with exactly the same ID, so break the chain. Normally,
2387 this is a sign of unwinder failure. It could also indicate
2388 stack corruption.
2389
2390 @item FRAME_UNWIND_NO_SAVED_PC
2391 The frame unwinder did not find any saved PC, but we needed
2392 one to unwind further.
2393
2394 @item FRAME_UNWIND_MEMORY_ERROR
2395 The frame unwinder caused an error while trying to access memory.
2396
2397 @item FRAME_UNWIND_FIRST_ERROR
2398 Any stop reason greater or equal to this value indicates some kind
2399 of error. This special value facilitates writing code that tests
2400 for errors in unwinding in a way that will work correctly even if
2401 the list of the other values is modified in future @value{GDBN}
2402 versions. Using it, you could write:
2403
2404 @smallexample
2405 (define reason (frame-unwind-stop-readon (selected-frame)))
2406 (define reason-str (unwind-stop-reason-string reason))
2407 (if (>= reason FRAME_UNWIND_FIRST_ERROR)
2408 (format #t "An error occured: ~s\n" reason-str))
2409 @end smallexample
2410 @end table
2411 @end deffn
2412
2413 @deffn {Scheme Procedure} frame-pc frame
2414 Return the frame's resume address.
2415 @end deffn
2416
2417 @deffn {Scheme Procedure} frame-block frame
2418 Return the frame's code block as a @code{<gdb:block>} object.
2419 @xref{Blocks In Guile}.
2420 @end deffn
2421
2422 @deffn {Scheme Procedure} frame-function frame
2423 Return the symbol for the function corresponding to this frame
2424 as a @code{<gdb:symbol>} object, or @code{#f} if there isn't one.
2425 @xref{Symbols In Guile}.
2426 @end deffn
2427
2428 @deffn {Scheme Procedure} frame-older frame
2429 Return the frame that called @var{frame}.
2430 @end deffn
2431
2432 @deffn {Scheme Procedure} frame-newer frame
2433 Return the frame called by @var{frame}.
2434 @end deffn
2435
2436 @deffn {Scheme Procedure} frame-sal frame
2437 Return the frame's @code{<gdb:sal>} (symtab and line) object.
2438 @xref{Symbol Tables In Guile}.
2439 @end deffn
2440
2441 @deffn {Scheme Procedure} frame-read-register frame register
2442 Return the value of @var{register} in @var{frame}. @var{register}
2443 should be a string, like @samp{pc}.
2444 @end deffn
2445
2446 @deffn {Scheme Procedure} frame-read-var frame variable @r{[}#:block block@r{]}
2447 Return the value of @var{variable} in @var{frame}. If the optional
2448 argument @var{block} is provided, search for the variable from that
2449 block; otherwise start at the frame's current block (which is
2450 determined by the frame's current program counter). The
2451 @var{variable} must be given as a string or a @code{<gdb:symbol>}
2452 object, and @var{block} must be a @code{<gdb:block>} object.
2453 @end deffn
2454
2455 @deffn {Scheme Procedure} frame-select frame
2456 Set @var{frame} to be the selected frame. @xref{Stack, ,Examining the
2457 Stack}.
2458 @end deffn
2459
2460 @deffn {Scheme Procedure} selected-frame
2461 Return the selected frame object. @xref{Selection,,Selecting a Frame}.
2462 @end deffn
2463
2464 @deffn {Scheme Procedure} newest-frame
2465 Return the newest frame object for the selected thread.
2466 @end deffn
2467
2468 @deffn {Scheme Procedure} unwind-stop-reason-string reason
2469 Return a string explaining the reason why @value{GDBN} stopped unwinding
2470 frames, as expressed by the given @var{reason} code (an integer, see the
2471 @code{frame-unwind-stop-reason} procedure above in this section).
2472 @end deffn
2473
2474 @node Blocks In Guile
2475 @subsubsection Accessing blocks from Guile.
2476
2477 @cindex blocks in guile
2478 @tindex <gdb:block>
2479
2480 In @value{GDBN}, symbols are stored in blocks. A block corresponds
2481 roughly to a scope in the source code. Blocks are organized
2482 hierarchically, and are represented individually in Guile as an object
2483 of type @code{<gdb:block>}. Blocks rely on debugging information being
2484 available.
2485
2486 A frame has a block. Please see @ref{Frames In Guile}, for a more
2487 in-depth discussion of frames.
2488
2489 The outermost block is known as the @dfn{global block}. The global
2490 block typically holds public global variables and functions.
2491
2492 The block nested just inside the global block is the @dfn{static
2493 block}. The static block typically holds file-scoped variables and
2494 functions.
2495
2496 @value{GDBN} provides a method to get a block's superblock, but there
2497 is currently no way to examine the sub-blocks of a block, or to
2498 iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
2499 Guile}).
2500
2501 Here is a short example that should help explain blocks:
2502
2503 @smallexample
2504 /* This is in the global block. */
2505 int global;
2506
2507 /* This is in the static block. */
2508 static int file_scope;
2509
2510 /* 'function' is in the global block, and 'argument' is
2511 in a block nested inside of 'function'. */
2512 int function (int argument)
2513 @{
2514 /* 'local' is in a block inside 'function'. It may or may
2515 not be in the same block as 'argument'. */
2516 int local;
2517
2518 @{
2519 /* 'inner' is in a block whose superblock is the one holding
2520 'local'. */
2521 int inner;
2522
2523 /* If this call is expanded by the compiler, you may see
2524 a nested block here whose function is 'inline_function'
2525 and whose superblock is the one holding 'inner'. */
2526 inline_function ();
2527 @}
2528 @}
2529 @end smallexample
2530
2531 The following block-related procedures are provided by the
2532 @code{(gdb)} module:
2533
2534 @deffn {Scheme Procedure} block? object
2535 Return @code{#t} if @var{object} is a @code{<gdb:block>} object.
2536 Otherwise return @code{#f}.
2537 @end deffn
2538
2539 @deffn {Scheme Procedure} block-valid? block
2540 Returns @code{#t} if @code{<gdb:block>} @var{block} is valid,
2541 @code{#f} if not. A block object can become invalid if the block it
2542 refers to doesn't exist anymore in the inferior. All other
2543 @code{<gdb:block>} methods will throw an exception if it is invalid at
2544 the time the procedure is called. The block's validity is also checked
2545 during iteration over symbols of the block.
2546 @end deffn
2547
2548 @deffn {Scheme Procedure} block-start block
2549 Return the start address of @code{<gdb:block>} @var{block}.
2550 @end deffn
2551
2552 @deffn {Scheme Procedure} block-end block
2553 Return the end address of @code{<gdb:block>} @var{block}.
2554 @end deffn
2555
2556 @deffn {Scheme Procedure} block-function block
2557 Return the name of @code{<gdb:block>} @var{block} represented as a
2558 @code{<gdb:symbol>} object.
2559 If the block is not named, then @code{#f} is returned.
2560
2561 For ordinary function blocks, the superblock is the static block.
2562 However, you should note that it is possible for a function block to
2563 have a superblock that is not the static block -- for instance this
2564 happens for an inlined function.
2565 @end deffn
2566
2567 @deffn {Scheme Procedure} block-superblock block
2568 Return the block containing @code{<gdb:block>} @var{block}.
2569 If the parent block does not exist, then @code{#f} is returned.
2570 @end deffn
2571
2572 @deffn {Scheme Procedure} block-global-block block
2573 Return the global block associated with @code{<gdb:block>} @var{block}.
2574 @end deffn
2575
2576 @deffn {Scheme Procedure} block-static-block block
2577 Return the static block associated with @code{<gdb:block>} @var{block}.
2578 @end deffn
2579
2580 @deffn {Scheme Procedure} block-global? block
2581 Return @code{#t} if @code{<gdb:block>} @var{block} is a global block.
2582 Otherwise return @code{#f}.
2583 @end deffn
2584
2585 @deffn {Scheme Procedure} block-static? block
2586 Return @code{#t} if @code{<gdb:block>} @var{block} is a static block.
2587 Otherwise return @code{#f}.
2588 @end deffn
2589
2590 @deffn {Scheme Procedure} block-symbols
2591 Return a list of all symbols (as <gdb:symbol> objects) in
2592 @code{<gdb:block>} @var{block}.
2593 @end deffn
2594
2595 @deffn {Scheme Procedure} make-block-symbols-iterator block
2596 Return an object of type @code{<gdb:iterator>} that will iterate
2597 over all symbols of the block.
2598 Guile programs should not assume that a specific block object will
2599 always contain a given symbol, since changes in @value{GDBN} features and
2600 infrastructure may cause symbols move across blocks in a symbol table.
2601 @xref{Iterators In Guile}.
2602 @end deffn
2603
2604 @deffn {Scheme Procedure} block-symbols-progress?
2605 Return #t if the object is a <gdb:block-symbols-progress> object.
2606 This object would be obtained from the @code{progress} element of the
2607 @code{<gdb:iterator>} object returned by @code{make-block-symbols-iterator}.
2608 @end deffn
2609
2610 @deffn {Scheme Procedure} lookup-block pc
2611 Return the innermost @code{<gdb:block>} containing the given @var{pc}
2612 value. If the block cannot be found for the @var{pc} value specified,
2613 the function will return @code{#f}.
2614 @end deffn
2615
2616 @node Symbols In Guile
2617 @subsubsection Guile representation of Symbols.
2618
2619 @cindex symbols in guile
2620 @tindex <gdb:symbol>
2621
2622 @value{GDBN} represents every variable, function and type as an
2623 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
2624 Guile represents these symbols in @value{GDBN} with the
2625 @code{<gdb:symbol>} object.
2626
2627 The following symbol-related procedures are provided by the
2628 @code{(gdb)} module:
2629
2630 @deffn {Scheme Procedure} symbol? object
2631 Return @code{#t} if @var{object} is an object of type @code{<gdb:symbol>}.
2632 Otherwise return @code{#f}.
2633 @end deffn
2634
2635 @deffn {Scheme Procedure} symbol-valid? symbol
2636 Return @code{#t} if the @code{<gdb:symbol>} object is valid,
2637 @code{#f} if not. A @code{<gdb:symbol>} object can become invalid if
2638 the symbol it refers to does not exist in @value{GDBN} any longer.
2639 All other @code{<gdb:symbol>} procedures will throw an exception if it is
2640 invalid at the time the procedure is called.
2641 @end deffn
2642
2643 @deffn {Scheme Procedure} symbol-type symbol
2644 Return the type of @var{symbol} or @code{#f} if no type is recorded.
2645 The result is an object of type @code{<gdb:type>}.
2646 @xref{Types In Guile}.
2647 @end deffn
2648
2649 @deffn {Scheme Procedure} symbol-symtab symbol
2650 Return the symbol table in which @var{symbol} appears.
2651 The result is an object of type @code{<gdb:symtab>}.
2652 @xref{Symbol Tables In Guile}.
2653 @end deffn
2654
2655 @deffn {Scheme Procedure} symbol-line symbol
2656 Return the line number in the source code at which @var{symbol} was defined.
2657 This is an integer.
2658 @end deffn
2659
2660 @deffn {Scheme Procedure} symbol-name symbol
2661 Return the name of @var{symbol} as a string.
2662 @end deffn
2663
2664 @deffn {Scheme Procedure} symbol-linkage-name symbol
2665 Return the name of @var{symbol}, as used by the linker (i.e., may be mangled).
2666 @end deffn
2667
2668 @deffn {Scheme Procedure} symbol-print-name symbol
2669 Return the name of @var{symbol} in a form suitable for output. This is either
2670 @code{name} or @code{linkage_name}, depending on whether the user
2671 asked @value{GDBN} to display demangled or mangled names.
2672 @end deffn
2673
2674 @deffn {Scheme Procedure} symbol-addr-class symbol
2675 Return the address class of the symbol. This classifies how to find the value
2676 of a symbol. Each address class is a constant defined in the
2677 @code{(gdb)} module and described later in this chapter.
2678 @end deffn
2679
2680 @deffn {Scheme Procedure} symbol-needs-frame? symbol
2681 Return @code{#t} if evaluating @var{symbol}'s value requires a frame
2682 (@pxref{Frames In Guile}) and @code{#f} otherwise. Typically,
2683 local variables will require a frame, but other symbols will not.
2684 @end deffn
2685
2686 @deffn {Scheme Procedure} symbol-argument? symbol
2687 Return @code{#t} if @var{symbol} is an argument of a function.
2688 Otherwise return @code{#f}.
2689 @end deffn
2690
2691 @deffn {Scheme Procedure} symbol-constant? symbol
2692 Return @code{#t} if @var{symbol} is a constant.
2693 Otherwise return @code{#f}.
2694 @end deffn
2695
2696 @deffn {Scheme Procedure} symbol-function? symbol
2697 Return @code{#t} if @var{symbol} is a function or a method.
2698 Otherwise return @code{#f}.
2699 @end deffn
2700
2701 @deffn {Scheme Procedure} symbol-variable? symbol
2702 Return @code{#t} if @var{symbol} is a variable.
2703 Otherwise return @code{#f}.
2704 @end deffn
2705
2706 @deffn {Scheme Procedure} symbol-value symbol @r{[}#:frame frame@r{]}
2707 Compute the value of @var{symbol}, as a @code{<gdb:value>}. For
2708 functions, this computes the address of the function, cast to the
2709 appropriate type. If the symbol requires a frame in order to compute
2710 its value, then @var{frame} must be given. If @var{frame} is not
2711 given, or if @var{frame} is invalid, then an exception is thrown.
2712 @end deffn
2713
2714 @c TODO: line length
2715 @deffn {Scheme Procedure} lookup-symbol name @r{[}#:block block@r{]} @r{[}#:domain domain@r{]}
2716 This function searches for a symbol by name. The search scope can be
2717 restricted to the parameters defined in the optional domain and block
2718 arguments.
2719
2720 @var{name} is the name of the symbol. It must be a string. The
2721 optional @var{block} argument restricts the search to symbols visible
2722 in that @var{block}. The @var{block} argument must be a
2723 @code{<gdb:block>} object. If omitted, the block for the current frame
2724 is used. The optional @var{domain} argument restricts
2725 the search to the domain type. The @var{domain} argument must be a
2726 domain constant defined in the @code{(gdb)} module and described later
2727 in this chapter.
2728
2729 The result is a list of two elements.
2730 The first element is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2731 is not found.
2732 If the symbol is found, the second element is @code{#t} if the symbol
2733 is a field of a method's object (e.g., @code{this} in C@t{++}),
2734 otherwise it is @code{#f}.
2735 If the symbol is not found, the second element is @code{#f}.
2736 @end deffn
2737
2738 @deffn {Scheme Procedure} lookup-global-symbol name @r{[}#:domain domain@r{]}
2739 This function searches for a global symbol by name.
2740 The search scope can be restricted by the domain argument.
2741
2742 @var{name} is the name of the symbol. It must be a string.
2743 The optional @var{domain} argument restricts the search to the domain type.
2744 The @var{domain} argument must be a domain constant defined in the @code{(gdb)}
2745 module and described later in this chapter.
2746
2747 The result is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2748 is not found.
2749 @end deffn
2750
2751 The available domain categories in @code{<gdb:symbol>} are represented
2752 as constants in the @code{(gdb)} module:
2753
2754 @vtable @code
2755 @item SYMBOL_UNDEF_DOMAIN
2756 This is used when a domain has not been discovered or none of the
2757 following domains apply. This usually indicates an error either
2758 in the symbol information or in @value{GDBN}'s handling of symbols.
2759
2760 @item SYMBOL_VAR_DOMAIN
2761 This domain contains variables, function names, typedef names and enum
2762 type values.
2763
2764 @item SYMBOL_STRUCT_DOMAIN
2765 This domain holds struct, union and enum type names.
2766
2767 @item SYMBOL_LABEL_DOMAIN
2768 This domain contains names of labels (for gotos).
2769
2770 @item SYMBOL_VARIABLES_DOMAIN
2771 This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
2772 contains everything minus functions and types.
2773
2774 @item SYMBOL_FUNCTIONS_DOMAIN
2775 This domain contains all functions.
2776
2777 @item SYMBOL_TYPES_DOMAIN
2778 This domain contains all types.
2779 @end vtable
2780
2781 The available address class categories in @code{<gdb:symbol>} are represented
2782 as constants in the @code{gdb} module:
2783
2784 @vtable @code
2785 @item SYMBOL_LOC_UNDEF
2786 If this is returned by address class, it indicates an error either in
2787 the symbol information or in @value{GDBN}'s handling of symbols.
2788
2789 @item SYMBOL_LOC_CONST
2790 Value is constant int.
2791
2792 @item SYMBOL_LOC_STATIC
2793 Value is at a fixed address.
2794
2795 @item SYMBOL_LOC_REGISTER
2796 Value is in a register.
2797
2798 @item SYMBOL_LOC_ARG
2799 Value is an argument. This value is at the offset stored within the
2800 symbol inside the frame's argument list.
2801
2802 @item SYMBOL_LOC_REF_ARG
2803 Value address is stored in the frame's argument list. Just like
2804 @code{LOC_ARG} except that the value's address is stored at the
2805 offset, not the value itself.
2806
2807 @item SYMBOL_LOC_REGPARM_ADDR
2808 Value is a specified register. Just like @code{LOC_REGISTER} except
2809 the register holds the address of the argument instead of the argument
2810 itself.
2811
2812 @item SYMBOL_LOC_LOCAL
2813 Value is a local variable.
2814
2815 @item SYMBOL_LOC_TYPEDEF
2816 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
2817 have this class.
2818
2819 @item SYMBOL_LOC_BLOCK
2820 Value is a block.
2821
2822 @item SYMBOL_LOC_CONST_BYTES
2823 Value is a byte-sequence.
2824
2825 @item SYMBOL_LOC_UNRESOLVED
2826 Value is at a fixed address, but the address of the variable has to be
2827 determined from the minimal symbol table whenever the variable is
2828 referenced.
2829
2830 @item SYMBOL_LOC_OPTIMIZED_OUT
2831 The value does not actually exist in the program.
2832
2833 @item SYMBOL_LOC_COMPUTED
2834 The value's address is a computed location.
2835 @end vtable
2836
2837 @node Symbol Tables In Guile
2838 @subsubsection Symbol table representation in Guile.
2839
2840 @cindex symbol tables in guile
2841 @tindex <gdb:symtab>
2842 @tindex <gdb:sal>
2843
2844 Access to symbol table data maintained by @value{GDBN} on the inferior
2845 is exposed to Guile via two objects: @code{<gdb:sal>} (symtab-and-line) and
2846 @code{<gdb:symtab>}. Symbol table and line data for a frame is returned
2847 from the @code{frame-find-sal} @code{<gdb:frame>} procedure.
2848 @xref{Frames In Guile}.
2849
2850 For more information on @value{GDBN}'s symbol table management, see
2851 @ref{Symbols, ,Examining the Symbol Table}.
2852
2853 The following symtab-related procedures are provided by the
2854 @code{(gdb)} module:
2855
2856 @deffn {Scheme Procedure} symtab? object
2857 Return @code{#t} if @var{object} is an object of type @code{<gdb:symtab>}.
2858 Otherwise return @code{#f}.
2859 @end deffn
2860
2861 @deffn {Scheme Procedure} symtab-valid? symtab
2862 Return @code{#t} if the @code{<gdb:symtab>} object is valid,
2863 @code{#f} if not. A @code{<gdb:symtab>} object becomes invalid when
2864 the symbol table it refers to no longer exists in @value{GDBN}.
2865 All other @code{<gdb:symtab>} procedures will throw an exception
2866 if it is invalid at the time the procedure is called.
2867 @end deffn
2868
2869 @deffn {Scheme Procedure} symtab-filename symtab
2870 Return the symbol table's source filename.
2871 @end deffn
2872
2873 @deffn {Scheme Procedure} symtab-fullname symtab
2874 Return the symbol table's source absolute file name.
2875 @end deffn
2876
2877 @deffn {Scheme Procedure} symtab-objfile symtab
2878 Return the symbol table's backing object file. @xref{Objfiles In Guile}.
2879 @end deffn
2880
2881 @deffn {Scheme Procedure} symtab-global-block symtab
2882 Return the global block of the underlying symbol table.
2883 @xref{Blocks In Guile}.
2884 @end deffn
2885
2886 @deffn {Scheme Procedure} symtab-static-block symtab
2887 Return the static block of the underlying symbol table.
2888 @xref{Blocks In Guile}.
2889 @end deffn
2890
2891 The following symtab-and-line-related procedures are provided by the
2892 @code{(gdb)} module:
2893
2894 @deffn {Scheme Procedure} sal? object
2895 Return @code{#t} if @var{object} is an object of type @code{<gdb:sal>}.
2896 Otherwise return @code{#f}.
2897 @end deffn
2898
2899 @deffn {Scheme Procedure} sal-valid? sal
2900 Return @code{#t} if @var{sal} is valid, @code{#f} if not.
2901 A @code{<gdb:sal>} object becomes invalid when the Symbol table object
2902 it refers to no longer exists in @value{GDBN}. All other
2903 @code{<gdb:sal>} procedures will throw an exception if it is
2904 invalid at the time the procedure is called.
2905 @end deffn
2906
2907 @deffn {Scheme Procedure} sal-symtab sal
2908 Return the symbol table object (@code{<gdb:symtab>}) for @var{sal}.
2909 @end deffn
2910
2911 @deffn {Scheme Procedure} sal-line sal
2912 Return the line number for @var{sal}.
2913 @end deffn
2914
2915 @deffn {Scheme Procedure} sal-pc sal
2916 Return the start of the address range occupied by code for @var{sal}.
2917 @end deffn
2918
2919 @deffn {Scheme Procedure} sal-last sal
2920 Return the end of the address range occupied by code for @var{sal}.
2921 @end deffn
2922
2923 @deffn {Scheme Procedure} find-pc-line pc
2924 Return the @code{<gdb:sal>} object corresponding to the @var{pc} value.
2925 If an invalid value of @var{pc} is passed as an argument, then the
2926 @code{symtab} and @code{line} attributes of the returned @code{<gdb:sal>}
2927 object will be @code{#f} and 0 respectively.
2928 @end deffn
2929
2930 @node Breakpoints In Guile
2931 @subsubsection Manipulating breakpoints using Guile
2932
2933 @cindex breakpoints in guile
2934 @tindex <gdb:breakpoint>
2935
2936 Breakpoints in Guile are represented by objects of type
2937 @code{<gdb:breakpoint>}. New breakpoints can be created with the
2938 @code{make-breakpoint} Guile function, and then added to @value{GDBN} with the
2939 @code{register-breakpoint!} Guile function.
2940 This two-step approach is taken to separate out the side-effect of adding
2941 the breakpoint to @value{GDBN} from @code{make-breakpoint}.
2942
2943 Support is also provided to view and manipulate breakpoints created
2944 outside of Guile.
2945
2946 The following breakpoint-related procedures are provided by the
2947 @code{(gdb)} module:
2948
2949 @c TODO: line length
2950 @deffn {Scheme Procedure} make-breakpoint location @r{[}#:type type@r{]} @r{[}#:wp-class wp-class@r{]} @r{[}#:internal internal@r{]}
2951 Create a new breakpoint at @var{location}, a string naming the
2952 location of the breakpoint, or an expression that defines a watchpoint.
2953 The contents can be any location recognized by the @code{break} command,
2954 or in the case of a watchpoint, by the @code{watch} command.
2955
2956 The breakpoint is initially marked as @samp{invalid}.
2957 The breakpoint is not usable until it has been registered with @value{GDBN}
2958 with @code{register-breakpoint!}, at which point it becomes @samp{valid}.
2959 The result is the @code{<gdb:breakpoint>} object representing the breakpoint.
2960
2961 The optional @var{type} denotes the breakpoint to create.
2962 This argument can be either @code{BP_BREAKPOINT} or @code{BP_WATCHPOINT},
2963 and defaults to @code{BP_BREAKPOINT}.
2964
2965 The optional @var{wp-class} argument defines the class of watchpoint to
2966 create, if @var{type} is @code{BP_WATCHPOINT}. If a watchpoint class is
2967 not provided, it is assumed to be a @code{WP_WRITE} class.
2968
2969 The optional @var{internal} argument allows the breakpoint to become
2970 invisible to the user. The breakpoint will neither be reported when
2971 registered, nor will it be listed in the output from @code{info breakpoints}
2972 (but will be listed with the @code{maint info breakpoints} command).
2973 If an internal flag is not provided, the breakpoint is visible
2974 (non-internal).
2975
2976 When a watchpoint is created, @value{GDBN} will try to create a
2977 hardware assisted watchpoint. If successful, the type of the watchpoint
2978 is changed from @code{BP_WATCHPOINT} to @code{BP_HARDWARE_WATCHPOINT}
2979 for @code{WP_WRITE}, @code{BP_READ_WATCHPOINT} for @code{WP_READ},
2980 and @code{BP_ACCESS_WATCHPOINT} for @code{WP_ACCESS}.
2981 If not successful, the type of the watchpoint is left as @code{WP_WATCHPOINT}.
2982
2983 The available types are represented by constants defined in the @code{gdb}
2984 module:
2985
2986 @vtable @code
2987 @item BP_BREAKPOINT
2988 Normal code breakpoint.
2989
2990 @item BP_WATCHPOINT
2991 Watchpoint breakpoint.
2992
2993 @item BP_HARDWARE_WATCHPOINT
2994 Hardware assisted watchpoint.
2995 This value cannot be specified when creating the breakpoint.
2996
2997 @item BP_READ_WATCHPOINT
2998 Hardware assisted read watchpoint.
2999 This value cannot be specified when creating the breakpoint.
3000
3001 @item BP_ACCESS_WATCHPOINT
3002 Hardware assisted access watchpoint.
3003 This value cannot be specified when creating the breakpoint.
3004 @end vtable
3005
3006 The available watchpoint types represented by constants are defined in the
3007 @code{(gdb)} module:
3008
3009 @vtable @code
3010 @item WP_READ
3011 Read only watchpoint.
3012
3013 @item WP_WRITE
3014 Write only watchpoint.
3015
3016 @item WP_ACCESS
3017 Read/Write watchpoint.
3018 @end vtable
3019
3020 @end deffn
3021
3022 @deffn {Scheme Procedure} register-breakpoint! breakpoint
3023 Add @var{breakpoint}, a @code{<gdb:breakpoint>} object, to @value{GDBN}'s
3024 list of breakpoints. The breakpoint must have been created with
3025 @code{make-breakpoint}. One cannot register breakpoints that have been
3026 created outside of Guile. Once a breakpoint is registered it becomes
3027 @samp{valid}.
3028 It is an error to register an already registered breakpoint.
3029 The result is unspecified.
3030 @end deffn
3031
3032 @deffn {Scheme Procedure} delete-breakpoint! breakpoint
3033 Remove @var{breakpoint} from @value{GDBN}'s list of breakpoints.
3034 This also invalidates the Guile @var{breakpoint} object.
3035 Any further attempt to access the object will throw an exception.
3036
3037 If @var{breakpoint} was created from Guile with @code{make-breakpoint}
3038 it may be re-registered with @value{GDBN}, in which case the breakpoint
3039 becomes valid again.
3040 @end deffn
3041
3042 @deffn {Scheme Procedure} breakpoints
3043 Return a list of all breakpoints.
3044 Each element of the list is a @code{<gdb:breakpoint>} object.
3045 @end deffn
3046
3047 @deffn {Scheme Procedure} breakpoint? object
3048 Return @code{#t} if @var{object} is a @code{<gdb:breakpoint>} object,
3049 and @code{#f} otherwise.
3050 @end deffn
3051
3052 @deffn {Scheme Procedure} breakpoint-valid? breakpoint
3053 Return @code{#t} if @var{breakpoint} is valid, @code{#f} otherwise.
3054 Breakpoints created with @code{make-breakpoint} are marked as invalid
3055 until they are registered with @value{GDBN} with @code{register-breakpoint!}.
3056 A @code{<gdb:breakpoint>} object can become invalid
3057 if the user deletes the breakpoint. In this case, the object still
3058 exists, but the underlying breakpoint does not. In the cases of
3059 watchpoint scope, the watchpoint remains valid even if execution of the
3060 inferior leaves the scope of that watchpoint.
3061 @end deffn
3062
3063 @deffn {Scheme Procedure} breakpoint-number breakpoint
3064 Return the breakpoint's number --- the identifier used by
3065 the user to manipulate the breakpoint.
3066 @end deffn
3067
3068 @deffn {Scheme Procedure} breakpoint-type breakpoint
3069 Return the breakpoint's type --- the identifier used to
3070 determine the actual breakpoint type or use-case.
3071 @end deffn
3072
3073 @deffn {Scheme Procedure} breakpoint-visible? breakpoint
3074 Return @code{#t} if the breakpoint is visible to the user
3075 when hit, or when the @samp{info breakpoints} command is run.
3076 Otherwise return @code{#f}.
3077 @end deffn
3078
3079 @deffn {Scheme Procedure} breakpoint-location breakpoint
3080 Return the location of the breakpoint, as specified by
3081 the user. It is a string. If the breakpoint does not have a location
3082 (that is, it is a watchpoint) return @code{#f}.
3083 @end deffn
3084
3085 @deffn {Scheme Procedure} breakpoint-expression breakpoint
3086 Return the breakpoint expression, as specified by the user. It is a string.
3087 If the breakpoint does not have an expression (the breakpoint is not a
3088 watchpoint) return @code{#f}.
3089 @end deffn
3090
3091 @deffn {Scheme Procedure} breakpoint-enabled? breakpoint
3092 Return @code{#t} if the breakpoint is enabled, and @code{#f} otherwise.
3093 @end deffn
3094
3095 @deffn {Scheme Procedure} set-breakpoint-enabled! breakpoint flag
3096 Set the enabled state of @var{breakpoint} to @var{flag}.
3097 If flag is @code{#f} it is disabled, otherwise it is enabled.
3098 @end deffn
3099
3100 @deffn {Scheme Procedure} breakpoint-silent? breakpoint
3101 Return @code{#t} if the breakpoint is silent, and @code{#f} otherwise.
3102
3103 Note that a breakpoint can also be silent if it has commands and the
3104 first command is @code{silent}. This is not reported by the
3105 @code{silent} attribute.
3106 @end deffn
3107
3108 @deffn {Scheme Procedure} set-breakpoint-silent! breakpoint flag
3109 Set the silent state of @var{breakpoint} to @var{flag}.
3110 If flag is @code{#f} the breakpoint is made silent,
3111 otherwise it is made non-silent (or noisy).
3112 @end deffn
3113
3114 @deffn {Scheme Procedure} breakpoint-ignore-count breakpoint
3115 Return the ignore count for @var{breakpoint}.
3116 @end deffn
3117
3118 @deffn {Scheme Procedure} set-breakpoint-ignore-count! breakpoint count
3119 Set the ignore count for @var{breakpoint} to @var{count}.
3120 @end deffn
3121
3122 @deffn {Scheme Procedure} breakpoint-hit-count breakpoint
3123 Return hit count of @var{breakpoint}.
3124 @end deffn
3125
3126 @deffn {Scheme Procedure} set-breakpoint-hit-count! breakpoint count
3127 Set the hit count of @var{breakpoint} to @var{count}.
3128 At present, @var{count} must be zero.
3129 @end deffn
3130
3131 @deffn {Scheme Procedure} breakpoint-thread breakpoint
3132 Return the global-thread-id for thread-specific breakpoint
3133 @var{breakpoint}. Return #f if @var{breakpoint} is not
3134 thread-specific.
3135 @end deffn
3136
3137 @deffn {Scheme Procedure} set-breakpoint-thread! breakpoint global-thread-id|#f
3138 Set the thread-id for @var{breakpoint} to @var{global-thread-id} If
3139 set to @code{#f}, the breakpoint is no longer thread-specific.
3140 @end deffn
3141
3142 @deffn {Scheme Procedure} breakpoint-task breakpoint
3143 If the breakpoint is Ada task-specific, return the Ada task id.
3144 If the breakpoint is not task-specific (or the underlying
3145 language is not Ada), return @code{#f}.
3146 @end deffn
3147
3148 @deffn {Scheme Procedure} set-breakpoint-task! breakpoint task
3149 Set the Ada task of @var{breakpoint} to @var{task}.
3150 If set to @code{#f}, the breakpoint is no longer task-specific.
3151 @end deffn
3152
3153 @deffn {Scheme Procedure} breakpoint-condition breakpoint
3154 Return the condition of @var{breakpoint}, as specified by the user.
3155 It is a string. If there is no condition, return @code{#f}.
3156 @end deffn
3157
3158 @deffn {Scheme Procedure} set-breakpoint-condition! breakpoint condition
3159 Set the condition of @var{breakpoint} to @var{condition},
3160 which must be a string. If set to @code{#f} then the breakpoint
3161 becomes unconditional.
3162 @end deffn
3163
3164 @deffn {Scheme Procedure} breakpoint-stop breakpoint
3165 Return the stop predicate of @var{breakpoint}.
3166 See @code{set-breakpoint-stop!} below in this section.
3167 @end deffn
3168
3169 @deffn {Scheme Procedure} set-breakpoint-stop! breakpoint procedure|#f
3170 Set the stop predicate of @var{breakpoint}. The predicate
3171 @var{procedure} takes one argument: the <gdb:breakpoint> object.
3172 If this predicate is set to a procedure then it is invoked whenever
3173 the inferior reaches this breakpoint. If it returns @code{#t},
3174 or any non-@code{#f} value, then the inferior is stopped,
3175 otherwise the inferior will continue.
3176
3177 If there are multiple breakpoints at the same location with a
3178 @code{stop} predicate, each one will be called regardless of the
3179 return status of the previous. This ensures that all @code{stop}
3180 predicates have a chance to execute at that location. In this scenario
3181 if one of the methods returns @code{#t} but the others return
3182 @code{#f}, the inferior will still be stopped.
3183
3184 You should not alter the execution state of the inferior (i.e.@:, step,
3185 next, etc.), alter the current frame context (i.e.@:, change the current
3186 active frame), or alter, add or delete any breakpoint. As a general
3187 rule, you should not alter any data within @value{GDBN} or the inferior
3188 at this time.
3189
3190 Example @code{stop} implementation:
3191
3192 @smallexample
3193 (define (my-stop? bkpt)
3194 (let ((int-val (parse-and-eval "foo")))
3195 (value=? int-val 3)))
3196 (define bkpt (make-breakpoint "main.c:42"))
3197 (register-breakpoint! bkpt)
3198 (set-breakpoint-stop! bkpt my-stop?)
3199 @end smallexample
3200 @end deffn
3201
3202 @deffn {Scheme Procedure} breakpoint-commands breakpoint
3203 Return the commands attached to @var{breakpoint} as a string,
3204 or @code{#f} if there are none.
3205 @end deffn
3206
3207 @node Lazy Strings In Guile
3208 @subsubsection Guile representation of lazy strings.
3209
3210 @cindex lazy strings in guile
3211 @tindex <gdb:lazy-string>
3212
3213 A @dfn{lazy string} is a string whose contents is not retrieved or
3214 encoded until it is needed.
3215
3216 A @code{<gdb:lazy-string>} is represented in @value{GDBN} as an
3217 @code{address} that points to a region of memory, an @code{encoding}
3218 that will be used to encode that region of memory, and a @code{length}
3219 to delimit the region of memory that represents the string. The
3220 difference between a @code{<gdb:lazy-string>} and a string wrapped within
3221 a @code{<gdb:value>} is that a @code{<gdb:lazy-string>} will be treated
3222 differently by @value{GDBN} when printing. A @code{<gdb:lazy-string>} is
3223 retrieved and encoded during printing, while a @code{<gdb:value>}
3224 wrapping a string is immediately retrieved and encoded on creation.
3225
3226 The following lazy-string-related procedures are provided by the
3227 @code{(gdb)} module:
3228
3229 @deffn {Scheme Procedure} lazy-string? object
3230 Return @code{#t} if @var{object} is an object of type @code{<gdb:lazy-string>}.
3231 Otherwise return @code{#f}.
3232 @end deffn
3233
3234 @deffn {Scheme Procedure} lazy-string-address lazy-sring
3235 Return the address of @var{lazy-string}.
3236 @end deffn
3237
3238 @deffn {Scheme Procedure} lazy-string-length lazy-string
3239 Return the length of @var{lazy-string} in characters. If the
3240 length is -1, then the string will be fetched and encoded up to the
3241 first null of appropriate width.
3242 @end deffn
3243
3244 @deffn {Scheme Procedure} lazy-string-encoding lazy-string
3245 Return the encoding that will be applied to @var{lazy-string}
3246 when the string is printed by @value{GDBN}. If the encoding is not
3247 set, or contains an empty string, then @value{GDBN} will select the
3248 most appropriate encoding when the string is printed.
3249 @end deffn
3250
3251 @deffn {Scheme Procedure} lazy-string-type lazy-string
3252 Return the type that is represented by @var{lazy-string}'s type.
3253 For a lazy string this is a pointer or array type. To
3254 resolve this to the lazy string's character type, use @code{type-target-type}.
3255 @xref{Types In Guile}.
3256 @end deffn
3257
3258 @deffn {Scheme Procedure} lazy-string->value lazy-string
3259 Convert the @code{<gdb:lazy-string>} to a @code{<gdb:value>}. This value
3260 will point to the string in memory, but will lose all the delayed
3261 retrieval, encoding and handling that @value{GDBN} applies to a
3262 @code{<gdb:lazy-string>}.
3263 @end deffn
3264
3265 @node Architectures In Guile
3266 @subsubsection Guile representation of architectures
3267
3268 @cindex guile architectures
3269 @tindex <gdb:arch>
3270
3271 @value{GDBN} uses architecture specific parameters and artifacts in a
3272 number of its various computations. An architecture is represented
3273 by an instance of the @code{<gdb:arch>} class.
3274
3275 The following architecture-related procedures are provided by the
3276 @code{(gdb)} module:
3277
3278 @deffn {Scheme Procedure} arch? object
3279 Return @code{#t} if @var{object} is an object of type @code{<gdb:arch>}.
3280 Otherwise return @code{#f}.
3281 @end deffn
3282
3283 @deffn {Scheme Procedure} current-arch
3284 Return the current architecture as a @code{<gdb:arch>} object.
3285 @end deffn
3286
3287 @deffn {Scheme Procedure} arch-name arch
3288 Return the name (string value) of @code{<gdb:arch>} @var{arch}.
3289 @end deffn
3290
3291 @deffn {Scheme Procedure} arch-charset arch
3292 Return name of target character set of @code{<gdb:arch>} @var{arch}.
3293 @end deffn
3294
3295 @deffn {Scheme Procedure} arch-wide-charset
3296 Return name of target wide character set of @code{<gdb:arch>} @var{arch}.
3297 @end deffn
3298
3299 Each architecture provides a set of predefined types, obtained by
3300 the following functions.
3301
3302 @deffn {Scheme Procedure} arch-void-type arch
3303 Return the @code{<gdb:type>} object for a @code{void} type
3304 of architecture @var{arch}.
3305 @end deffn
3306
3307 @deffn {Scheme Procedure} arch-char-type arch
3308 Return the @code{<gdb:type>} object for a @code{char} type
3309 of architecture @var{arch}.
3310 @end deffn
3311
3312 @deffn {Scheme Procedure} arch-short-type arch
3313 Return the @code{<gdb:type>} object for a @code{short} type
3314 of architecture @var{arch}.
3315 @end deffn
3316
3317 @deffn {Scheme Procedure} arch-int-type arch
3318 Return the @code{<gdb:type>} object for an @code{int} type
3319 of architecture @var{arch}.
3320 @end deffn
3321
3322 @deffn {Scheme Procedure} arch-long-type arch
3323 Return the @code{<gdb:type>} object for a @code{long} type
3324 of architecture @var{arch}.
3325 @end deffn
3326
3327 @deffn {Scheme Procedure} arch-schar-type arch
3328 Return the @code{<gdb:type>} object for a @code{signed char} type
3329 of architecture @var{arch}.
3330 @end deffn
3331
3332 @deffn {Scheme Procedure} arch-uchar-type arch
3333 Return the @code{<gdb:type>} object for an @code{unsigned char} type
3334 of architecture @var{arch}.
3335 @end deffn
3336
3337 @deffn {Scheme Procedure} arch-ushort-type arch
3338 Return the @code{<gdb:type>} object for an @code{unsigned short} type
3339 of architecture @var{arch}.
3340 @end deffn
3341
3342 @deffn {Scheme Procedure} arch-uint-type arch
3343 Return the @code{<gdb:type>} object for an @code{unsigned int} type
3344 of architecture @var{arch}.
3345 @end deffn
3346
3347 @deffn {Scheme Procedure} arch-ulong-type arch
3348 Return the @code{<gdb:type>} object for an @code{unsigned long} type
3349 of architecture @var{arch}.
3350 @end deffn
3351
3352 @deffn {Scheme Procedure} arch-float-type arch
3353 Return the @code{<gdb:type>} object for a @code{float} type
3354 of architecture @var{arch}.
3355 @end deffn
3356
3357 @deffn {Scheme Procedure} arch-double-type arch
3358 Return the @code{<gdb:type>} object for a @code{double} type
3359 of architecture @var{arch}.
3360 @end deffn
3361
3362 @deffn {Scheme Procedure} arch-longdouble-type arch
3363 Return the @code{<gdb:type>} object for a @code{long double} type
3364 of architecture @var{arch}.
3365 @end deffn
3366
3367 @deffn {Scheme Procedure} arch-bool-type arch
3368 Return the @code{<gdb:type>} object for a @code{bool} type
3369 of architecture @var{arch}.
3370 @end deffn
3371
3372 @deffn {Scheme Procedure} arch-longlong-type arch
3373 Return the @code{<gdb:type>} object for a @code{long long} type
3374 of architecture @var{arch}.
3375 @end deffn
3376
3377 @deffn {Scheme Procedure} arch-ulonglong-type arch
3378 Return the @code{<gdb:type>} object for an @code{unsigned long long} type
3379 of architecture @var{arch}.
3380 @end deffn
3381
3382 @deffn {Scheme Procedure} arch-int8-type arch
3383 Return the @code{<gdb:type>} object for an @code{int8} type
3384 of architecture @var{arch}.
3385 @end deffn
3386
3387 @deffn {Scheme Procedure} arch-uint8-type arch
3388 Return the @code{<gdb:type>} object for a @code{uint8} type
3389 of architecture @var{arch}.
3390 @end deffn
3391
3392 @deffn {Scheme Procedure} arch-int16-type arch
3393 Return the @code{<gdb:type>} object for an @code{int16} type
3394 of architecture @var{arch}.
3395 @end deffn
3396
3397 @deffn {Scheme Procedure} arch-uint16-type arch
3398 Return the @code{<gdb:type>} object for a @code{uint16} type
3399 of architecture @var{arch}.
3400 @end deffn
3401
3402 @deffn {Scheme Procedure} arch-int32-type arch
3403 Return the @code{<gdb:type>} object for an @code{int32} type
3404 of architecture @var{arch}.
3405 @end deffn
3406
3407 @deffn {Scheme Procedure} arch-uint32-type arch
3408 Return the @code{<gdb:type>} object for a @code{uint32} type
3409 of architecture @var{arch}.
3410 @end deffn
3411
3412 @deffn {Scheme Procedure} arch-int64-type arch
3413 Return the @code{<gdb:type>} object for an @code{int64} type
3414 of architecture @var{arch}.
3415 @end deffn
3416
3417 @deffn {Scheme Procedure} arch-uint64-type arch
3418 Return the @code{<gdb:type>} object for a @code{uint64} type
3419 of architecture @var{arch}.
3420 @end deffn
3421
3422 Example:
3423
3424 @smallexample
3425 (gdb) guile (type-name (arch-uchar-type (current-arch)))
3426 "unsigned char"
3427 @end smallexample
3428
3429 @node Disassembly In Guile
3430 @subsubsection Disassembly In Guile
3431
3432 The disassembler can be invoked from Scheme code.
3433 Furthermore, the disassembler can take a Guile port as input,
3434 allowing one to disassemble from any source, and not just target memory.
3435
3436 @c TODO: line length
3437 @deffn {Scheme Procedure} arch-disassemble arch start-pc @r{[}#:port port@r{]} @r{[}#:offset offset@r{]} @r{[}#:size size@r{]} @r{[}#:count count@r{]}
3438 Return a list of disassembled instructions starting from the memory
3439 address @var{start-pc}.
3440
3441 The optional argument @var{port} specifies the input port to read bytes from.
3442 If @var{port} is @code{#f} then bytes are read from target memory.
3443
3444 The optional argument @var{offset} specifies the address offset of the
3445 first byte in @var{port}. This is useful, for example, when @var{port}
3446 specifies a @samp{bytevector} and you want the bytevector to be disassembled
3447 as if it came from that address. The @var{start-pc} passed to the reader
3448 for @var{port} is offset by the same amount.
3449
3450 Example:
3451 @smallexample
3452 (gdb) guile (use-modules (rnrs io ports))
3453 (gdb) guile (define pc (value->integer (parse-and-eval "$pc")))
3454 (gdb) guile (define mem (open-memory #:start pc))
3455 (gdb) guile (define bv (get-bytevector-n mem 10))
3456 (gdb) guile (define bv-port (open-bytevector-input-port bv))
3457 (gdb) guile (define arch (current-arch))
3458 (gdb) guile (arch-disassemble arch pc #:port bv-port #:offset pc)
3459 (((address . 4195516) (asm . "mov $0x4005c8,%edi") (length . 5)))
3460 @end smallexample
3461
3462 The optional arguments @var{size} and
3463 @var{count} determine the number of instructions in the returned list.
3464 If either @var{size} or @var{count} is specified as zero, then
3465 no instructions are disassembled and an empty list is returned.
3466 If both the optional arguments @var{size} and @var{count} are
3467 specified, then a list of at most @var{count} disassembled instructions
3468 whose start address falls in the closed memory address interval from
3469 @var{start-pc} to (@var{start-pc} + @var{size} - 1) are returned.
3470 If @var{size} is not specified, but @var{count} is specified,
3471 then @var{count} number of instructions starting from the address
3472 @var{start-pc} are returned. If @var{count} is not specified but
3473 @var{size} is specified, then all instructions whose start address
3474 falls in the closed memory address interval from @var{start-pc} to
3475 (@var{start-pc} + @var{size} - 1) are returned.
3476 If neither @var{size} nor @var{count} are specified, then a single
3477 instruction at @var{start-pc} is returned.
3478
3479 Each element of the returned list is an alist (associative list)
3480 with the following keys:
3481
3482 @table @code
3483
3484 @item address
3485 The value corresponding to this key is a Guile integer of
3486 the memory address of the instruction.
3487
3488 @item asm
3489 The value corresponding to this key is a string value which represents
3490 the instruction with assembly language mnemonics. The assembly
3491 language flavor used is the same as that specified by the current CLI
3492 variable @code{disassembly-flavor}. @xref{Machine Code}.
3493
3494 @item length
3495 The value corresponding to this key is the length of the instruction in bytes.
3496
3497 @end table
3498 @end deffn
3499
3500 @node I/O Ports in Guile
3501 @subsubsection I/O Ports in Guile
3502
3503 @deffn {Scheme Procedure} input-port
3504 Return @value{GDBN}'s input port as a Guile port object.
3505 @end deffn
3506
3507 @deffn {Scheme Procedure} output-port
3508 Return @value{GDBN}'s output port as a Guile port object.
3509 @end deffn
3510
3511 @deffn {Scheme Procedure} error-port
3512 Return @value{GDBN}'s error port as a Guile port object.
3513 @end deffn
3514
3515 @deffn {Scheme Procedure} stdio-port? object
3516 Return @code{#t} if @var{object} is a @value{GDBN} stdio port.
3517 Otherwise return @code{#f}.
3518 @end deffn
3519
3520 @node Memory Ports in Guile
3521 @subsubsection Memory Ports in Guile
3522
3523 @value{GDBN} provides a @code{port} interface to target memory.
3524 This allows Guile code to read/write target memory using Guile's port and
3525 bytevector functionality. The main routine is @code{open-memory} which
3526 returns a port object. One can then read/write memory using that object.
3527
3528 @deffn {Scheme Procedure} open-memory @r{[}#:mode mode{]} @r{[}#:start address{]} @r{[}#:size size{]}
3529 Return a port object that can be used for reading and writing memory.
3530 The port will be open according to @var{mode}, which is the standard
3531 mode argument to Guile port open routines, except that the @samp{"a"}
3532 and @samp{"l"} modes are not supported.
3533 @xref{File Ports,,, guile, GNU Guile Reference Manual}.
3534 The @samp{"b"} (binary) character may be present, but is ignored:
3535 memory ports are binary only. If @samp{"0"} is appended then
3536 the port is marked as unbuffered.
3537 The default is @samp{"r"}, read-only and buffered.
3538
3539 The chunk of memory that can be accessed can be bounded.
3540 If both @var{start} and @var{size} are unspecified, all of memory can be
3541 accessed. If only @var{start} is specified, all of memory from that point
3542 on can be accessed. If only @var{size} if specified, all memory in the
3543 range [0,@var{size}) can be accessed. If both are specified, all memory
3544 in the rane [@var{start},@var{start}+@var{size}) can be accessed.
3545 @end deffn
3546
3547 @deffn {Scheme Procedure} memory-port?
3548 Return @code{#t} if @var{object} is an object of type @code{<gdb:memory-port>}.
3549 Otherwise return @code{#f}.
3550 @end deffn
3551
3552 @deffn {Scheme Procedure} memory-port-range memory-port
3553 Return the range of @code{<gdb:memory-port>} @var{memory-port} as a list
3554 of two elements: @code{(start end)}. The range is @var{start} to @var{end}
3555 inclusive.
3556 @end deffn
3557
3558 @deffn {Scheme Procedure} memory-port-read-buffer-size memory-port
3559 Return the size of the read buffer of @code{<gdb:memory-port>}
3560 @var{memory-port}.
3561
3562 This procedure is deprecated and will be removed in @value{GDBN} 11.
3563 It returns 0 when using Guile 2.2 or later.
3564 @end deffn
3565
3566 @deffn {Scheme Procedure} set-memory-port-read-buffer-size! memory-port size
3567 Set the size of the read buffer of @code{<gdb:memory-port>}
3568 @var{memory-port} to @var{size}. The result is unspecified.
3569
3570 This procedure is deprecated and will be removed in @value{GDBN} 11.
3571 When @value{GDBN} is built with Guile 2.2 or later, you can call
3572 @code{setvbuf} instead (@pxref{Buffering, @code{setvbuf},, guile, GNU
3573 Guile Reference Manual}).
3574 @end deffn
3575
3576 @deffn {Scheme Procedure} memory-port-write-buffer-size memory-port
3577 Return the size of the write buffer of @code{<gdb:memory-port>}
3578 @var{memory-port}.
3579
3580 This procedure is deprecated and will be removed in @value{GDBN} 11.
3581 It returns 0 when @value{GDBN} is built with Guile 2.2 or later.
3582 @end deffn
3583
3584 @deffn {Scheme Procedure} set-memory-port-write-buffer-size! memory-port size
3585 Set the size of the write buffer of @code{<gdb:memory-port>}
3586 @var{memory-port} to @var{size}. The result is unspecified.
3587
3588 This procedure is deprecated and will be removed in @value{GDBN} 11.
3589 When @value{GDBN} is built with Guile 2.2 or later, you can call
3590 @code{setvbuf} instead.
3591 @end deffn
3592
3593 A memory port is closed like any other port, with @code{close-port}.
3594
3595 Combined with Guile's @code{bytevectors}, memory ports provide a lot
3596 of utility. For example, to fill a buffer of 10 integers in memory,
3597 one can do something like the following.
3598
3599 @smallexample
3600 ;; In the program: int buffer[10];
3601 (use-modules (rnrs bytevectors))
3602 (use-modules (rnrs io ports))
3603 (define addr (parse-and-eval "buffer"))
3604 (define n 10)
3605 (define byte-size (* n 4))
3606 (define mem-port (open-memory #:mode "r+" #:start
3607 (value->integer addr) #:size byte-size))
3608 (define byte-vec (make-bytevector byte-size))
3609 (do ((i 0 (+ i 1)))
3610 ((>= i n))
3611 (bytevector-s32-native-set! byte-vec (* i 4) (* i 42)))
3612 (put-bytevector mem-port byte-vec)
3613 (close-port mem-port)
3614 @end smallexample
3615
3616 @node Iterators In Guile
3617 @subsubsection Iterators In Guile
3618
3619 @cindex guile iterators
3620 @tindex <gdb:iterator>
3621
3622 A simple iterator facility is provided to allow, for example,
3623 iterating over the set of program symbols without having to first
3624 construct a list of all of them. A useful contribution would be
3625 to add support for SRFI 41 and SRFI 45.
3626
3627 @deffn {Scheme Procedure} make-iterator object progress next!
3628 A @code{<gdb:iterator>} object is constructed with the @code{make-iterator}
3629 procedure. It takes three arguments: the object to be iterated over,
3630 an object to record the progress of the iteration, and a procedure to
3631 return the next element in the iteration, or an implementation chosen value
3632 to denote the end of iteration.
3633
3634 By convention, end of iteration is marked with @code{(end-of-iteration)},
3635 and may be tested with the @code{end-of-iteration?} predicate.
3636 The result of @code{(end-of-iteration)} is chosen so that it is not
3637 otherwise used by the @code{(gdb)} module. If you are using
3638 @code{<gdb:iterator>} in your own code it is your responsibility to
3639 maintain this invariant.
3640
3641 A trivial example for illustration's sake:
3642
3643 @smallexample
3644 (use-modules (gdb iterator))
3645 (define my-list (list 1 2 3))
3646 (define iter
3647 (make-iterator my-list my-list
3648 (lambda (iter)
3649 (let ((l (iterator-progress iter)))
3650 (if (eq? l '())
3651 (end-of-iteration)
3652 (begin
3653 (set-iterator-progress! iter (cdr l))
3654 (car l)))))))
3655 @end smallexample
3656
3657 Here is a slightly more realistic example, which computes a list of all the
3658 functions in @code{my-global-block}.
3659
3660 @smallexample
3661 (use-modules (gdb iterator))
3662 (define this-sal (find-pc-line (frame-pc (selected-frame))))
3663 (define this-symtab (sal-symtab this-sal))
3664 (define this-global-block (symtab-global-block this-symtab))
3665 (define syms-iter (make-block-symbols-iterator this-global-block))
3666 (define functions (iterator-filter symbol-function? syms-iter))
3667 @end smallexample
3668 @end deffn
3669
3670 @deffn {Scheme Procedure} iterator? object
3671 Return @code{#t} if @var{object} is a @code{<gdb:iterator>} object.
3672 Otherwise return @code{#f}.
3673 @end deffn
3674
3675 @deffn {Scheme Procedure} iterator-object iterator
3676 Return the first argument that was passed to @code{make-iterator}.
3677 This is the object being iterated over.
3678 @end deffn
3679
3680 @deffn {Scheme Procedure} iterator-progress iterator
3681 Return the object tracking iteration progress.
3682 @end deffn
3683
3684 @deffn {Scheme Procedure} set-iterator-progress! iterator new-value
3685 Set the object tracking iteration progress.
3686 @end deffn
3687
3688 @deffn {Scheme Procedure} iterator-next! iterator
3689 Invoke the procedure that was the third argument to @code{make-iterator},
3690 passing it one argument, the @code{<gdb:iterator>} object.
3691 The result is either the next element in the iteration, or an end
3692 marker as implemented by the @code{next!} procedure.
3693 By convention the end marker is the result of @code{(end-of-iteration)}.
3694 @end deffn
3695
3696 @deffn {Scheme Procedure} end-of-iteration
3697 Return the Scheme object that denotes end of iteration.
3698 @end deffn
3699
3700 @deffn {Scheme Procedure} end-of-iteration? object
3701 Return @code{#t} if @var{object} is the end of iteration marker.
3702 Otherwise return @code{#f}.
3703 @end deffn
3704
3705 These functions are provided by the @code{(gdb iterator)} module to
3706 assist in using iterators.
3707
3708 @deffn {Scheme Procedure} make-list-iterator list
3709 Return a @code{<gdb:iterator>} object that will iterate over @var{list}.
3710 @end deffn
3711
3712 @deffn {Scheme Procedure} iterator->list iterator
3713 Return the elements pointed to by @var{iterator} as a list.
3714 @end deffn
3715
3716 @deffn {Scheme Procedure} iterator-map proc iterator
3717 Return the list of objects obtained by applying @var{proc} to the object
3718 pointed to by @var{iterator} and to each subsequent object.
3719 @end deffn
3720
3721 @deffn {Scheme Procedure} iterator-for-each proc iterator
3722 Apply @var{proc} to each element pointed to by @var{iterator}.
3723 The result is unspecified.
3724 @end deffn
3725
3726 @deffn {Scheme Procedure} iterator-filter pred iterator
3727 Return the list of elements pointed to by @var{iterator} that satisfy
3728 @var{pred}.
3729 @end deffn
3730
3731 @deffn {Scheme Procedure} iterator-until pred iterator
3732 Run @var{iterator} until the result of @code{(pred element)} is true
3733 and return that as the result. Otherwise return @code{#f}.
3734 @end deffn
3735
3736 @node Guile Auto-loading
3737 @subsection Guile Auto-loading
3738 @cindex guile auto-loading
3739
3740 When a new object file is read (for example, due to the @code{file}
3741 command, or because the inferior has loaded a shared library),
3742 @value{GDBN} will look for Guile support scripts in two ways:
3743 @file{@var{objfile}-gdb.scm} and the @code{.debug_gdb_scripts} section.
3744 @xref{Auto-loading extensions}.
3745
3746 The auto-loading feature is useful for supplying application-specific
3747 debugging commands and scripts.
3748
3749 Auto-loading can be enabled or disabled,
3750 and the list of auto-loaded scripts can be printed.
3751
3752 @table @code
3753 @anchor{set auto-load guile-scripts}
3754 @kindex set auto-load guile-scripts
3755 @item set auto-load guile-scripts [on|off]
3756 Enable or disable the auto-loading of Guile scripts.
3757
3758 @anchor{show auto-load guile-scripts}
3759 @kindex show auto-load guile-scripts
3760 @item show auto-load guile-scripts
3761 Show whether auto-loading of Guile scripts is enabled or disabled.
3762
3763 @anchor{info auto-load guile-scripts}
3764 @kindex info auto-load guile-scripts
3765 @cindex print list of auto-loaded Guile scripts
3766 @item info auto-load guile-scripts [@var{regexp}]
3767 Print the list of all Guile scripts that @value{GDBN} auto-loaded.
3768
3769 Also printed is the list of Guile scripts that were mentioned in
3770 the @code{.debug_gdb_scripts} section and were not found.
3771 This is useful because their names are not printed when @value{GDBN}
3772 tries to load them and fails. There may be many of them, and printing
3773 an error message for each one is problematic.
3774
3775 If @var{regexp} is supplied only Guile scripts with matching names are printed.
3776
3777 Example:
3778
3779 @smallexample
3780 (gdb) info auto-load guile-scripts
3781 Loaded Script
3782 Yes scm-section-script.scm
3783 full name: /tmp/scm-section-script.scm
3784 No my-foo-pretty-printers.scm
3785 @end smallexample
3786 @end table
3787
3788 When reading an auto-loaded file, @value{GDBN} sets the
3789 @dfn{current objfile}. This is available via the @code{current-objfile}
3790 procedure (@pxref{Objfiles In Guile}). This can be useful for
3791 registering objfile-specific pretty-printers.
3792
3793 @node Guile Modules
3794 @subsection Guile Modules
3795 @cindex guile modules
3796
3797 @value{GDBN} comes with several modules to assist writing Guile code.
3798
3799 @menu
3800 * Guile Printing Module:: Building and registering pretty-printers
3801 * Guile Types Module:: Utilities for working with types
3802 @end menu
3803
3804 @node Guile Printing Module
3805 @subsubsection Guile Printing Module
3806
3807 This module provides a collection of utilities for working with
3808 pretty-printers.
3809
3810 Usage:
3811
3812 @smallexample
3813 (use-modules (gdb printing))
3814 @end smallexample
3815
3816 @deffn {Scheme Procedure} prepend-pretty-printer! object printer
3817 Add @var{printer} to the front of the list of pretty-printers for
3818 @var{object}. The @var{object} must either be a @code{<gdb:objfile>} object,
3819 or @code{#f} in which case @var{printer} is added to the global list of
3820 printers.
3821 @end deffn
3822
3823 @deffn {Scheme Procecure} append-pretty-printer! object printer
3824 Add @var{printer} to the end of the list of pretty-printers for
3825 @var{object}. The @var{object} must either be a @code{<gdb:objfile>} object,
3826 or @code{#f} in which case @var{printer} is added to the global list of
3827 printers.
3828 @end deffn
3829
3830 @node Guile Types Module
3831 @subsubsection Guile Types Module
3832
3833 This module provides a collection of utilities for working with
3834 @code{<gdb:type>} objects.
3835
3836 Usage:
3837
3838 @smallexample
3839 (use-modules (gdb types))
3840 @end smallexample
3841
3842 @deffn {Scheme Procedure} get-basic-type type
3843 Return @var{type} with const and volatile qualifiers stripped,
3844 and with typedefs and C@t{++} references converted to the underlying type.
3845
3846 C@t{++} example:
3847
3848 @smallexample
3849 typedef const int const_int;
3850 const_int foo (3);
3851 const_int& foo_ref (foo);
3852 int main () @{ return 0; @}
3853 @end smallexample
3854
3855 Then in gdb:
3856
3857 @smallexample
3858 (gdb) start
3859 (gdb) guile (use-modules (gdb) (gdb types))
3860 (gdb) guile (define foo-ref (parse-and-eval "foo_ref"))
3861 (gdb) guile (get-basic-type (value-type foo-ref))
3862 int
3863 @end smallexample
3864 @end deffn
3865
3866 @deffn {Scheme Procedure} type-has-field-deep? type field
3867 Return @code{#t} if @var{type}, assumed to be a type with fields
3868 (e.g., a structure or union), has field @var{field}.
3869 Otherwise return @code{#f}.
3870 This searches baseclasses, whereas @code{type-has-field?} does not.
3871 @end deffn
3872
3873 @deffn {Scheme Procedure} make-enum-hashtable enum-type
3874 Return a Guile hash table produced from @var{enum-type}.
3875 Elements in the hash table are referenced with @code{hashq-ref}.
3876 @end deffn
This page took 0.140681 seconds and 4 git commands to generate.