Add Guile as an extension language.
[deliverable/binutils-gdb.git] / gdb / doc / guile.texi
1 @c Copyright (C) 2008-2014 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 2.0 or greater.
42 Older versions are not supported.
43
44 @cindex guile scripts directory
45 Guile scripts used by @value{GDBN} should be installed in
46 @file{@var{data-directory}/guile}, where @var{data-directory} is
47 the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
48 This directory, known as the @dfn{guile directory},
49 is automatically added to the Guile Search Path in order to allow
50 the Guile interpreter to locate all scripts installed at this location.
51
52 @node Guile Commands
53 @subsection Guile Commands
54 @cindex guile commands
55 @cindex commands to access guile
56
57 @value{GDBN} provides two commands for accessing the Guile interpreter:
58
59 @table @code
60 @kindex guile-repl
61 @kindex gr
62 @item guile-repl
63 @itemx gr
64 The @code{guile-repl} command can be used to start an interactive
65 Guile prompt or @dfn{repl}. To return to @value{GDBN},
66 type @kbd{,q} or the @code{EOF} character (e.g., @kbd{Ctrl-D} on
67 an empty prompt). These commands do not take any arguments.
68
69 @kindex guile
70 @kindex gu
71 @item guile @r{[}@var{scheme-expression}@r{]}
72 @itemx gu @r{[}@var{scheme-expression}@r{]}
73 The @code{guile} command can be used to evaluate a Scheme expression.
74
75 If given an argument, @value{GDBN} will pass the argument to the Guile
76 interpreter for evaluation.
77
78 @smallexample
79 (@value{GDBP}) guile (display (+ 20 3)) (newline)
80 23
81 @end smallexample
82
83 The result of the Scheme expression is displayed using normal Guile rules.
84
85 @smallexample
86 (@value{GDBP}) guile (+ 20 3)
87 23
88 @end smallexample
89
90 If you do not provide an argument to @code{guile}, it will act as a
91 multi-line command, like @code{define}. In this case, the Guile
92 script is made up of subsequent command lines, given after the
93 @code{guile} command. This command list is terminated using a line
94 containing @code{end}. For example:
95
96 @smallexample
97 (@value{GDBP}) guile
98 >(display 23)
99 >(newline)
100 >end
101 23
102 @end smallexample
103 @end table
104
105 It is also possible to execute a Guile script from the @value{GDBN}
106 interpreter:
107
108 @table @code
109 @item source @file{script-name}
110 The script name must end with @samp{.scm} and @value{GDBN} must be configured
111 to recognize the script language based on filename extension using
112 the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
113
114 @item guile (load "script-name")
115 This method uses the @code{load} Guile function.
116 It takes a string argument that is the name of the script to load.
117 See the Guile documentation for a description of this function.
118 (@pxref{Loading,,, guile, GNU Guile Reference Manual}).
119 @end table
120
121 @node Guile API
122 @subsection Guile API
123 @cindex guile api
124 @cindex programming in guile
125
126 You can get quick online help for @value{GDBN}'s Guile API by issuing
127 the command @w{@kbd{help guile}}, or by issuing the command @kbd{,help}
128 from an interactive Guile session. Furthermore, most Guile procedures
129 provided by @value{GDBN} have doc strings which can be obtained with
130 @kbd{,describe @var{procedure-name}} or @kbd{,d @var{procedure-name}}
131 from the Guile interactive prompt.
132
133 @menu
134 * Basic Guile:: Basic Guile Functions
135 * Guile Configuration:: Guile configuration variables
136 * GDB Scheme Data Types:: Scheme representations of GDB objects
137 * Guile Exception Handling:: How Guile exceptions are translated
138 * Values From Inferior In Guile:: Guile representation of values
139 * Arithmetic In Guile:: Arithmetic in Guile
140 * Types In Guile:: Guile representation of types
141 * Guile Pretty Printing API:: Pretty-printing values with Guile
142 * Selecting Guile Pretty-Printers:: How GDB chooses a pretty-printer
143 * Writing a Guile Pretty-Printer:: Writing a pretty-printer
144 * Objfiles In Guile:: Object files in Guile
145 * Frames In Guile:: Accessing inferior stack frames from Guile
146 * Blocks In Guile:: Accessing blocks from Guile
147 * Symbols In Guile:: Guile representation of symbols
148 * Symbol Tables In Guile:: Guile representation of symbol tables
149 * Breakpoints In Guile:: Manipulating breakpoints using Guile
150 * Lazy Strings In Guile:: Guile representation of lazy strings
151 * Architectures In Guile:: Guile representation of architectures
152 * Disassembly In Guile:: Disassembling instructions from Guile
153 * I/O Ports in Guile:: GDB I/O ports
154 * Memory Ports in Guile:: Accessing memory through ports and bytevectors
155 * Iterators In Guile:: Basic iterator support
156 @end menu
157
158 @node Basic Guile
159 @subsubsection Basic Guile
160
161 @cindex guile stdout
162 @cindex guile pagination
163 At startup, @value{GDBN} overrides Guile's @code{current-output-port} and
164 @code{current-error-port} to print using @value{GDBN}'s output-paging streams.
165 A Guile program which outputs to one of these streams may have its
166 output interrupted by the user (@pxref{Screen Size}). In this
167 situation, a Guile @code{signal} exception is thrown with value @code{SIGINT}.
168
169 Guile's history mechanism uses the same naming as @value{GDBN}'s,
170 namely the user of dollar-variables (e.g., $1, $2, etc.).
171 The results of evaluations in Guile and in GDB are counted separately,
172 @code{$1} in Guile is not the same value as @code{$1} in @value{GDBN}.
173
174 @value{GDBN} is not thread-safe. If your Guile program uses multiple
175 threads, you must be careful to only call @value{GDBN}-specific
176 functions in the @value{GDBN} thread.
177
178 Some care must be taken when writing Guile code to run in
179 @value{GDBN}. Two things are worth noting in particular:
180
181 @itemize @bullet
182 @item
183 @value{GDBN} installs handlers for @code{SIGCHLD} and @code{SIGINT}.
184 Guile code must not override these, or even change the options using
185 @code{sigaction}. If your program changes the handling of these
186 signals, @value{GDBN} will most likely stop working correctly. Note
187 that it is unfortunately common for GUI toolkits to install a
188 @code{SIGCHLD} handler.
189
190 @item
191 @value{GDBN} takes care to mark its internal file descriptors as
192 close-on-exec. However, this cannot be done in a thread-safe way on
193 all platforms. Your Guile programs should be aware of this and
194 should both create new file descriptors with the close-on-exec flag
195 set and arrange to close unneeded file descriptors before starting a
196 child process.
197 @end itemize
198
199 @cindex guile gdb module
200 @value{GDBN} introduces a new Guile module, named @code{gdb}. All
201 methods and classes added by @value{GDBN} are placed in this module.
202 @value{GDBN} does not automatically @code{import} the @code{gdb} module,
203 scripts must do this themselves. There are various options for how to
204 import a module, so @value{GDBN} leaves the choice of how the @code{gdb}
205 module is imported to the user.
206 To simplify interactive use, it is recommended to add one of the following
207 to your ~/.gdbinit.
208
209 @smallexample
210 guile (use-modules (gdb))
211 @end smallexample
212
213 @smallexample
214 guile (use-modules ((gdb) #:renamer (symbol-prefix-proc 'gdb:)))
215 @end smallexample
216
217 Which one to choose depends on your preference.
218 The second one adds @code{gdb:} as a prefix to all module functions
219 and variables.
220
221 The rest of this manual assumes the @code{gdb} module has been imported
222 without any prefix. See the Guile documentation for @code{use-modules}
223 for more information
224 (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}).
225
226 Example:
227
228 @smallexample
229 (gdb) guile (value-type (make-value 1))
230 ERROR: Unbound variable: value-type
231 Error while executing Scheme code.
232 (gdb) guile (use-modules (gdb))
233 (gdb) guile (value-type (make-value 1))
234 int
235 (gdb)
236 @end smallexample
237
238 The @code{(gdb)} module provides these basic Guile functions.
239
240 @c TODO: line length
241 @deffn {Scheme Procedure} execute command @r{[}#:from-tty boolean@r{]}@r{[}#:to-string boolean@r{]}
242 Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
243 If a @value{GDBN} exception happens while @var{command} runs, it is
244 translated as described in
245 @ref{Guile Exception Handling,,Guile Exception Handling}.
246
247 @var{from-tty} specifies whether @value{GDBN} ought to consider this
248 command as having originated from the user invoking it interactively.
249 It must be a boolean value. If omitted, it defaults to @code{#f}.
250
251 By default, any output produced by @var{command} is sent to
252 @value{GDBN}'s standard output (and to the log output if logging is
253 turned on). If the @var{to-string} parameter is
254 @code{#t}, then output will be collected by @code{gdb.execute} and
255 returned as a string. The default is @code{#f}, in which case the
256 return value is unspecified. If @var{to-string} is @code{#t}, the
257 @value{GDBN} virtual terminal will be temporarily set to unlimited width
258 and height, and its pagination will be disabled; @pxref{Screen Size}.
259 @end deffn
260
261 @deffn {Scheme Procedure} history-ref number
262 Return a value from @value{GDBN}'s value history (@pxref{Value
263 History}). @var{number} indicates which history element to return.
264 If @var{number} is negative, then @value{GDBN} will take its absolute value
265 and count backward from the last element (i.e., the most recent element) to
266 find the value to return. If @var{number} is zero, then @value{GDBN} will
267 return the most recent element. If the element specified by @var{number}
268 doesn't exist in the value history, a @code{gdb:error} exception will be
269 raised.
270
271 If no exception is raised, the return value is always an instance of
272 @code{<gdb:value>} (@pxref{Values From Inferior In Guile}).
273
274 @emph{Note:} @value{GDBN}'s value history is independent of Guile's.
275 @code{$1} in @value{GDBN}'s value history contains the result of evaluating
276 an expression from @value{GDBN}'s command line and @code{$1} from Guile's
277 history contains the result of evaluating an expression from Guile's
278 command line.
279 @end deffn
280
281 @deffn {Scheme Procedure} parse-and-eval expression
282 Parse @var{expression} as an expression in the current language,
283 evaluate it, and return the result as a @code{<gdb:value>}.
284 @var{expression} must be a string.
285
286 This function is useful when computing values.
287 For example, it is the only way to get the value of a
288 convenience variable (@pxref{Convenience Vars}) as a @code{<gdb:value>}.
289 @end deffn
290
291 @deffn {Scheme Procedure} string->argv string
292 Convert a string to a list of strings split up according to
293 @value{GDBN}'s argv parsing rules.
294 @end deffn
295
296 @node Guile Configuration
297 @subsubsection Guile Configuration
298 @cindex guile configuration
299
300 @value{GDBN} provides these Scheme functions to access various configuration
301 parameters.
302
303 @deffn {Scheme Procedure} data-directory
304 Return a string containing @value{GDBN}'s data directory.
305 This directory contains @value{GDBN}'s ancillary files, including
306 the Guile modules provided by @value{GDBN}.
307 @end deffn
308
309 @deffn {Scheme Procedure} gdb-version
310 Return a string containing the @value{GDBN} version.
311 @end deffn
312
313 @deffn {Scheme Procedure} host-config
314 Return a string containing the host configuration.
315 This is the string passed to @code{--host} when @value{GDBN} was configured.
316 @end deffn
317
318 @deffn {Scheme Procedure} target-config
319 Return a string containing the target configuration.
320 This is the string passed to @code{--target} when @value{GDBN} was configured.
321 @end deffn
322
323 @node GDB Scheme Data Types
324 @subsubsection GDB Scheme Data Types
325 @cindex gdb smobs
326
327 @value{GDBN} uses Guile's @dfn{smob} (small object)
328 data type for all @value{GDBN} objects
329 (@pxref{Defining New Types (Smobs),,, guile, GNU Guile Reference Manual}).
330 The smobs that @value{GDBN} provides are called @dfn{gsmobs}.
331
332 @deffn {Scheme Procedure} gsmob-kind gsmob
333 Return the kind of the gsmob, e.g., @code{<gdb:breakpoint>},
334 as a symbol.
335 @end deffn
336
337 Every @code{gsmob} provides a common set of functions for extending
338 them in simple ways. Each @code{gsmob} has a list of properties,
339 initially empty. These properties are akin to Guile's object properties,
340 but are stored with the @code{gsmob}
341 (@pxref{Object Properties,,, guile, GNU Guile Reference Manual}).
342 Property names can be any @code{eq?}-able value, but it is recommended
343 that they be symbols.
344
345 @deffn {Scheme Procedure} set-gsmob-property! gsmob property-name value
346 Set the value of property @code{property-name} to value @code{value}.
347 The result is unspecified.
348 @end deffn
349
350 @deffn {Scheme Procedure} gsmob-property gsmob property-name
351 Return the value of property @code{property-name}.
352 If the property isn't present then @code{#f} is returned.
353 @end deffn
354
355 @deffn {Scheme Procedure} gsmob-has-property? gsmob property-name
356 Return @code{#t} if @code{gsmob} has property @code{property-name}.
357 Otherwise return @code{#f}.
358 @end deffn
359
360 @deffn {Scheme Procedure} gsmob-properties gsmob
361 Return an unsorted list of names of properties.
362 @end deffn
363
364 @value{GDBN} defines the following Scheme smobs:
365
366 @table @code
367 @item <gdb:arch>
368 @xref{Architectures In Guile}.
369
370 @item <gdb:block>
371 @xref{Blocks In Guile}.
372
373 @item <gdb:block-symbols-iterator>
374 @xref{Blocks In Guile}.
375
376 @item <gdb:breakpoint>
377 @xref{Breakpoints In Guile}.
378
379 @item <gdb:exception>
380 @xref{Guile Exception Handling}.
381
382 @item <gdb:frame>
383 @xref{Frames In Guile}.
384
385 @item <gdb:iterator>
386 @xref{Iterators In Guile}.
387
388 @item <gdb:lazy-string>
389 @xref{Lazy Strings In Guile}.
390
391 @item <gdb:objfile>
392 @xref{Objfiles In Guile}.
393
394 @item <gdb:pretty-printer>
395 @xref{Guile Pretty Printing API}.
396
397 @item <gdb:pretty-printer-worker>
398 @xref{Guile Pretty Printing API}.
399
400 @item <gdb:symbol>
401 @xref{Symbols In Guile}.
402
403 @item <gdb:symtab>
404 @xref{Symbol Tables In Guile}.
405
406 @item <gdb:sal>
407 @xref{Symbol Tables In Guile}.
408
409 @item <gdb:type>
410 @xref{Types In Guile}.
411
412 @item <gdb:field>
413 @xref{Types In Guile}.
414
415 @item <gdb:value>
416 @xref{Values From Inferior In Guile}.
417 @end table
418
419 The following gsmobs are managed internally so that the Scheme function
420 @code{eq?} may be applied to them.
421
422 @table @code
423 @item <gdb:arch>
424 @item <gdb:block>
425 @item <gdb:breakpoint>
426 @item <gdb:frame>
427 @item <gdb:objfile>
428 @item <gdb:symbol>
429 @item <gdb:symtab>
430 @item <gdb:type>
431 @end table
432
433 @node Guile Exception Handling
434 @subsubsection Guile Exception Handling
435 @cindex guile exceptions
436 @cindex exceptions, guile
437 @kindex set guile print-stack
438
439 When executing the @code{guile} command, Guile exceptions
440 uncaught within the Guile code are translated to calls to the
441 @value{GDBN} error-reporting mechanism. If the command that called
442 @code{guile} does not handle the error, @value{GDBN} will
443 terminate it and report the error according to the setting of
444 the @code{guile print-stack} parameter.
445
446 The @code{guile print-stack} parameter has three settings:
447
448 @table @code
449 @item none
450 Nothing is printed.
451
452 @item message
453 An error message is printed containing the Guile exception name,
454 the associated value, and the Guile call stack backtrace at the
455 point where the exception was raised. Example:
456
457 @smallexample
458 (@value{GDBP}) guile (display foo)
459 ERROR: In procedure memoize-variable-access!:
460 ERROR: Unbound variable: foo
461 Error while executing Scheme code.
462 @end smallexample
463
464 @item full
465 In addition to an error message a full backtrace is printed.
466
467 @smallexample
468 (@value{GDBP}) set guile print-stack full
469 (@value{GDBP}) guile (display foo)
470 Guile Backtrace:
471 In ice-9/boot-9.scm:
472 157: 10 [catch #t #<catch-closure 2c76e20> ...]
473 In unknown file:
474 ?: 9 [apply-smob/1 #<catch-closure 2c76e20>]
475 In ice-9/boot-9.scm:
476 157: 8 [catch #t #<catch-closure 2c76d20> ...]
477 In unknown file:
478 ?: 7 [apply-smob/1 #<catch-closure 2c76d20>]
479 ?: 6 [call-with-input-string "(display foo)" ...]
480 In ice-9/boot-9.scm:
481 2320: 5 [save-module-excursion #<procedure 2c2dc30 ... ()>]
482 In ice-9/eval-string.scm:
483 44: 4 [read-and-eval #<input: string 27cb410> #:lang ...]
484 37: 3 [lp (display foo)]
485 In ice-9/eval.scm:
486 387: 2 [eval # ()]
487 393: 1 [eval #<memoized foo> ()]
488 In unknown file:
489 ?: 0 [memoize-variable-access! #<memoized foo> ...]
490
491 ERROR: In procedure memoize-variable-access!:
492 ERROR: Unbound variable: foo
493 Error while executing Scheme code.
494 @end smallexample
495 @end table
496
497 @value{GDBN} errors that happen in @value{GDBN} commands invoked by
498 Guile code are converted to Guile exceptions. The type of the
499 Guile exception depends on the error.
500
501 Guile procedures provided by @value{GDBN} can throw the standard
502 Guile exceptions like @code{wrong-type-arg} and @code{out-of-range}.
503
504 User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
505 prompt) is translated to a Guile @code{signal} exception with value
506 @code{SIGINT}.
507
508 @value{GDBN} Guile procedures can also throw these exceptions:
509
510 @vtable @code
511 @item gdb:error
512 This exception is a catch-all for errors generated from within @value{GDBN}.
513
514 @item gdb:invalid-object
515 This exception is thrown when accessing Guile objects that wrap underlying
516 @value{GDBN} objects have become invalid. For example, a
517 @code{<gdb:breakpoint>} object becomes invalid if the user deletes it
518 from the command line. The object still exists in Guile, but the
519 object it represents is gone. Further operations on this breakpoint
520 will throw this exception.
521
522 @item gdb:memory-error
523 This exception is thrown when an operation tried to access invalid
524 memory in the inferior.
525
526 @item gdb:pp-type-error
527 This exception is thrown when a Guile pretty-printer passes a bad object
528 to @value{GDBN}.
529 @end vtable
530
531 The following exception-related procedures are provided by the
532 @code{(gdb)} module.
533
534 @deffn {Scheme Procedure} make-exception key args
535 Return a @code{<gdb:exception>} object.
536 @var{key} and @var{args} are the standard Guile parameters of an exception.
537 See the Guile documentation for more information
538 (@pxref{Exceptions,,, guile, GNU Guile Reference Manual}).
539 @end deffn
540
541 @deffn {Scheme Procedure} exception? object
542 Return @code{#t} if @var{object} is a @code{<gdb:exception>} object.
543 Otherwise return @code{#f}.
544 @end deffn
545
546 @deffn {Scheme Procedure} exception-key exception
547 Return the @var{args} field of a @code{<gdb:exception>} object.
548 @end deffn
549
550 @deffn {Scheme Procedure} exception-args exception
551 Return the @var{args} field of a @code{<gdb:exception>} object.
552 @end deffn
553
554 @node Values From Inferior In Guile
555 @subsubsection Values From Inferior In Guile
556 @cindex values from inferior, in guile
557 @cindex guile, working with values from inferior
558
559 @tindex @code{<gdb:value>}
560 @value{GDBN} provides values it obtains from the inferior program in
561 an object of type @code{<gdb:value>}. @value{GDBN} uses this object
562 for its internal bookkeeping of the inferior's values, and for
563 fetching values when necessary.
564
565 @value{GDBN} does not memoize @code{<gdb:value>} objects.
566 @code{make-value} always returns a fresh object.
567
568 @smallexample
569 (gdb) guile (eq? (make-value 1) (make-value 1))
570 $1 = #f
571 (gdb) guile (equal? (make-value 1) (make-value 1))
572 $1 = #t
573 @end smallexample
574
575 A @code{<gdb:value>} that represents a function can be executed via
576 inferior function call with @code{value-call}.
577 Any arguments provided to the call must match the function's prototype,
578 and must be provided in the order specified by that prototype.
579
580 For example, @code{some-val} is a @code{<gdb:value>} instance
581 representing a function that takes two integers as arguments. To
582 execute this function, call it like so:
583
584 @smallexample
585 (define result (value-call some-val 10 20))
586 @end smallexample
587
588 Any values returned from a function call are @code{<gdb:value>} objects.
589
590 Note: Unlike Python scripting in @value{GDBN},
591 inferior values that are simple scalars cannot be used directly in
592 Scheme expressions that are valid for the value's data type.
593 For example, @code{(+ (parse-and-eval "int_variable") 2)} does not work.
594 And inferior values that are structures or instances of some class cannot
595 be accessed using any special syntax, instead @code{value-field} must be used.
596
597 The following value-related procedures are provided by the
598 @code{(gdb)} module.
599
600 @deffn {Scheme Procedure} value? object
601 Return @code{#t} if @var{object} is a @code{<gdb:value>} object.
602 Otherwise return @code{#f}.
603 @end deffn
604
605 @deffn {Scheme Procedure} make-value value @r{[}#:type type@r{]}
606 Many Scheme values can be converted directly to a @code{<gdb:value>}
607 with this procedure. If @var{type} is specified, the result is a value
608 of this type, and if @var{value} can't be represented with this type
609 an exception is thrown. Otherwise the type of the result is determined from
610 @var{value} as described below.
611
612 @xref{Architectures In Guile}, for a list of the builtin
613 types for an architecture.
614
615 Here's how Scheme values are converted when @var{type} argument to
616 @code{make-value} is not specified:
617
618 @table @asis
619 @item Scheme boolean
620 A Scheme boolean is converted the boolean type for the current language.
621
622 @item Scheme integer
623 A Scheme integer is converted to the first of a C @code{int},
624 @code{unsigned int}, @code{long}, @code{unsigned long},
625 @code{long long} or @code{unsigned long long} type
626 for the current architecture that can represent the value.
627
628 If the Scheme integer cannot be represented as a target integer
629 an @code{out-of-range} exception is thrown.
630
631 @item Scheme real
632 A Scheme real is converted to the C @code{double} type for the
633 current architecture.
634
635 @item Scheme string
636 A Scheme string is converted to a string in the current target
637 language using the current target encoding.
638 Characters that cannot be represented in the current target encoding
639 are replaced with the corresponding escape sequence. This is Guile's
640 @code{SCM_FAILED_CONVERSION_ESCAPE_SEQUENCE} conversion strategy
641 (@pxref{Strings,,, guile, GNU Guile Reference Manual}).
642
643 Passing @var{type} is not supported in this case,
644 if it is provided a @code{wrong-type-arg} exception is thrown.
645
646 @item @code{<gdb:lazy-string>}
647 If @var{value} is a @code{<gdb:lazy-string>} object (@pxref{Lazy Strings In
648 Guile}), then the @code{lazy-string->value} procedure is called, and
649 its result is used.
650
651 Passing @var{type} is not supported in this case,
652 if it is provided a @code{wrong-type-arg} exception is thrown.
653
654 @item Scheme bytevector
655 If @var{value} is a Scheme bytevector and @var{type} is provided,
656 @var{value} must be the same size, in bytes, of values of type @var{type},
657 and the result is essentially created by using @code{memcpy}.
658
659 If @var{value} is a Scheme bytevector and @var{type} is not provided,
660 the result is an array of type @code{uint8} of the same length.
661 @end table
662 @end deffn
663
664 @cindex optimized out value in guile
665 @deffn {Scheme Procedure} value-optimized-out? value
666 Return @code{#t} if the compiler optimized out @var{value},
667 thus it is not available for fetching from the inferior.
668 Otherwise return @code{#f}.
669 @end deffn
670
671 @deffn {Scheme Procedure} value-address value
672 If @var{value} is addressable, returns a
673 @code{<gdb:value>} object representing the address.
674 Otherwise, @code{#f} is returned.
675 @end deffn
676
677 @deffn {Scheme Procedure} value-type value
678 Return the type of @var{value} as a @code{<gdb:type>} object
679 (@pxref{Types In Guile}).
680 @end deffn
681
682 @deffn {Scheme Procedure} value-dynamic-type value
683 Return the dynamic type of @var{value}. This uses C@t{++} run-time
684 type information (@acronym{RTTI}) to determine the dynamic type of the
685 value. If the value is of class type, it will return the class in
686 which the value is embedded, if any. If the value is of pointer or
687 reference to a class type, it will compute the dynamic type of the
688 referenced object, and return a pointer or reference to that type,
689 respectively. In all other cases, it will return the value's static
690 type.
691
692 Note that this feature will only work when debugging a C@t{++} program
693 that includes @acronym{RTTI} for the object in question. Otherwise,
694 it will just return the static type of the value as in @kbd{ptype foo}.
695 @xref{Symbols, ptype}.
696 @end deffn
697
698 @deffn {Scheme Procedure} value-cast value type
699 Return a new instance of @code{<gdb:value>} that is the result of
700 casting @var{value} to the type described by @var{type}, which must
701 be a @code{<gdb:type>} object. If the cast cannot be performed for some
702 reason, this method throws an exception.
703 @end deffn
704
705 @deffn {Scheme Procedure} value-dynamic-cast value type
706 Like @code{value-cast}, but works as if the C@t{++} @code{dynamic_cast}
707 operator were used. Consult a C@t{++} reference for details.
708 @end deffn
709
710 @deffn {Scheme Procedure} value-reinterpret-cast value type
711 Like @code{value-cast}, but works as if the C@t{++} @code{reinterpret_cast}
712 operator were used. Consult a C@t{++} reference for details.
713 @end deffn
714
715 @deffn {Scheme Procedure} value-dereference value
716 For pointer data types, this method returns a new @code{<gdb:value>} object
717 whose contents is the object pointed to by @var{value}. For example, if
718 @code{foo} is a C pointer to an @code{int}, declared in your C program as
719
720 @smallexample
721 int *foo;
722 @end smallexample
723
724 @noindent
725 then you can use the corresponding @code{<gdb:value>} to access what
726 @code{foo} points to like this:
727
728 @smallexample
729 (define bar (value-dereference foo))
730 @end smallexample
731
732 The result @code{bar} will be a @code{<gdb:value>} object holding the
733 value pointed to by @code{foo}.
734
735 A similar function @code{value-referenced-value} exists which also
736 returns @code{<gdb:value>} objects corresonding to the values pointed to
737 by pointer values (and additionally, values referenced by reference
738 values). However, the behavior of @code{value-dereference}
739 differs from @code{value-referenced-value} by the fact that the
740 behavior of @code{value-dereference} is identical to applying the C
741 unary operator @code{*} on a given value. For example, consider a
742 reference to a pointer @code{ptrref}, declared in your C@t{++} program
743 as
744
745 @smallexample
746 typedef int *intptr;
747 ...
748 int val = 10;
749 intptr ptr = &val;
750 intptr &ptrref = ptr;
751 @end smallexample
752
753 Though @code{ptrref} is a reference value, one can apply the method
754 @code{value-dereference} to the @code{<gdb:value>} object corresponding
755 to it and obtain a @code{<gdb:value>} which is identical to that
756 corresponding to @code{val}. However, if you apply the method
757 @code{value-referenced-value}, the result would be a @code{<gdb:value>}
758 object identical to that corresponding to @code{ptr}.
759
760 @smallexample
761 (define scm-ptrref (parse-and-eval "ptrref"))
762 (define scm-val (value-dereference scm-ptrref))
763 (define scm-ptr (value-referenced-value scm-ptrref))
764 @end smallexample
765
766 The @code{<gdb:value>} object @code{scm-val} is identical to that
767 corresponding to @code{val}, and @code{scm-ptr} is identical to that
768 corresponding to @code{ptr}. In general, @code{value-dereference} can
769 be applied whenever the C unary operator @code{*} can be applied
770 to the corresponding C value. For those cases where applying both
771 @code{value-dereference} and @code{value-referenced-value} is allowed,
772 the results obtained need not be identical (as we have seen in the above
773 example). The results are however identical when applied on
774 @code{<gdb:value>} objects corresponding to pointers (@code{<gdb:value>}
775 objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
776 @end deffn
777
778 @deffn {Scheme Procedure} value-referenced-value value
779 For pointer or reference data types, this method returns a new
780 @code{<gdb:value>} object corresponding to the value referenced by the
781 pointer/reference value. For pointer data types,
782 @code{value-dereference} and @code{value-referenced-value} produce
783 identical results. The difference between these methods is that
784 @code{value-dereference} cannot get the values referenced by reference
785 values. For example, consider a reference to an @code{int}, declared
786 in your C@t{++} program as
787
788 @smallexample
789 int val = 10;
790 int &ref = val;
791 @end smallexample
792
793 @noindent
794 then applying @code{value-dereference} to the @code{<gdb:value>} object
795 corresponding to @code{ref} will result in an error, while applying
796 @code{value-referenced-value} will result in a @code{<gdb:value>} object
797 identical to that corresponding to @code{val}.
798
799 @smallexample
800 (define scm-ref (parse-and-eval "ref"))
801 (define err-ref (value-dereference scm-ref)) ;; error
802 (define scm-val (value-referenced-value scm-ref)) ;; ok
803 @end smallexample
804
805 The @code{<gdb:value>} object @code{scm-val} is identical to that
806 corresponding to @code{val}.
807 @end deffn
808
809 @deffn {Scheme Procedure} value-field value field-name
810 Return field @var{field-name} from @code{<gdb:value>} object @var{value}.
811 @end deffn
812
813 @deffn {Scheme Procedure} value-subscript value index
814 Return the value of array @var{value} at index @var{index}.
815 @var{value} must be a subscriptable @code{<gdb:value>} object.
816 @end deffn
817
818 @deffn {Scheme Procedure} value-call value arg-list
819 Perform an inferior function call, taking @var{value} as a pointer
820 to the function to call.
821 Each element of list @var{arg-list} must be a <gdb:value> object or an object
822 that can be converted to a value.
823 The result is the value returned by the function.
824 @end deffn
825
826 @deffn {Scheme Procedure} value->bool value
827 Return the Scheme boolean 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->integer
832 Return the Scheme integer representing @code{<gdb:value>} @var{value}.
833 The value must be ``integer like''. Pointers are ok.
834 @end deffn
835
836 @deffn {Scheme Procedure} value->real
837 Return the Scheme real number representing @code{<gdb:value>} @var{value}.
838 The value must be a number.
839 @end deffn
840
841 @deffn {Scheme Procedure} value->bytevector
842 Return a Scheme bytevector with the raw contents of @code{<gdb:value>}
843 @var{value}. No transformation, endian or otherwise, is performed.
844 @end deffn
845
846 @c TODO: line length
847 @deffn {Scheme Procedure} value->string value @r{[}#:encoding encoding@r{]} @r{[}#:errors errors@r{]} @r{[}#:length length@r{]}
848 If @var{value>} represents a string, then this method
849 converts the contents to a Guile string. Otherwise, this method will
850 throw an exception.
851
852 Values are interpreted as strings according to the rules of the
853 current language. If the optional length argument is given, the
854 string will be converted to that length, and will include any embedded
855 zeroes that the string may contain. Otherwise, for languages
856 where the string is zero-terminated, the entire string will be
857 converted.
858
859 For example, in C-like languages, a value is a string if it is a pointer
860 to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
861 or @code{char32_t}.
862
863 If the optional @var{encoding} argument is given, it must be a string
864 naming the encoding of the string in the @code{<gdb:value>}, such as
865 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
866 the same encodings as the corresponding argument to Guile's
867 @code{scm_from_stringn} function, and the Guile codec machinery will be used
868 to convert the string. If @var{encoding} is not given, or if
869 @var{encoding} is the empty string, then either the @code{target-charset}
870 (@pxref{Character Sets}) will be used, or a language-specific encoding
871 will be used, if the current language is able to supply one.
872
873 The optional @var{errors} argument is one of @code{#f}, @code{error} or
874 @code{substitute}. @code{error} and @code{substitute} must be symbols.
875 If @var{errors} is not specified, or if its value is @code{#f}, then the
876 default conversion strategy is used, which is set with the Scheme function
877 @code{set-port-conversion-strategy!}.
878 If the value is @code{'error} then an exception is thrown if there is any
879 conversion error. If the value is @code{'substitute} then any conversion
880 error is replaced with question marks.
881 @xref{Strings,,, guile, GNU Guile Reference Manual}.
882
883 If the optional @var{length} argument is given, the string will be
884 fetched and converted to the given length.
885 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
886 @end deffn
887
888 @c TODO: line length
889 @deffn {Scheme Procedure} value->lazy-string value @r{[}#:encoding encoding@r{]} @r{[}#:length length@r{]})
890 If this @code{<gdb:value>} represents a string, then this method
891 converts @var{value} to a @code{<gdb:lazy-string} (@pxref{Lazy Strings
892 In Guile}). Otherwise, this method will throw an exception.
893
894 If the optional @var{encoding} argument is given, it must be a string
895 naming the encoding of the @code{<gdb:lazy-string}. Some examples are:
896 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. If the
897 @var{encoding} argument is an encoding that @value{GDBN} does not
898 recognize, @value{GDBN} will raise an error.
899
900 When a lazy string is printed, the @value{GDBN} encoding machinery is
901 used to convert the string during printing. If the optional
902 @var{encoding} argument is not provided, or is an empty string,
903 @value{GDBN} will automatically select the encoding most suitable for
904 the string type. For further information on encoding in @value{GDBN}
905 please see @ref{Character Sets}.
906
907 If the optional @var{length} argument is given, the string will be
908 fetched and encoded to the length of characters specified. If
909 the @var{length} argument is not provided, the string will be fetched
910 and encoded until a null of appropriate width is found.
911 The length must be a Scheme integer and not a @code{<gdb:value>} integer.
912 @end deffn
913
914 @deffn {Scheme Procedure} value-lazy? value
915 Return @code{#t} if @var{value} has not yet been fetched
916 from the inferior.
917 Otherwise return @code{#f}.
918 @value{GDBN} does not fetch values until necessary, for efficiency.
919 For example:
920
921 @smallexample
922 (define myval (parse-and-eval "somevar"))
923 @end smallexample
924
925 The value of @code{somevar} is not fetched at this time. It will be
926 fetched when the value is needed, or when the @code{fetch-lazy}
927 procedure is invoked.
928 @end deffn
929
930 @deffn {Scheme Procedure} make-lazy-value type address
931 Return a @code{<gdb:value>} that will be lazily fetched from the target.
932 @var{type} is an object of type @code{<gdb:type>} and @var{address} is
933 a Scheme integer of the address of the object in target memory.
934 @end deffn
935
936 @deffn {Scheme Procedure} value-fetch-lazy! value
937 If @var{value} is a lazy value (@code{(value-lazy? value)} is @code{#t}),
938 then the value is fetched from the inferior.
939 Any errors that occur in the process will produce a Guile exception.
940
941 If @var{value} is not a lazy value, this method has no effect.
942
943 The result of this function is unspecified.
944 @end deffn
945
946 @deffn {Scheme Procedure} value-print value
947 Return the string representation (print form) of @code{<gdb:value>}
948 @var{value}.
949 @end deffn
950
951 @node Arithmetic In Guile
952 @subsubsection Arithmetic In Guile
953
954 The @code{(gdb)} module provides several functions for performing
955 arithmetic on @code{<gdb:value>} objects.
956 The arithmetic is performed as if it were done by the target,
957 and therefore has target semantics which are not necessarily
958 those of Scheme. For example operations work with a fixed precision,
959 not the arbitrary precision of Scheme.
960
961 Wherever a function takes an integer or pointer as an operand,
962 @value{GDBN} will convert appropriate Scheme values to perform
963 the operation.
964
965 @deffn {Scheme Procedure} value-add a b
966 @end deffn
967
968 @deffn {Scheme Procedure} value-sub a b
969 @end deffn
970
971 @deffn {Scheme Procedure} value-mul a b
972 @end deffn
973
974 @deffn {Scheme Procedure} value-div a b
975 @end deffn
976
977 @deffn {Scheme Procedure} value-rem a b
978 @end deffn
979
980 @deffn {Scheme Procedure} value-mod a b
981 @end deffn
982
983 @deffn {Scheme Procedure} value-pow a b
984 @end deffn
985
986 @deffn {Scheme Procedure} value-not a
987 @end deffn
988
989 @deffn {Scheme Procedure} value-neg a
990 @end deffn
991
992 @deffn {Scheme Procedure} value-pos a
993 @end deffn
994
995 @deffn {Scheme Procedure} value-abs a
996 @end deffn
997
998 @deffn {Scheme Procedure} value-lsh a b
999 @end deffn
1000
1001 @deffn {Scheme Procedure} value-rsh a b
1002 @end deffn
1003
1004 @deffn {Scheme Procedure} value-min a b
1005 @end deffn
1006
1007 @deffn {Scheme Procedure} value-max a b
1008 @end deffn
1009
1010 @deffn {Scheme Procedure} value-lognot a
1011 @end deffn
1012
1013 @deffn {Scheme Procedure} value-logand a b
1014 @end deffn
1015
1016 @deffn {Scheme Procedure} value-logior a b
1017 @end deffn
1018
1019 @deffn {Scheme Procedure} value-logxor a b
1020 @end deffn
1021
1022 @deffn {Scheme Procedure} value=? a b
1023 @end deffn
1024
1025 @deffn {Scheme Procedure} value<? a b
1026 @end deffn
1027
1028 @deffn {Scheme Procedure} value<=? a b
1029 @end deffn
1030
1031 @deffn {Scheme Procedure} value>? a b
1032 @end deffn
1033
1034 @deffn {Scheme Procedure} value>=? a b
1035 @end deffn
1036
1037 Scheme does not provide a @code{not-equal} function,
1038 and thus Guile support in @value{GDBN} does not either.
1039
1040 @node Types In Guile
1041 @subsubsection Types In Guile
1042 @cindex types in guile
1043 @cindex guile, working with types
1044
1045 @tindex <gdb:type>
1046 @value{GDBN} represents types from the inferior in objects of type
1047 @code{<gdb:type>}.
1048
1049 The following type-related procedures are provided by the
1050 @code{(gdb)} module.
1051
1052 @deffn {Scheme Procedure} type? object
1053 Return @code{#t} if @var{object} is an object of type @code{<gdb:type>}.
1054 Otherwise return @code{#f}.
1055 @end deffn
1056
1057 @deffn {Scheme Procedure} lookup-type name @r{[}#:block block@r{]}
1058 This function looks up a type by name. @var{name} is the name of the
1059 type to look up. It must be a string.
1060
1061 If @var{block} is given, it is an object of type @code{<gdb:block>},
1062 and @var{name} is looked up in that scope.
1063 Otherwise, it is searched for globally.
1064
1065 Ordinarily, this function will return an instance of @code{<gdb:type>}.
1066 If the named type cannot be found, it will throw an exception.
1067 @end deffn
1068
1069 @deffn {Scheme Procedure} type-code type
1070 Return the type code of @var{type}. The type code will be one of the
1071 @code{TYPE_CODE_} constants defined below.
1072 @end deffn
1073
1074 @deffn {Scheme Procedure} type-tag type
1075 Return the tag name of @var{type}. The tag name is the name after
1076 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
1077 languages have this concept. If this type has no tag name, then
1078 @code{#f} is returned.
1079 @end deffn
1080
1081 @deffn {Scheme Procedure} type-name type
1082 Return the name of @var{type}.
1083 If this type has no name, then @code{#f} is returned.
1084 @end deffn
1085
1086 @deffn {Scheme Procedure} type-print-name type
1087 Return the print name of @var{type}.
1088 This returns something even for anonymous types.
1089 For example, for an anonymous C struct @code{"struct @{...@}"} is returned.
1090 @end deffn
1091
1092 @deffn {Scheme Procedure} type-sizeof type
1093 Return the size of this type, in target @code{char} units. Usually, a
1094 target's @code{char} type will be an 8-bit byte. However, on some
1095 unusual platforms, this type may have a different size.
1096 @end deffn
1097
1098 @deffn {Scheme Procedure} type-strip-typedefs type
1099 Return a new @code{<gdb:type>} that represents the real type of @var{type},
1100 after removing all layers of typedefs.
1101 @end deffn
1102
1103 @deffn {Scheme Procedure} type-array type n1 @r{[}n2@r{]}
1104 Return a new @code{<gdb:type>} object which represents an array of this
1105 type. If one argument is given, it is the inclusive upper bound of
1106 the array; in this case the lower bound is zero. If two arguments are
1107 given, the first argument is the lower bound of the array, and the
1108 second argument is the upper bound of the array. An array's length
1109 must not be negative, but the bounds can be.
1110 @end deffn
1111
1112 @deffn {Scheme Procedure} type-vector type n1 @r{[}n2@r{]}
1113 Return a new @code{<gdb:type>} object which represents a vector of this
1114 type. If one argument is given, it is the inclusive upper bound of
1115 the vector; in this case the lower bound is zero. If two arguments are
1116 given, the first argument is the lower bound of the vector, and the
1117 second argument is the upper bound of the vector. A vector's length
1118 must not be negative, but the bounds can be.
1119
1120 The difference between an @code{array} and a @code{vector} is that
1121 arrays behave like in C: when used in expressions they decay to a pointer
1122 to the first element whereas vectors are treated as first class values.
1123 @end deffn
1124
1125 @deffn {Scheme Procedure} type-pointer type
1126 Return a new @code{<gdb:type>} object which represents a pointer to
1127 @var{type}.
1128 @end deffn
1129
1130 @deffn {Scheme Procedure} type-range type
1131 Return a list of two elements: the low bound and high bound of @var{type}.
1132 If @var{type} does not have a range, an exception is thrown.
1133 @end deffn
1134
1135 @deffn {Scheme Procedure} type-reference type
1136 Return a new @code{<gdb:type>} object which represents a reference to
1137 @var{type}.
1138 @end deffn
1139
1140 @deffn {Scheme Procedure} type-target type
1141 Return a new @code{<gdb:type>} object which represents the target type
1142 of @var{type}.
1143
1144 For a pointer type, the target type is the type of the pointed-to
1145 object. For an array type (meaning C-like arrays), the target type is
1146 the type of the elements of the array. For a function or method type,
1147 the target type is the type of the return value. For a complex type,
1148 the target type is the type of the elements. For a typedef, the
1149 target type is the aliased type.
1150
1151 If the type does not have a target, this method will throw an
1152 exception.
1153 @end deffn
1154
1155 @deffn {Scheme Procedure} type-const type
1156 Return a new @code{<gdb:type>} object which represents a
1157 @code{const}-qualified variant of @var{type}.
1158 @end deffn
1159
1160 @deffn {Scheme Procedure} type-volatile type
1161 Return a new @code{<gdb:type>} object which represents a
1162 @code{volatile}-qualified variant of @var{type}.
1163 @end deffn
1164
1165 @deffn {Scheme Procedure} type-unqualified type
1166 Return a new @code{<gdb:type>} object which represents an unqualified
1167 variant of @var{type}. That is, the result is neither @code{const} nor
1168 @code{volatile}.
1169 @end deffn
1170
1171 @deffn {Scheme Procedure} type-num-fields
1172 Return the number of fields of @code{<gdb:type>} @var{type}.
1173 @end deffn
1174
1175 @deffn {Scheme Procedure} type-fields type
1176 Return the fields of @var{type} as a list.
1177 For structure and union types, @code{fields} has the usual meaning.
1178 Range types have two fields, the minimum and maximum values. Enum types
1179 have one field per enum constant. Function and method types have one
1180 field per parameter. The base types of C@t{++} classes are also
1181 represented as fields. If the type has no fields, or does not fit
1182 into one of these categories, an empty list will be returned.
1183 @xref{Fields of a type in Guile}.
1184 @end deffn
1185
1186 @deffn {Scheme Procedure} make-field-iterator type
1187 Return the fields of @var{type} as a <gdb:iterator> object.
1188 @xref{Iterators In Guile}.
1189 @end deffn
1190
1191 @deffn {Scheme Procedure} type-field type field-name
1192 Return field named @var{field-name} in @var{type}.
1193 The result is an object of type @code{<gdb:field>}.
1194 @xref{Fields of a type in Guile}.
1195 If the type does not have fields, or @var{field-name} is not a field
1196 of @var{type}, an exception is thrown.
1197
1198 For example, if @code{some-type} is a @code{<gdb:type>} instance holding
1199 a structure type, you can access its @code{foo} field with:
1200
1201 @smallexample
1202 (define bar (type-field some-type "foo"))
1203 @end smallexample
1204
1205 @code{bar} will be a @code{<gdb:field>} object.
1206 @end deffn
1207
1208 @deffn {Scheme Procedure} type-has-field? type name
1209 Return @code{#t} if @code{<gdb:type>} @var{type} has field named @var{name}.
1210 Otherwise return @code{#f}.
1211 @end deffn
1212
1213 Each type has a code, which indicates what category this type falls
1214 into. The available type categories are represented by constants
1215 defined in the @code{(gdb)} module:
1216
1217 @vtable @code
1218 @item TYPE_CODE_PTR
1219 The type is a pointer.
1220
1221 @item TYPE_CODE_ARRAY
1222 The type is an array.
1223
1224 @item TYPE_CODE_STRUCT
1225 The type is a structure.
1226
1227 @item TYPE_CODE_UNION
1228 The type is a union.
1229
1230 @item TYPE_CODE_ENUM
1231 The type is an enum.
1232
1233 @item TYPE_CODE_FLAGS
1234 A bit flags type, used for things such as status registers.
1235
1236 @item TYPE_CODE_FUNC
1237 The type is a function.
1238
1239 @item TYPE_CODE_INT
1240 The type is an integer type.
1241
1242 @item TYPE_CODE_FLT
1243 A floating point type.
1244
1245 @item TYPE_CODE_VOID
1246 The special type @code{void}.
1247
1248 @item TYPE_CODE_SET
1249 A Pascal set type.
1250
1251 @item TYPE_CODE_RANGE
1252 A range type, that is, an integer type with bounds.
1253
1254 @item TYPE_CODE_STRING
1255 A string type. Note that this is only used for certain languages with
1256 language-defined string types; C strings are not represented this way.
1257
1258 @item TYPE_CODE_BITSTRING
1259 A string of bits. It is deprecated.
1260
1261 @item TYPE_CODE_ERROR
1262 An unknown or erroneous type.
1263
1264 @item TYPE_CODE_METHOD
1265 A method type, as found in C@t{++} or Java.
1266
1267 @item TYPE_CODE_METHODPTR
1268 A pointer-to-member-function.
1269
1270 @item TYPE_CODE_MEMBERPTR
1271 A pointer-to-member.
1272
1273 @item TYPE_CODE_REF
1274 A reference type.
1275
1276 @item TYPE_CODE_CHAR
1277 A character type.
1278
1279 @item TYPE_CODE_BOOL
1280 A boolean type.
1281
1282 @item TYPE_CODE_COMPLEX
1283 A complex float type.
1284
1285 @item TYPE_CODE_TYPEDEF
1286 A typedef to some other type.
1287
1288 @item TYPE_CODE_NAMESPACE
1289 A C@t{++} namespace.
1290
1291 @item TYPE_CODE_DECFLOAT
1292 A decimal floating point type.
1293
1294 @item TYPE_CODE_INTERNAL_FUNCTION
1295 A function internal to @value{GDBN}. This is the type used to represent
1296 convenience functions (@pxref{Convenience Funs}).
1297 @end vtable
1298
1299 Further support for types is provided in the @code{(gdb types)}
1300 Guile module (@pxref{Guile Types Module}).
1301
1302 @anchor{Fields of a type in Guile}
1303 Each field is represented as an object of type @code{<gdb:field>}.
1304
1305 The following field-related procedures are provided by the
1306 @code{(gdb)} module:
1307
1308 @deffn {Scheme Procedure} field? object
1309 Return @code{#t} if @var{object} is an object of type @code{<gdb:field>}.
1310 Otherwise return @code{#f}.
1311 @end deffn
1312
1313 @deffn {Scheme Procedure} field-name field
1314 Return the name of the field, or @code{#f} for anonymous fields.
1315 @end deffn
1316
1317 @deffn {Scheme Procedure} field-type field
1318 Return the type of the field. This is usually an instance of
1319 @code{<gdb:type>}, but it can be @code{#f} in some situations.
1320 @end deffn
1321
1322 @deffn {Scheme Procedure} field-enumval field
1323 Return the enum value represented by @code{<gdb:field>} @var{field}.
1324 @end deffn
1325
1326 @deffn {Scheme Procedure} field-bitpos field
1327 Return the bit position of @code{<gdb:field>} @var{field}.
1328 This attribute is not available for @code{static} fields (as in
1329 C@t{++} or Java).
1330 @end deffn
1331
1332 @deffn {Scheme Procedure} field-bitsize field
1333 If the field is packed, or is a bitfield, return the size of
1334 @code{<gdb:field>} @var{field} in bits. Otherwise, zero is returned;
1335 in which case the field's size is given by its type.
1336 @end deffn
1337
1338 @deffn {Scheme Procedure} field-artificial? field
1339 Return @code{#t} if the field is artificial, usually meaning that
1340 it was provided by the compiler and not the user.
1341 Otherwise return @code{#f}.
1342 @end deffn
1343
1344 @deffn {Scheme Procedure} field-base-class? field
1345 Return @code{#t} if the field represents a base class of a C@t{++}
1346 structure.
1347 Otherwise return @code{#f}.
1348 @end deffn
1349
1350 @node Guile Pretty Printing API
1351 @subsubsection Guile Pretty Printing API
1352 @cindex guile pretty printing api
1353
1354 An example output is provided (@pxref{Pretty Printing}).
1355
1356 A pretty-printer is represented by an object of type <gdb:pretty-printer>.
1357 Pretty-printer objects are created with @code{make-pretty-printer}.
1358
1359 The following pretty-printer-related procedures are provided by the
1360 @code{(gdb)} module:
1361
1362 @deffn {Scheme Procedure} make-pretty-printer name lookup-function
1363 Return a @code{<gdb:pretty-printer>} object named @var{name}.
1364
1365 @var{lookup-function} is a function of one parameter: the value to
1366 be printed. If the value is handled by this pretty-printer, then
1367 @var{lookup-function} returns an object of type
1368 <gdb:pretty-printer-worker> to perform the actual pretty-printing.
1369 Otherwise @var{lookup-function} returns @code{#f}.
1370 @end deffn
1371
1372 @deffn {Scheme Procedure} pretty-printer? object
1373 Return @code{#t} if @var{object} is a @code{<gdb:pretty-printer>} object.
1374 Otherwise return @code{#f}.
1375 @end deffn
1376
1377 @deffn {Scheme Procedure} pretty-printer-enabled? pretty-printer
1378 Return @code{#t} if @var{pretty-printer} is enabled.
1379 Otherwise return @code{#f}.
1380 @end deffn
1381
1382 @deffn {Scheme Procedure} set-pretty-printer-enabled! pretty-printer flag
1383 Set the enabled flag of @var{pretty-printer} to @var{flag}.
1384 The value returned in unspecified.
1385 @end deffn
1386
1387 @deffn {Scheme Procedure} make-pretty-printer-worker display-hint to-string children
1388 Return an object of type @code{<gdb:pretty-printer-worker>}.
1389
1390 This function takes three parameters:
1391
1392 @table @samp
1393 @item display-hint
1394 @var{display-hint} provides a hint to @value{GDBN} or @value{GDBN}
1395 front end via MI to change the formatting of the value being printed.
1396 The value must be a string or @code{#f} (meaning there is no hint).
1397 Several values for @var{display-hint}
1398 are predefined by @value{GDBN}:
1399
1400 @table @samp
1401 @item array
1402 Indicate that the object being printed is ``array-like''. The CLI
1403 uses this to respect parameters such as @code{set print elements} and
1404 @code{set print array}.
1405
1406 @item map
1407 Indicate that the object being printed is ``map-like'', and that the
1408 children of this value can be assumed to alternate between keys and
1409 values.
1410
1411 @item string
1412 Indicate that the object being printed is ``string-like''. If the
1413 printer's @code{to-string} function returns a Guile string of some
1414 kind, then @value{GDBN} will call its internal language-specific
1415 string-printing function to format the string. For the CLI this means
1416 adding quotation marks, possibly escaping some characters, respecting
1417 @code{set print elements}, and the like.
1418 @end table
1419
1420 @item to-string
1421 @var{to-string} is either a function of one parameter, the
1422 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1423
1424 When printing from the CLI, if the @code{to-string} method exists,
1425 then @value{GDBN} will prepend its result to the values returned by
1426 @code{children}. Exactly how this formatting is done is dependent on
1427 the display hint, and may change as more hints are added. Also,
1428 depending on the print settings (@pxref{Print Settings}), the CLI may
1429 print just the result of @code{to-string} in a stack trace, omitting
1430 the result of @code{children}.
1431
1432 If this method returns a string, it is printed verbatim.
1433
1434 Otherwise, if this method returns an instance of @code{<gdb:value>},
1435 then @value{GDBN} prints this value. This may result in a call to
1436 another pretty-printer.
1437
1438 If instead the method returns a Guile value which is convertible to a
1439 @code{<gdb:value>}, then @value{GDBN} performs the conversion and prints
1440 the resulting value. Again, this may result in a call to another
1441 pretty-printer. Guile scalars (integers, floats, and booleans) and
1442 strings are convertible to @code{<gdb:value>}; other types are not.
1443
1444 Finally, if this method returns @code{#f} then no further operations
1445 are peformed in this method and nothing is printed.
1446
1447 If the result is not one of these types, an exception is raised.
1448
1449 @var{to-string} may also be @code{#f} in which case it is left to
1450 @var{children} to print the value.
1451
1452 @item children
1453 @var{children} is either a function of one parameter, the
1454 @code{<gdb:pretty-printer-worker>} object, or @code{#f}.
1455
1456 @value{GDBN} will call this function on a pretty-printer to compute the
1457 children of the pretty-printer's value.
1458
1459 This function must return a <gdb:iterator> object.
1460 Each item returned by the iterator must be a tuple holding
1461 two elements. The first element is the ``name'' of the child; the
1462 second element is the child's value. The value can be any Guile
1463 object which is convertible to a @value{GDBN} value.
1464
1465 If @var{children} is @code{#f}, @value{GDBN} will act
1466 as though the value has no children.
1467 @end table
1468 @end deffn
1469
1470 @value{GDBN} provides a function which can be used to look up the
1471 default pretty-printer for a @code{<gdb:value>}:
1472
1473 @deffn {Scheme Procedure} default-visualizer value
1474 This function takes a @code{<gdb:value>} object as an argument. If a
1475 pretty-printer for this value exists, then it is returned. If no such
1476 printer exists, then this returns @code{#f}.
1477 @end deffn
1478
1479 @node Selecting Guile Pretty-Printers
1480 @subsubsection Selecting Guile Pretty-Printers
1481 @cindex selecting guile pretty-printers
1482
1483 The Guile list @code{*pretty-printers*} contains a set of
1484 @code{<gdb:pretty-printer>} registered objects.
1485 Printers in this list are called @code{global}
1486 printers, they're available when debugging any inferior.
1487 In addition to this, each @code{<gdb:objfile>} object contains its
1488 own set of pretty-printers (@pxref{Objfiles In Guile}).
1489
1490 Pretty-printer lookup is done by passing the value to be printed to the
1491 lookup function of each enabled object in turn.
1492 Lookup stops when a lookup function returns a non-@code{#f} value
1493 or when the list is exhausted.
1494
1495 @value{GDBN} first checks the result of @code{objfile-pretty-printers}
1496 of each @code{<gdb:objfile>} in the current program space and iteratively
1497 calls each enabled lookup function in the list for that @code{<gdb:objfile>}
1498 until a non-@code{#f} object is returned.
1499 Lookup functions must return either a @code{<gdb:pretty-printer-worker>}
1500 object or @code{#f}. Otherwise an exception is thrown.
1501 If no pretty-printer is found in the objfile lists, @value{GDBN} then
1502 searches the global pretty-printer list, calling each enabled function
1503 until a non-@code{#f} object is returned.
1504
1505 The order in which the objfiles are searched is not specified. For a
1506 given list, functions are always invoked from the head of the list,
1507 and iterated over sequentially until the end of the list, or a
1508 @code{<gdb:pretty-printer-worker>} object is returned.
1509
1510 For various reasons a pretty-printer may not work.
1511 For example, the underlying data structure may have changed and
1512 the pretty-printer is out of date.
1513
1514 The consequences of a broken pretty-printer are severe enough that
1515 @value{GDBN} provides support for enabling and disabling individual
1516 printers. For example, if @code{print frame-arguments} is on,
1517 a backtrace can become highly illegible if any argument is printed
1518 with a broken printer.
1519
1520 Pretty-printers are enabled and disabled from Scheme by calling
1521 @code{set-pretty-printer-enabled!}.
1522 @xref{Guile Pretty Printing API}.
1523
1524 @node Writing a Guile Pretty-Printer
1525 @subsubsection Writing a Guile Pretty-Printer
1526 @cindex writing a Guile pretty-printer
1527
1528 A pretty-printer consists of two basic parts: a lookup function to determine
1529 if the type is supported, and the printer itself.
1530
1531 Here is an example showing how a @code{std::string} printer might be
1532 written. @xref{Guile Pretty Printing API}, for details.
1533
1534 @smallexample
1535 (define (make-my-string-printer value)
1536 "Print a my::string string"
1537 (make-pretty-printer-worker
1538 "string"
1539 (lambda (printer)
1540 (value-field value "_data"))
1541 #f))
1542 @end smallexample
1543
1544 And here is an example showing how a lookup function for the printer
1545 example above might be written.
1546
1547 @smallexample
1548 (define (string-begins-with str prefix)
1549 (= (string-prefix-length str prefix) (string-length prefix)))
1550
1551 (define (str-lookup-function value)
1552 (let ((tag (type-tag (value-type value))))
1553 (and tag
1554 (string-begins-with tag "my::string<")
1555 (make-std-string-printer value))))
1556 @end smallexample
1557
1558 Then to register this printer in the global printer list:
1559
1560 @smallexample
1561 (append-pretty-printer!
1562 (make-pretty-printer "my-string" str-lookup-function))
1563 @end smallexample
1564
1565 The example lookup function extracts the value's type, and attempts to
1566 match it to a type that it can pretty-print. If it is a type the
1567 printer can pretty-print, it will return a <gdb:pretty-printer-worker> object.
1568 If not, it returns @code{#f}.
1569
1570 We recommend that you put your core pretty-printers into a Guile
1571 package. If your pretty-printers are for use with a library, we
1572 further recommend embedding a version number into the package name.
1573 This practice will enable @value{GDBN} to load multiple versions of
1574 your pretty-printers at the same time, because they will have
1575 different names.
1576
1577 You should write auto-loaded code (@pxref{Guile Auto-loading}) such that it
1578 can be evaluated multiple times without changing its meaning. An
1579 ideal auto-load file will consist solely of @code{import}s of your
1580 printer modules, followed by a call to a register pretty-printers with
1581 the current objfile.
1582
1583 Taken as a whole, this approach will scale nicely to multiple
1584 inferiors, each potentially using a different library version.
1585 Embedding a version number in the Guile package name will ensure that
1586 @value{GDBN} is able to load both sets of printers simultaneously.
1587 Then, because the search for pretty-printers is done by objfile, and
1588 because your auto-loaded code took care to register your library's
1589 printers with a specific objfile, @value{GDBN} will find the correct
1590 printers for the specific version of the library used by each
1591 inferior.
1592
1593 To continue the @code{my::string} example,
1594 this code might appear in @code{(my-project my-library v1)}:
1595
1596 @smallexample
1597 (use-modules ((gdb)))
1598 (define (register-printers objfile)
1599 (append-objfile-pretty-printer!
1600 (make-pretty-printer "my-string" str-lookup-function)))
1601 @end smallexample
1602
1603 @noindent
1604 And then the corresponding contents of the auto-load file would be:
1605
1606 @smallexample
1607 (use-modules ((gdb) (my-project my-library v1)))
1608 (register-printers (current-objfile))
1609 @end smallexample
1610
1611 The previous example illustrates a basic pretty-printer.
1612 There are a few things that can be improved on.
1613 The printer only handles one type, whereas a library typically has
1614 several types. One could install a lookup function for each desired type
1615 in the library, but one could also have a single lookup function recognize
1616 several types. The latter is the conventional way this is handled.
1617 If a pretty-printer can handle multiple data types, then its
1618 @dfn{subprinters} are the printers for the individual data types.
1619
1620 The @code{(gdb printing)} module provides a formal way of solving this
1621 problem (@pxref{Guile Printing Module}).
1622 Here is another example that handles multiple types.
1623
1624 These are the types we are going to pretty-print:
1625
1626 @smallexample
1627 struct foo @{ int a, b; @};
1628 struct bar @{ struct foo x, y; @};
1629 @end smallexample
1630
1631 Here are the printers:
1632
1633 @smallexample
1634 (define (make-foo-printer value)
1635 "Print a foo object"
1636 (make-pretty-printer-worker
1637 "foo"
1638 (lambda (printer)
1639 (format #f "a=<~a> b=<~a>"
1640 (value-field value "a") (value-field value "a")))
1641 #f))
1642
1643 (define (make-bar-printer value)
1644 "Print a bar object"
1645 (make-pretty-printer-worker
1646 "foo"
1647 (lambda (printer)
1648 (format #f "x=<~a> y=<~a>"
1649 (value-field value "x") (value-field value "y")))
1650 #f))
1651 @end smallexample
1652
1653 This example doesn't need a lookup function, that is handled by the
1654 @code{(gdb printing)} module. Instead a function is provided to build up
1655 the object that handles the lookup.
1656
1657 @smallexample
1658 (use-modules ((gdb printing)))
1659
1660 (define (build-pretty-printer)
1661 (let ((pp (make-pretty-printer-collection "my-library")))
1662 (pp-collection-add-tag-printer "foo" make-foo-printer)
1663 (pp-collection-add-tag-printer "bar" make-bar-printer)
1664 pp))
1665 @end smallexample
1666
1667 And here is the autoload support:
1668
1669 @smallexample
1670 (use-modules ((gdb) (my-library)))
1671 (append-objfile-pretty-printer! (current-objfile) (build-pretty-printer))
1672 @end smallexample
1673
1674 Finally, when this printer is loaded into @value{GDBN}, here is the
1675 corresponding output of @samp{info pretty-printer}:
1676
1677 @smallexample
1678 (gdb) info pretty-printer
1679 my_library.so:
1680 my-library
1681 foo
1682 bar
1683 @end smallexample
1684
1685 @node Objfiles In Guile
1686 @subsubsection Objfiles In Guile
1687
1688 @cindex objfiles in guile
1689 @tindex <gdb:objfile>
1690 @value{GDBN} loads symbols for an inferior from various
1691 symbol-containing files (@pxref{Files}). These include the primary
1692 executable file, any shared libraries used by the inferior, and any
1693 separate debug info files (@pxref{Separate Debug Files}).
1694 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
1695
1696 Each objfile is represented as an object of type @code{<gdb:objfile>}.
1697
1698 The following objfile-related procedures are provided by the
1699 @code{(gdb)} module:
1700
1701 @deffn {Scheme Procedure} objfile? object
1702 Return @code{#t} if @var{object} is a @code{<gdb:objfile>} object.
1703 Otherwise return @code{#f}.
1704 @end deffn
1705
1706 @deffn {Scheme Procedure} objfile-valid? objfile
1707 Return @code{#t} if @var{objfile} is valid, @code{#f} if not.
1708 A @code{<gdb:objfile>} object can become invalid
1709 if the object file it refers to is not loaded in @value{GDBN} any
1710 longer. All other @code{<gdb:objfile>} procedures will throw an exception
1711 if it is invalid at the time the procedure is called.
1712 @end deffn
1713
1714 @deffn {Scheme Procedure} objfile-filename objfile
1715 Return the file name of @var{objfile} as a string.
1716 @end deffn
1717
1718 @deffn {Scheme Procedure} objfile-pretty-printers objfile
1719 Return the list of registered @code{<gdb:pretty-printer>} objects for
1720 @var{objfile}. @xref{Guile Pretty Printing API}, for more information.
1721 @end deffn
1722
1723 @deffn {Scheme Procedure} set-objfile-pretty-printers! objfile printer-list
1724 Set the list of registered @code{<gdb:pretty-printer>} objects for
1725 @var{objfile} to @var{printer-list}.
1726 @var{printer-list} must be a list of @code{<gdb:pretty-printer>} objects.
1727 @xref{Guile Pretty Printing API}, for more information.
1728 @end deffn
1729
1730 @deffn {Scheme Procedure} current-objfile
1731 When auto-loading a Guile script (@pxref{Guile Auto-loading}), @value{GDBN}
1732 sets the ``current objfile'' to the corresponding objfile. This
1733 function returns the current objfile. If there is no current objfile,
1734 this function returns @code{#f}.
1735 @end deffn
1736
1737 @deffn {Scheme Procedure} objfiles
1738 Return a list of all the objfiles in the current program space.
1739 @end deffn
1740
1741 @node Frames In Guile
1742 @subsubsection Accessing inferior stack frames from Guile.
1743
1744 @cindex frames in guile
1745 When the debugged program stops, @value{GDBN} is able to analyze its call
1746 stack (@pxref{Frames,,Stack frames}). The @code{<gdb:frame>} class
1747 represents a frame in the stack. A @code{<gdb:frame>} object is only valid
1748 while its corresponding frame exists in the inferior's stack. If you try
1749 to use an invalid frame object, @value{GDBN} will throw a
1750 @code{gdb:invalid-object} exception (@pxref{Guile Exception Handling}).
1751
1752 Two @code{<gdb:frame>} objects can be compared for equality with the
1753 @code{equal?} function, like:
1754
1755 @smallexample
1756 (@value{GDBP}) guile (equal? (newest-frame) (selected-frame))
1757 #t
1758 @end smallexample
1759
1760 The following frame-related procedures are provided by the
1761 @code{(gdb)} module:
1762
1763 @deffn {Scheme Procedure} frame? object
1764 Return @code{#t} if @var{object} is a @code{<gdb:frame>} object.
1765 Otherwise return @code{#f}.
1766 @end deffn
1767
1768 @deffn {Scheme Procedure} frame-valid? frame
1769 Returns @code{#t} if @var{frame} is valid, @code{#f} if not.
1770 A frame object can become invalid if the frame it refers to doesn't
1771 exist anymore in the inferior. All @code{<gdb:frame>} procedures will throw
1772 an exception if the frame is invalid at the time the procedure is called.
1773 @end deffn
1774
1775 @deffn {Scheme Procedure} frame-name frame
1776 Return the function name of @var{frame}, or @code{#f} if it can't be
1777 obtained.
1778 @end deffn
1779
1780 @deffn {Scheme Procedure} frame-arch frame
1781 Return the @code{<gdb:architecture>} object corresponding to @var{frame}'s
1782 architecture. @xref{Architectures In Guile}.
1783 @end deffn
1784
1785 @deffn {Scheme Procedure} frame-type frame
1786 Return the type of @var{frame}. The value can be one of:
1787
1788 @table @code
1789 @item NORMAL_FRAME
1790 An ordinary stack frame.
1791
1792 @item DUMMY_FRAME
1793 A fake stack frame that was created by @value{GDBN} when performing an
1794 inferior function call.
1795
1796 @item INLINE_FRAME
1797 A frame representing an inlined function. The function was inlined
1798 into a @code{NORMAL_FRAME} that is older than this one.
1799
1800 @item TAILCALL_FRAME
1801 A frame representing a tail call. @xref{Tail Call Frames}.
1802
1803 @item SIGTRAMP_FRAME
1804 A signal trampoline frame. This is the frame created by the OS when
1805 it calls into a signal handler.
1806
1807 @item ARCH_FRAME
1808 A fake stack frame representing a cross-architecture call.
1809
1810 @item SENTINEL_FRAME
1811 This is like @code{NORMAL_FRAME}, but it is only used for the
1812 newest frame.
1813 @end table
1814 @end deffn
1815
1816 @deffn {Scheme Procedure} frame-unwind-stop-reason frame
1817 Return an integer representing the reason why it's not possible to find
1818 more frames toward the outermost frame. Use
1819 @code{unwind-stop-reason-string} to convert the value returned by this
1820 function to a string. The value can be one of:
1821
1822 @table @code
1823 @item FRAME_UNWIND_NO_REASON
1824 No particular reason (older frames should be available).
1825
1826 @item FRAME_UNWIND_NULL_ID
1827 The previous frame's analyzer returns an invalid result.
1828
1829 @item FRAME_UNWIND_OUTERMOST
1830 This frame is the outermost.
1831
1832 @item FRAME_UNWIND_UNAVAILABLE
1833 Cannot unwind further, because that would require knowing the
1834 values of registers or memory that have not been collected.
1835
1836 @item FRAME_UNWIND_INNER_ID
1837 This frame ID looks like it ought to belong to a NEXT frame,
1838 but we got it for a PREV frame. Normally, this is a sign of
1839 unwinder failure. It could also indicate stack corruption.
1840
1841 @item FRAME_UNWIND_SAME_ID
1842 This frame has the same ID as the previous one. That means
1843 that unwinding further would almost certainly give us another
1844 frame with exactly the same ID, so break the chain. Normally,
1845 this is a sign of unwinder failure. It could also indicate
1846 stack corruption.
1847
1848 @item FRAME_UNWIND_NO_SAVED_PC
1849 The frame unwinder did not find any saved PC, but we needed
1850 one to unwind further.
1851
1852 @item FRAME_UNWIND_FIRST_ERROR
1853 Any stop reason greater or equal to this value indicates some kind
1854 of error. This special value facilitates writing code that tests
1855 for errors in unwinding in a way that will work correctly even if
1856 the list of the other values is modified in future @value{GDBN}
1857 versions. Using it, you could write:
1858
1859 @smallexample
1860 (define reason (frame-unwind-stop-readon (selected-frame)))
1861 (define reason-str (unwind-stop-reason-string reason))
1862 (if (>= reason FRAME_UNWIND_FIRST_ERROR)
1863 (format #t "An error occured: ~s\n" reason-str))
1864 @end smallexample
1865 @end table
1866 @end deffn
1867
1868 @deffn {Scheme Procedure} frame-pc frame
1869 Return the frame's resume address.
1870 @end deffn
1871
1872 @deffn {Scheme Procedure} frame-block frame
1873 Return the frame's code block as a @code{<gdb:block>} object.
1874 @xref{Blocks In Guile}.
1875 @end deffn
1876
1877 @deffn {Scheme Procedure} frame-function frame
1878 Return the symbol for the function corresponding to this frame
1879 as a @code{<gdb:symbol>} object, or @code{#f} if there isn't one.
1880 @xref{Symbols In Guile}.
1881 @end deffn
1882
1883 @deffn {Scheme Procedure} frame-older frame
1884 Return the frame that called @var{frame}.
1885 @end deffn
1886
1887 @deffn {Scheme Procedure} frame-newer frame
1888 Return the frame called by @var{frame}.
1889 @end deffn
1890
1891 @deffn {Scheme Procedure} frame-sal frame
1892 Return the frame's @code{<gdb:sal>} (symtab and line) object.
1893 @xref{Symbol Tables In Guile}.
1894 @end deffn
1895
1896 @deffn {Scheme Procedure} frame-read-var variable @r{[}#:block block@r{]}
1897 Return the value of @var{variable} in this frame. If the optional
1898 argument @var{block} is provided, search for the variable from that
1899 block; otherwise start at the frame's current block (which is
1900 determined by the frame's current program counter). @var{variable}
1901 must be a string or a @code{<gdb:symbol>} object. @var{block} must be a
1902 @code{<gdb:block>} object.
1903 @end deffn
1904
1905 @deffn {Scheme Procedure} frame-select frame
1906 Set @var{frame} to be the selected frame. @xref{Stack, ,Examining the
1907 Stack}.
1908 @end deffn
1909
1910 @deffn {Scheme Procedure} selected-frame
1911 Return the selected frame object. @xref{Selection,,Selecting a Frame}.
1912 @end deffn
1913
1914 @deffn {Scheme Procedure} newest-frame
1915 Return the newest frame object for the selected thread.
1916 @end deffn
1917
1918 @deffn {Scheme Procedure} unwind-stop-reason-string reason
1919 Return a string explaining the reason why @value{GDBN} stopped unwinding
1920 frames, as expressed by the given @var{reason} code (an integer, see the
1921 @code{frame-unwind-stop-reason} procedure above in this section).
1922 @end deffn
1923
1924 @node Blocks In Guile
1925 @subsubsection Accessing blocks from Guile.
1926
1927 @cindex blocks in guile
1928 @tindex <gdb:block>
1929
1930 In @value{GDBN}, symbols are stored in blocks. A block corresponds
1931 roughly to a scope in the source code. Blocks are organized
1932 hierarchically, and are represented individually in Guile as an object
1933 of type @code{<gdb:block>}. Blocks rely on debugging information being
1934 available.
1935
1936 A frame has a block. Please see @ref{Frames In Guile}, for a more
1937 in-depth discussion of frames.
1938
1939 The outermost block is known as the @dfn{global block}. The global
1940 block typically holds public global variables and functions.
1941
1942 The block nested just inside the global block is the @dfn{static
1943 block}. The static block typically holds file-scoped variables and
1944 functions.
1945
1946 @value{GDBN} provides a method to get a block's superblock, but there
1947 is currently no way to examine the sub-blocks of a block, or to
1948 iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
1949 Guile}).
1950
1951 Here is a short example that should help explain blocks:
1952
1953 @smallexample
1954 /* This is in the global block. */
1955 int global;
1956
1957 /* This is in the static block. */
1958 static int file_scope;
1959
1960 /* 'function' is in the global block, and 'argument' is
1961 in a block nested inside of 'function'. */
1962 int function (int argument)
1963 @{
1964 /* 'local' is in a block inside 'function'. It may or may
1965 not be in the same block as 'argument'. */
1966 int local;
1967
1968 @{
1969 /* 'inner' is in a block whose superblock is the one holding
1970 'local'. */
1971 int inner;
1972
1973 /* If this call is expanded by the compiler, you may see
1974 a nested block here whose function is 'inline_function'
1975 and whose superblock is the one holding 'inner'. */
1976 inline_function ();
1977 @}
1978 @}
1979 @end smallexample
1980
1981 The following block-related procedures are provided by the
1982 @code{(gdb)} module:
1983
1984 @deffn {Scheme Procedure} block? object
1985 Return @code{#t} if @var{object} is a @code{<gdb:block>} object.
1986 Otherwise return @code{#f}.
1987 @end deffn
1988
1989 @deffn {Scheme Procedure} block-valid? block
1990 Returns @code{#t} if @code{<gdb:block>} @var{block} is valid,
1991 @code{#f} if not. A block object can become invalid if the block it
1992 refers to doesn't exist anymore in the inferior. All other
1993 @code{<gdb:block>} methods will throw an exception if it is invalid at
1994 the time the procedure is called. The block's validity is also checked
1995 during iteration over symbols of the block.
1996 @end deffn
1997
1998 @deffn {Scheme Procedure} block-start block
1999 Return the start address of @code{<gdb:block>} @var{block}.
2000 @end deffn
2001
2002 @deffn {Scheme Procedure} block-end block
2003 Return the end address of @code{<gdb:block>} @var{block}.
2004 @end deffn
2005
2006 @deffn {Scheme Procedure} block-function block
2007 Return the name of @code{<gdb:block>} @var{block} represented as a
2008 @code{<gdb:symbol>} object.
2009 If the block is not named, then @code{#f} is returned.
2010
2011 For ordinary function blocks, the superblock is the static block.
2012 However, you should note that it is possible for a function block to
2013 have a superblock that is not the static block -- for instance this
2014 happens for an inlined function.
2015 @end deffn
2016
2017 @deffn {Scheme Procedure} block-superblock block
2018 Return the block containing @code{<gdb:block>} @var{block}.
2019 If the parent block does not exist, then @code{#f} is returned.
2020 @end deffn
2021
2022 @deffn {Scheme Procedure} block-global-block block
2023 Return the global block associated with @code{<gdb:block>} @var{block}.
2024 @end deffn
2025
2026 @deffn {Scheme Procedure} block-static-block block
2027 Return the static block associated with @code{<gdb:block>} @var{block}.
2028 @end deffn
2029
2030 @deffn {Scheme Procedure} block-global? block
2031 Return @code{#t} if @code{<gdb:block>} @var{block} is a global block.
2032 Otherwise return @code{#f}.
2033 @end deffn
2034
2035 @deffn {Scheme Procedure} block-static? block
2036 Return @code{#t} if @code{<gdb:block>} @var{block} is a static block.
2037 Otherwise return @code{#f}.
2038 @end deffn
2039
2040 @deffn {Scheme Procedure} block-symbols
2041 Return a list of all symbols (as <gdb:symbol> objects) in
2042 @code{<gdb:block>} @var{block}.
2043 @end deffn
2044
2045 @deffn {Scheme Procedure} make-block-symbols-iterator block
2046 Return an object of type @code{<gdb:iterator>} that will iterate
2047 over all symbols of the block.
2048 Guile programs should not assume that a specific block object will
2049 always contain a given symbol, since changes in @value{GDBN} features and
2050 infrastructure may cause symbols move across blocks in a symbol table.
2051 @xref{Iterators In Guile}.
2052 @end deffn
2053
2054 @deffn {Scheme Procedure} block-symbols-progress?
2055 Return #t if the object is a <gdb:block-symbols-progress> object.
2056 This object would be obtained from the @code{progress} element of the
2057 @code{<gdb:iterator>} object returned by @code{make-block-symbols-iterator}.
2058 @end deffn
2059
2060 @deffn {Scheme Procedure} lookup-block pc
2061 Return the innermost @code{<gdb:block>} containing the given @var{pc}
2062 value. If the block cannot be found for the @var{pc} value specified,
2063 the function will return @code{#f}.
2064 @end deffn
2065
2066 @node Symbols In Guile
2067 @subsubsection Guile representation of Symbols.
2068
2069 @cindex symbols in guile
2070 @tindex <gdb:symbol>
2071
2072 @value{GDBN} represents every variable, function and type as an
2073 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
2074 Guile represents these symbols in @value{GDBN} with the
2075 @code{<gdb:symbol>} object.
2076
2077 The following symbol-related procedures are provided by the
2078 @code{(gdb)} module:
2079
2080 @deffn {Scheme Procedure} symbol? object
2081 Return @code{#t} if @var{object} is an object of type @code{<gdb:symbol>}.
2082 Otherwise return @code{#f}.
2083 @end deffn
2084
2085 @deffn {Scheme Procedure} symbol-valid? symbol
2086 Return @code{#t} if the @code{<gdb:symbol>} object is valid,
2087 @code{#f} if not. A @code{<gdb:symbol>} object can become invalid if
2088 the symbol it refers to does not exist in @value{GDBN} any longer.
2089 All other @code{<gdb:symbol>} procedures will throw an exception if it is
2090 invalid at the time the procedure is called.
2091 @end deffn
2092
2093 @deffn {Scheme Procedure} symbol-type symbol
2094 Return the type of @var{symbol} or @code{#f} if no type is recorded.
2095 The result is an object of type @code{<gdb:type>}.
2096 @xref{Types In Guile}.
2097 @end deffn
2098
2099 @deffn {Scheme Procedure} symbol-symtab symbol
2100 Return the symbol table in which @var{symbol} appears.
2101 The result is an object of type @code{<gdb:symtab>}.
2102 @xref{Symbol Tables In Guile}.
2103 @end deffn
2104
2105 @deffn {Scheme Procedure} symbol-line symbol
2106 Return the line number in the source code at which @var{symbol} was defined.
2107 This is an integer.
2108 @end deffn
2109
2110 @deffn {Scheme Procedure} symbol-name symbol
2111 Return the name of @var{symbol} as a string.
2112 @end deffn
2113
2114 @deffn {Scheme Procedure} symbol-linkage-name symbol
2115 Return the name of @var{symbol}, as used by the linker (i.e., may be mangled).
2116 @end deffn
2117
2118 @deffn {Scheme Procedure} symbol-print-name symbol
2119 Return the name of @var{symbol} in a form suitable for output. This is either
2120 @code{name} or @code{linkage_name}, depending on whether the user
2121 asked @value{GDBN} to display demangled or mangled names.
2122 @end deffn
2123
2124 @deffn {Scheme Procedure} symbol-addr-class symbol
2125 Return the address class of the symbol. This classifies how to find the value
2126 of a symbol. Each address class is a constant defined in the
2127 @code{(gdb)} module and described later in this chapter.
2128 @end deffn
2129
2130 @deffn {Scheme Procedure} symbol-needs-frame? symbol
2131 Return @code{#t} if evaluating @var{symbol}'s value requires a frame
2132 (@pxref{Frames In Guile}) and @code{#f} otherwise. Typically,
2133 local variables will require a frame, but other symbols will not.
2134 @end deffn
2135
2136 @deffn {Scheme Procedure} symbol-argument? symbol
2137 Return @code{#t} if @var{symbol} is an argument of a function.
2138 Otherwise return @code{#f}.
2139 @end deffn
2140
2141 @deffn {Scheme Procedure} symbol-constant? symbol
2142 Return @code{#t} if @var{symbol} is a constant.
2143 Otherwise return @code{#f}.
2144 @end deffn
2145
2146 @deffn {Scheme Procedure} symbol-function? symbol
2147 Return @code{#t} if @var{symbol} is a function or a method.
2148 Otherwise return @code{#f}.
2149 @end deffn
2150
2151 @deffn {Scheme Procedure} symbol-variable? symbol
2152 Return @code{#t} if @var{symbol} is a variable.
2153 Otherwise return @code{#f}.
2154 @end deffn
2155
2156 @deffn {Scheme Procedure} symbol-value symbol @r{[}#:frame frame@r{]}
2157 Compute the value of @var{symbol}, as a @code{<gdb:value>}. For
2158 functions, this computes the address of the function, cast to the
2159 appropriate type. If the symbol requires a frame in order to compute
2160 its value, then @var{frame} must be given. If @var{frame} is not
2161 given, or if @var{frame} is invalid, then an exception is thrown.
2162 @end deffn
2163
2164 @c TODO: line length
2165 @deffn {Scheme Procedure} lookup-symbol name @r{[}#:block block@r{]} @r{[}#:domain domain@r{]}
2166 This function searches for a symbol by name. The search scope can be
2167 restricted to the parameters defined in the optional domain and block
2168 arguments.
2169
2170 @var{name} is the name of the symbol. It must be a string. The
2171 optional @var{block} argument restricts the search to symbols visible
2172 in that @var{block}. The @var{block} argument must be a
2173 @code{<gdb:block>} object. If omitted, the block for the current frame
2174 is used. The optional @var{domain} argument restricts
2175 the search to the domain type. The @var{domain} argument must be a
2176 domain constant defined in the @code{(gdb)} module and described later
2177 in this chapter.
2178
2179 The result is a list of two elements.
2180 The first element is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2181 is not found.
2182 If the symbol is found, the second element is @code{#t} if the symbol
2183 is a field of a method's object (e.g., @code{this} in C@t{++}),
2184 otherwise it is @code{#f}.
2185 If the symbol is not found, the second element is @code{#f}.
2186 @end deffn
2187
2188 @deffn {Scheme Procedure} lookup-global-symbol name @r{[}#:domain domain@r{]}
2189 This function searches for a global symbol by name.
2190 The search scope can be restricted by the domain argument.
2191
2192 @var{name} is the name of the symbol. It must be a string.
2193 The optional @var{domain} argument restricts the search to the domain type.
2194 The @var{domain} argument must be a domain constant defined in the @code{(gdb)}
2195 module and described later in this chapter.
2196
2197 The result is a @code{<gdb:symbol>} object or @code{#f} if the symbol
2198 is not found.
2199 @end deffn
2200
2201 The available domain categories in @code{<gdb:symbol>} are represented
2202 as constants in the @code{(gdb)} module:
2203
2204 @vtable @code
2205 @item SYMBOL_UNDEF_DOMAIN
2206 This is used when a domain has not been discovered or none of the
2207 following domains apply. This usually indicates an error either
2208 in the symbol information or in @value{GDBN}'s handling of symbols.
2209
2210 @item SYMBOL_VAR_DOMAIN
2211 This domain contains variables, function names, typedef names and enum
2212 type values.
2213
2214 @item SYMBOL_STRUCT_DOMAIN
2215 This domain holds struct, union and enum type names.
2216
2217 @item SYMBOL_LABEL_DOMAIN
2218 This domain contains names of labels (for gotos).
2219
2220 @item SYMBOL_VARIABLES_DOMAIN
2221 This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
2222 contains everything minus functions and types.
2223
2224 @item SYMBOL_FUNCTION_DOMAIN
2225 This domain contains all functions.
2226
2227 @item SYMBOL_TYPES_DOMAIN
2228 This domain contains all types.
2229 @end vtable
2230
2231 The available address class categories in @code{<gdb:symbol>} are represented
2232 as constants in the @code{gdb} module:
2233
2234 @vtable @code
2235 @item SYMBOL_LOC_UNDEF
2236 If this is returned by address class, it indicates an error either in
2237 the symbol information or in @value{GDBN}'s handling of symbols.
2238
2239 @item SYMBOL_LOC_CONST
2240 Value is constant int.
2241
2242 @item SYMBOL_LOC_STATIC
2243 Value is at a fixed address.
2244
2245 @item SYMBOL_LOC_REGISTER
2246 Value is in a register.
2247
2248 @item SYMBOL_LOC_ARG
2249 Value is an argument. This value is at the offset stored within the
2250 symbol inside the frame's argument list.
2251
2252 @item SYMBOL_LOC_REF_ARG
2253 Value address is stored in the frame's argument list. Just like
2254 @code{LOC_ARG} except that the value's address is stored at the
2255 offset, not the value itself.
2256
2257 @item SYMBOL_LOC_REGPARM_ADDR
2258 Value is a specified register. Just like @code{LOC_REGISTER} except
2259 the register holds the address of the argument instead of the argument
2260 itself.
2261
2262 @item SYMBOL_LOC_LOCAL
2263 Value is a local variable.
2264
2265 @item SYMBOL_LOC_TYPEDEF
2266 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
2267 have this class.
2268
2269 @item SYMBOL_LOC_BLOCK
2270 Value is a block.
2271
2272 @item SYMBOL_LOC_CONST_BYTES
2273 Value is a byte-sequence.
2274
2275 @item SYMBOL_LOC_UNRESOLVED
2276 Value is at a fixed address, but the address of the variable has to be
2277 determined from the minimal symbol table whenever the variable is
2278 referenced.
2279
2280 @item SYMBOL_LOC_OPTIMIZED_OUT
2281 The value does not actually exist in the program.
2282
2283 @item SYMBOL_LOC_COMPUTED
2284 The value's address is a computed location.
2285 @end vtable
2286
2287 @node Symbol Tables In Guile
2288 @subsubsection Symbol table representation in Guile.
2289
2290 @cindex symbol tables in guile
2291 @tindex <gdb:symtab>
2292 @tindex <gdb:sal>
2293
2294 Access to symbol table data maintained by @value{GDBN} on the inferior
2295 is exposed to Guile via two objects: @code{<gdb:sal>} (symtab-and-line) and
2296 @code{<gdb:symtab>}. Symbol table and line data for a frame is returned
2297 from the @code{frame-find-sal} @code{<gdb:frame>} procedure.
2298 @xref{Frames In Guile}.
2299
2300 For more information on @value{GDBN}'s symbol table management, see
2301 @ref{Symbols, ,Examining the Symbol Table}.
2302
2303 The following symtab-related procedures are provided by the
2304 @code{(gdb)} module:
2305
2306 @deffn {Scheme Procedure} symtab? object
2307 Return @code{#t} if @var{object} is an object of type @code{<gdb:symtab>}.
2308 Otherwise return @code{#f}.
2309 @end deffn
2310
2311 @deffn {Scheme Procedure} symtab-valid? symtab
2312 Return @code{#t} if the @code{<gdb:symtab>} object is valid,
2313 @code{#f} if not. A @code{<gdb:symtab>} object becomes invalid when
2314 the symbol table it refers to no longer exists in @value{GDBN}.
2315 All other @code{<gdb:symtab>} procedures will throw an exception
2316 if it is invalid at the time the procedure is called.
2317 @end deffn
2318
2319 @deffn {Scheme Procedure} symtab-filename symtab
2320 Return the symbol table's source filename.
2321 @end deffn
2322
2323 @deffn {Scheme Procedure} symtab-fullname symtab
2324 Return the symbol table's source absolute file name.
2325 @end deffn
2326
2327 @deffn {Scheme Procedure} symtab-objfile symtab
2328 Return the symbol table's backing object file. @xref{Objfiles In Guile}.
2329 @end deffn
2330
2331 @deffn {Scheme Procedure} symtab-global-block symtab
2332 Return the global block of the underlying symbol table.
2333 @xref{Blocks In Guile}.
2334 @end deffn
2335
2336 @deffn {Scheme Procedure} symtab-static-block symtab
2337 Return the static block of the underlying symbol table.
2338 @xref{Blocks In Guile}.
2339 @end deffn
2340
2341 The following symtab-and-line-related procedures are provided by the
2342 @code{(gdb)} module:
2343
2344 @deffn {Scheme Procedure} sal? object
2345 Return @code{#t} if @var{object} is an object of type @code{<gdb:sal>}.
2346 Otherwise return @code{#f}.
2347 @end deffn
2348
2349 @deffn {Scheme Procedure} sal-valid? sal
2350 Return @code{#t} if @var{sal} is valid, @code{#f} if not.
2351 A @code{<gdb:sal>} object becomes invalid when the Symbol table object
2352 it refers to no longer exists in @value{GDBN}. All other
2353 @code{<gdb:sal>} procedures will throw an exception if it is
2354 invalid at the time the procedure is called.
2355 @end deffn
2356
2357 @deffn {Scheme Procedure} sal-symtab sal
2358 Return the symbol table object (@code{<gdb:symtab>}) for @var{sal}.
2359 @end deffn
2360
2361 @deffn {Scheme Procedure} sal-line sal
2362 Return the line number for @var{sal}.
2363 @end deffn
2364
2365 @deffn {Scheme Procedure} sal-pc sal
2366 Return the start of the address range occupied by code for @var{sal}.
2367 @end deffn
2368
2369 @deffn {Scheme Procedure} sal-last sal
2370 Return the end of the address range occupied by code for @var{sal}.
2371 @end deffn
2372
2373 @deffn {Scheme Procedure} find-pc-line pc
2374 Return the @code{<gdb:sal>} object corresponding to the @var{pc} value.
2375 If an invalid value of @var{pc} is passed as an argument, then the
2376 @code{symtab} and @code{line} attributes of the returned @code{<gdb:sal>}
2377 object will be @code{#f} and 0 respectively.
2378 @end deffn
2379
2380 @node Breakpoints In Guile
2381 @subsubsection Manipulating breakpoints using Guile
2382
2383 @cindex breakpoints in guile
2384 @tindex <gdb:breakpoint>
2385
2386 Breakpoints in Guile are represented by objects of type
2387 @code{<gdb:breakpoint>}.
2388
2389 The following breakpoint-related procedures are provided by the
2390 @code{(gdb)} module:
2391
2392 @c TODO: line length
2393 @deffn {Scheme Procedure} create-breakpoint! location @r{[}#:type type@r{]} @r{[}#:wp-class wp-class@r{]} @r{[}#:internal internal@r{]}
2394 Create a new breakpoint. @var{spec} is a string naming the
2395 location of the breakpoint, or an expression that defines a watchpoint.
2396 The contents can be any location recognized by the @code{break} command,
2397 or in the case of a watchpoint, by the @code{watch} command.
2398
2399 The optional @var{type} denotes the breakpoint to create.
2400 This argument can be either: @code{BP_BREAKPOINT} or @code{BP_WATCHPOINT}.
2401 @var{type} defaults to @code{BP_BREAKPOINT}.
2402
2403 The optional @var{wp-class} argument defines the class of watchpoint to
2404 create, if @var{type} is @code{BP_WATCHPOINT}. If a watchpoint class is
2405 not provided, it is assumed to be a @code{WP_WRITE} class.
2406
2407 The optional @var{internal} argument allows the breakpoint to become
2408 invisible to the user. The breakpoint will neither be reported when
2409 created, nor will it be listed in the output from @code{info breakpoints}
2410 (but will be listed with the @code{maint info breakpoints} command).
2411 If an internal flag is not provided, the breakpoint is visible
2412 (non-internal).
2413
2414 When a watchpoint is created, @value{GDBN} will try to create a
2415 hardware assisted watchpoint. If successful, the type of the watchpoint
2416 is changed from @code{BP_WATCHPOINT} to @code{BP_HARDWARE_WATCHPOINT}
2417 for @code{WP_WRITE}, @code{BP_READ_WATCHPOINT} for @code{WP_READ},
2418 and @code{BP_ACCESS_WATCHPOINT} for @code{WP_ACCESS}.
2419 If not successful, the type of the watchpoint is left as @code{WP_WATCHPOINT}.
2420
2421 The available types are represented by constants defined in the @code{gdb}
2422 module:
2423
2424 @vtable @code
2425 @item BP_BREAKPOINT
2426 Normal code breakpoint.
2427
2428 @item BP_WATCHPOINT
2429 Watchpoint breakpoint.
2430
2431 @item BP_HARDWARE_WATCHPOINT
2432 Hardware assisted watchpoint.
2433 This value cannot be specified when creating the breakpoint.
2434
2435 @item BP_READ_WATCHPOINT
2436 Hardware assisted read watchpoint.
2437 This value cannot be specified when creating the breakpoint.
2438
2439 @item BP_ACCESS_WATCHPOINT
2440 Hardware assisted access watchpoint.
2441 This value cannot be specified when creating the breakpoint.
2442 @end vtable
2443
2444 The available watchpoint types represented by constants are defined in the
2445 @code{(gdb)} module:
2446
2447 @vtable @code
2448 @item WP_READ
2449 Read only watchpoint.
2450
2451 @item WP_WRITE
2452 Write only watchpoint.
2453
2454 @item WP_ACCESS
2455 Read/Write watchpoint.
2456 @end vtable
2457
2458 @end deffn
2459
2460 @deffn {Scheme Procedure} breakpoint-delete! breakpoint
2461 Permanently delete @var{breakpoint}. This also invalidates the
2462 Guile @var{breakpoint} object. Any further attempt to access the
2463 object will throw an exception.
2464 @end deffn
2465
2466 @deffn {Scheme Procedure} breakpoints
2467 Return a list of all breakpoints.
2468 Each element of the list is a @code{<gdb:breakpoint>} object.
2469 @end deffn
2470
2471 @deffn {Scheme Procedure} breakpoint? object
2472 Return @code{#t} if @var{object} is a @code{<gdb:breakpoint>} object,
2473 and @code{#f} otherwise.
2474 @end deffn
2475
2476 @deffn {Scheme Procedure} breakpoint-valid? breakpoint
2477 Return @code{#t} if @var{breakpoint} is valid, @code{#f} otherwise.
2478 A @code{<gdb:breakpoint>} object can become invalid
2479 if the user deletes the breakpoint. In this case, the object still
2480 exists, but the underlying breakpoint does not. In the cases of
2481 watchpoint scope, the watchpoint remains valid even if execution of the
2482 inferior leaves the scope of that watchpoint.
2483 @end deffn
2484
2485 @deffn {Scheme Procedure} breakpoint-number breakpoint
2486 Return the breakpoint's number --- the identifier used by
2487 the user to manipulate the breakpoint.
2488 @end deffn
2489
2490 @deffn {Scheme Procedure} breakpoint-type breakpoint
2491 Return the breakpoint's type --- the identifier used to
2492 determine the actual breakpoint type or use-case.
2493 @end deffn
2494
2495 @deffn {Scheme Procedure} breakpoint-visible? breakpoint
2496 Return @code{#t} if the breakpoint is visible to the user
2497 when hit, or when the @samp{info breakpoints} command is run.
2498 Otherwise return @code{#f}.
2499 @end deffn
2500
2501 @deffn {Scheme Procedure} breakpoint-location breakpoint
2502 Return the location of the breakpoint, as specified by
2503 the user. It is a string. If the breakpoint does not have a location
2504 (that is, it is a watchpoint) return @code{#f}.
2505 @end deffn
2506
2507 @deffn {Scheme Procedure} breakpoint-expression breakpoint
2508 Return the breakpoint expression, as specified by the user. It is a string.
2509 If the breakpoint does not have an expression (the breakpoint is not a
2510 watchpoint) return @code{#f}.
2511 @end deffn
2512
2513 @deffn {Scheme Procedure} breakpoint-enabled? breakpoint
2514 Return @code{#t} if the breakpoint is enabled, and @code{#f} otherwise.
2515 @end deffn
2516
2517 @deffn {Scheme Procedure} set-breakpoint-enabled! breakpoint flag
2518 Set the enabled state of @var{breakpoint} to @var{flag}.
2519 If flag is @code{#f} it is disabled, otherwise it is enabled.
2520 @end deffn
2521
2522 @deffn {Scheme Procedure} breakpoint-silent? breakpoint
2523 Return @code{#t} if the breakpoint is silent, and @code{#f} otherwise.
2524
2525 Note that a breakpoint can also be silent if it has commands and the
2526 first command is @code{silent}. This is not reported by the
2527 @code{silent} attribute.
2528 @end deffn
2529
2530 @deffn {Scheme Procedure} set-breakpoint-silent! breakpoint flag
2531 Set the silent state of @var{breakpoint} to @var{flag}.
2532 If flag is @code{#f} the breakpoint is made silent,
2533 otherwise it is made non-silent (or noisy).
2534 @end deffn
2535
2536 @deffn {Scheme Procedure} breakpoint-ignore-count breakpoint
2537 Return the ignore count for @var{breakpoint}.
2538 @end deffn
2539
2540 @deffn {Scheme Procedure} set-breakpoint-ignore-count! breakpoint count
2541 Set the ignore count for @var{breakpoint} to @var{count}.
2542 @end deffn
2543
2544 @deffn {Scheme Procedure} breakpoint-hit-count breakpoint
2545 Return hit count of @var{breakpoint}.
2546 @end deffn
2547
2548 @deffn {Scheme Procedure} set-breakpoint-hit-count! breakpoint count
2549 Set the hit count of @var{breakpoint} to @var{count}.
2550 At present, @var{count} must be zero.
2551 @end deffn
2552
2553 @deffn {Scheme Procedure} breakpoint-thread breakpoint
2554 Return the thread-id for thread-specific breakpoint @var{breakpoint}.
2555 Return #f if @var{breakpoint} is not thread-specific.
2556 @end deffn
2557
2558 @deffn {Scheme Procedure} set-breakpoint-thread! breakpoint thread-id|#f
2559 Set the thread-id for @var{breakpoint} to @var{thread-id}.
2560 If set to @code{#f}, the breakpoint is no longer thread-specific.
2561 @end deffn
2562
2563 @deffn {Scheme Procedure} breakpoint-task breakpoint
2564 If the breakpoint is Ada task-specific, return the Ada task id.
2565 If the breakpoint is not task-specific (or the underlying
2566 language is not Ada), return @code{#f}.
2567 @end deffn
2568
2569 @deffn {Scheme Procedure} set-breakpoint-task! breakpoint task
2570 Set the Ada task of @var{breakpoint} to @var{task}.
2571 If set to @code{#f}, the breakpoint is no longer task-specific.
2572 @end deffn
2573
2574 @deffn {Scheme Procedure} breakpoint-condition breakpoint
2575 Return the condition of @var{breakpoint}, as specified by the user.
2576 It is a string. If there is no condition, return @code{#f}.
2577 @end deffn
2578
2579 @deffn {Scheme Procedure} set-breakpoint-condition! breakpoint condition
2580 Set the condition of @var{breakpoint} to @var{condition},
2581 which must be a string. If set to @code{#f} then the breakpoint
2582 becomes unconditional.
2583 @end deffn
2584
2585 @deffn {Scheme Procedure} breakpoint-stop breakpoint
2586 Return the stop predicate of @var{breakpoint}.
2587 See @code{set-breakpoint-stop!} below in this section.
2588 @end deffn
2589
2590 @deffn {Scheme Procedure} set-breakpoint-stop! breakpoint procedure|#f
2591 Set the stop predicate of @var{breakpoint}.
2592 @var{procedure} takes one argument: the <gdb:breakpoint> object.
2593 If this predicate is set to a procedure then it is invoked whenever
2594 the inferior reaches this breakpoint. If it returns @code{#t},
2595 or any non-@code{#f} value, then the inferior is stopped,
2596 otherwise the inferior will continue.
2597
2598 If there are multiple breakpoints at the same location with a
2599 @code{stop} predicate, each one will be called regardless of the
2600 return status of the previous. This ensures that all @code{stop}
2601 predicates have a chance to execute at that location. In this scenario
2602 if one of the methods returns @code{#t} but the others return
2603 @code{#f}, the inferior will still be stopped.
2604
2605 You should not alter the execution state of the inferior (i.e.@:, step,
2606 next, etc.), alter the current frame context (i.e.@:, change the current
2607 active frame), or alter, add or delete any breakpoint. As a general
2608 rule, you should not alter any data within @value{GDBN} or the inferior
2609 at this time.
2610
2611 Example @code{stop} implementation:
2612
2613 @smallexample
2614 (define (my-stop? bkpt)
2615 (let ((int-val (parse-and-eval "foo")))
2616 (value=? int-val 3)))
2617 (define bkpt (create-breakpoint! "main.c:42"))
2618 (set-breakpoint-stop! bkpt my-stop?)
2619 @end smallexample
2620 @end deffn
2621
2622 @deffn {Scheme Procedure} breakpoint-commands breakpoint
2623 Return the commands attached to @var{breakpoint} as a string,
2624 or @code{#f} if there are none.
2625 @end deffn
2626
2627 @node Lazy Strings In Guile
2628 @subsubsection Guile representation of lazy strings.
2629
2630 @cindex lazy strings in guile
2631 @tindex <gdb:lazy-string>
2632
2633 A @dfn{lazy string} is a string whose contents is not retrieved or
2634 encoded until it is needed.
2635
2636 A @code{<gdb:lazy-string>} is represented in @value{GDBN} as an
2637 @code{address} that points to a region of memory, an @code{encoding}
2638 that will be used to encode that region of memory, and a @code{length}
2639 to delimit the region of memory that represents the string. The
2640 difference between a @code{<gdb:lazy-string>} and a string wrapped within
2641 a @code{<gdb:value>} is that a @code{<gdb:lazy-string>} will be treated
2642 differently by @value{GDBN} when printing. A @code{<gdb:lazy-string>} is
2643 retrieved and encoded during printing, while a @code{<gdb:value>}
2644 wrapping a string is immediately retrieved and encoded on creation.
2645
2646 The following lazy-string-related procedures are provided by the
2647 @code{(gdb)} module:
2648
2649 @deffn {Scheme Procedure} lazy-string? object
2650 Return @code{#t} if @var{object} is an object of type @code{<gdb:lazy-string>}.
2651 Otherwise return @code{#f}.
2652 @end deffn
2653
2654 @deffn {Scheme Procedure} lazy-string-address lazy-sring
2655 Return the address of @var{lazy-string}.
2656 @end deffn
2657
2658 @deffn {Scheme Procedure} lazy-string-length lazy-string
2659 Return the length of @var{lazy-string} in characters. If the
2660 length is -1, then the string will be fetched and encoded up to the
2661 first null of appropriate width.
2662 @end deffn
2663
2664 @deffn {Scheme Procedure} lazy-string-encoding lazy-string
2665 Return the encoding that will be applied to @var{lazy-string}
2666 when the string is printed by @value{GDBN}. If the encoding is not
2667 set, or contains an empty string, then @value{GDBN} will select the
2668 most appropriate encoding when the string is printed.
2669 @end deffn
2670
2671 @deffn {Scheme Procedure} lazy-string-type lazy-string
2672 Return the type that is represented by @var{lazy-string}'s type.
2673 For a lazy string this will always be a pointer type. To
2674 resolve this to the lazy string's character type, use @code{type-target-type}.
2675 @xref{Types In Guile}.
2676 @end deffn
2677
2678 @deffn {Scheme Procedure} lazy-string->value lazy-string
2679 Convert the @code{<gdb:lazy-string>} to a @code{<gdb:value>}. This value
2680 will point to the string in memory, but will lose all the delayed
2681 retrieval, encoding and handling that @value{GDBN} applies to a
2682 @code{<gdb:lazy-string>}.
2683 @end deffn
2684
2685 @node Architectures In Guile
2686 @subsubsection Guile representation of architectures
2687
2688 @cindex guile architectures
2689 @tindex <gdb:arch>
2690
2691 @value{GDBN} uses architecture specific parameters and artifacts in a
2692 number of its various computations. An architecture is represented
2693 by an instance of the @code{<gdb:arch>} class.
2694
2695 The following architecture-related procedures are provided by the
2696 @code{(gdb)} module:
2697
2698 @deffn {Scheme Procedure} arch? object
2699 Return @code{#t} if @var{object} is an object of type @code{<gdb:arch>}.
2700 Otherwise return @code{#f}.
2701 @end deffn
2702
2703 @deffn {Scheme Procedure} current-arch
2704 Return the current architecture as a @code{<gdb:arch>} object.
2705 @end deffn
2706
2707 @deffn {Scheme Procedure} arch-name arch
2708 Return the name (string value) of @code{<gdb:arch>} @var{arch}.
2709 @end deffn
2710
2711 @deffn {Scheme Procedure} arch-charset arch
2712 Return name of target character set of @code{<gdb:arch>} @var{arch}.
2713 @end deffn
2714
2715 @deffn {Scheme Procedure} arch-wide-charset
2716 Return name of target wide character set of @code{<gdb:arch>} @var{arch}.
2717 @end deffn
2718
2719 Each architecture provides a set of predefined types, obtained by
2720 the following functions.
2721
2722 @deffn {Scheme Procedure} arch-void-type arch
2723 Return the @code{<gdb:type>} object for a @code{void} type
2724 of architecture @var{arch}.
2725 @end deffn
2726
2727 @deffn {Scheme Procedure} arch-char-type arch
2728 Return the @code{<gdb:type>} object for a @code{char} type
2729 of architecture @var{arch}.
2730 @end deffn
2731
2732 @deffn {Scheme Procedure} arch-short-type arch
2733 Return the @code{<gdb:type>} object for a @code{short} type
2734 of architecture @var{arch}.
2735 @end deffn
2736
2737 @deffn {Scheme Procedure} arch-int-type arch
2738 Return the @code{<gdb:type>} object for an @code{int} type
2739 of architecture @var{arch}.
2740 @end deffn
2741
2742 @deffn {Scheme Procedure} arch-long-type arch
2743 Return the @code{<gdb:type>} object for a @code{long} type
2744 of architecture @var{arch}.
2745 @end deffn
2746
2747 @deffn {Scheme Procedure} arch-schar-type arch
2748 Return the @code{<gdb:type>} object for a @code{signed char} type
2749 of architecture @var{arch}.
2750 @end deffn
2751
2752 @deffn {Scheme Procedure} arch-uchar-type arch
2753 Return the @code{<gdb:type>} object for an @code{unsigned char} type
2754 of architecture @var{arch}.
2755 @end deffn
2756
2757 @deffn {Scheme Procedure} arch-ushort-type arch
2758 Return the @code{<gdb:type>} object for an @code{unsigned short} type
2759 of architecture @var{arch}.
2760 @end deffn
2761
2762 @deffn {Scheme Procedure} arch-uint-type arch
2763 Return the @code{<gdb:type>} object for an @code{unsigned int} type
2764 of architecture @var{arch}.
2765 @end deffn
2766
2767 @deffn {Scheme Procedure} arch-ulong-type arch
2768 Return the @code{<gdb:type>} object for an @code{unsigned long} type
2769 of architecture @var{arch}.
2770 @end deffn
2771
2772 @deffn {Scheme Procedure} arch-float-type arch
2773 Return the @code{<gdb:type>} object for a @code{float} type
2774 of architecture @var{arch}.
2775 @end deffn
2776
2777 @deffn {Scheme Procedure} arch-double-type arch
2778 Return the @code{<gdb:type>} object for a @code{double} type
2779 of architecture @var{arch}.
2780 @end deffn
2781
2782 @deffn {Scheme Procedure} arch-longdouble-type arch
2783 Return the @code{<gdb:type>} object for a @code{long double} type
2784 of architecture @var{arch}.
2785 @end deffn
2786
2787 @deffn {Scheme Procedure} arch-bool-type arch
2788 Return the @code{<gdb:type>} object for a @code{bool} type
2789 of architecture @var{arch}.
2790 @end deffn
2791
2792 @deffn {Scheme Procedure} arch-longlong-type arch
2793 Return the @code{<gdb:type>} object for a @code{long long} type
2794 of architecture @var{arch}.
2795 @end deffn
2796
2797 @deffn {Scheme Procedure} arch-ulonglong-type arch
2798 Return the @code{<gdb:type>} object for an @code{unsigned long long} type
2799 of architecture @var{arch}.
2800 @end deffn
2801
2802 @deffn {Scheme Procedure} arch-int8-type arch
2803 Return the @code{<gdb:type>} object for an @code{int8} type
2804 of architecture @var{arch}.
2805 @end deffn
2806
2807 @deffn {Scheme Procedure} arch-uint8-type arch
2808 Return the @code{<gdb:type>} object for a @code{uint8} type
2809 of architecture @var{arch}.
2810 @end deffn
2811
2812 @deffn {Scheme Procedure} arch-int16-type arch
2813 Return the @code{<gdb:type>} object for an @code{int16} type
2814 of architecture @var{arch}.
2815 @end deffn
2816
2817 @deffn {Scheme Procedure} arch-uint16-type arch
2818 Return the @code{<gdb:type>} object for a @code{uint16} type
2819 of architecture @var{arch}.
2820 @end deffn
2821
2822 @deffn {Scheme Procedure} arch-int32-type arch
2823 Return the @code{<gdb:type>} object for an @code{int32} type
2824 of architecture @var{arch}.
2825 @end deffn
2826
2827 @deffn {Scheme Procedure} arch-uint32-type arch
2828 Return the @code{<gdb:type>} object for a @code{uint32} type
2829 of architecture @var{arch}.
2830 @end deffn
2831
2832 @deffn {Scheme Procedure} arch-int64-type arch
2833 Return the @code{<gdb:type>} object for an @code{int64} type
2834 of architecture @var{arch}.
2835 @end deffn
2836
2837 @deffn {Scheme Procedure} arch-uint64-type arch
2838 Return the @code{<gdb:type>} object for a @code{uint64} type
2839 of architecture @var{arch}.
2840 @end deffn
2841
2842 Example:
2843
2844 @smallexample
2845 (gdb) guile (type-name (arch-uchar-type (current-arch)))
2846 "unsigned char"
2847 @end smallexample
2848
2849 @node Disassembly In Guile
2850 @subsubsection Disassembly In Guile
2851
2852 The disassembler can be invoked from Scheme code.
2853 Furthermore, the disassembler can take a Guile port as input,
2854 allowing one to disassemble from any source, and not just target memory.
2855
2856 @c TODO: line length
2857 @deffn {Scheme Procedure} arch-disassemble arch start-pc @r{[}#:port port@r{]} @r{[}#:offset offset@r{]} @r{[}#:size size@r{]} @r{[}#:count count@r{]})
2858 Return a list of disassembled instructions starting from the memory
2859 address @var{start-pc}.
2860
2861 The optional argument @var{port} specifies the input port to read bytes from.
2862 If @var{port} is @code{#f} then bytes are read from target memory.
2863
2864 The optional argument @var{offset} specifies the address offset of the
2865 first byte in @var{port}. This is useful, for example, when @var{port}
2866 specifies a @samp{bytevector} and you want the bytevector to be disassembled
2867 as if it came from that address. The @var{start-pc} passed to the reader
2868 for @var{port} is offset by the same amount.
2869
2870 Example:
2871 @smallexample
2872 (gdb) guile (use-modules (rnrs io ports))
2873 (gdb) guile (define pc (value->integer (parse-and-eval "$pc")))
2874 (gdb) guile (define mem (open-memory #:start pc))
2875 (gdb) guile (define bv (get-bytevector-n mem 10))
2876 (gdb) guile (define bv-port (open-bytevector-input-port bv))
2877 (gdb) guile (define arch (current-arch))
2878 (gdb) guile (arch-disassemble arch pc #:port bv-port #:offset pc)
2879 (((address . 4195516) (asm . "mov $0x4005c8,%edi") (length . 5)))
2880 @end smallexample
2881
2882 The optional arguments @var{size} and
2883 @var{count} determine the number of instructions in the returned list.
2884 If either @var{size} or @var{count} is specified as zero, then
2885 no instructions are disassembled and an empty list is returned.
2886 If both the optional arguments @var{size} and @var{count} are
2887 specified, then a list of at most @var{count} disassembled instructions
2888 whose start address falls in the closed memory address interval from
2889 @var{start-pc} to (@var{start-pc} + @var{size} - 1) are returned.
2890 If @var{size} is not specified, but @var{count} is specified,
2891 then @var{count} number of instructions starting from the address
2892 @var{start-pc} are returned. If @var{count} is not specified but
2893 @var{size} is specified, then all instructions whose start address
2894 falls in the closed memory address interval from @var{start-pc} to
2895 (@var{start-pc} + @var{size} - 1) are returned.
2896 If neither @var{size} nor @var{count} are specified, then a single
2897 instruction at @var{start-pc} is returned.
2898
2899 Each element of the returned list is an alist (associative list)
2900 with the following keys:
2901
2902 @table @code
2903
2904 @item address
2905 The value corresponding to this key is a Guile integer of
2906 the memory address of the instruction.
2907
2908 @item asm
2909 The value corresponding to this key is a string value which represents
2910 the instruction with assembly language mnemonics. The assembly
2911 language flavor used is the same as that specified by the current CLI
2912 variable @code{disassembly-flavor}. @xref{Machine Code}.
2913
2914 @item length
2915 The value corresponding to this key is the length of the instruction in bytes.
2916
2917 @end table
2918 @end deffn
2919
2920 @node I/O Ports in Guile
2921 @subsubsection I/O Ports in Guile
2922
2923 @deffn {Scheme Procedure} input-port
2924 Return @value{GDBN}'s input port as a Guile port object.
2925 @end deffn
2926
2927 @deffn {Scheme Procedure} output-port
2928 Return @value{GDBN}'s output port as a Guile port object.
2929 @end deffn
2930
2931 @deffn {Scheme Procedure} error-port
2932 Return @value{GDBN}'s error port as a Guile port object.
2933 @end deffn
2934
2935 @deffn {Scheme Procedure} stdio-port? object
2936 Return @code{#t} if @var{object} is a @value{GDBN} stdio port.
2937 Otherwise return @code{#f}.
2938 @end deffn
2939
2940 @node Memory Ports in Guile
2941 @subsubsection Memory Ports in Guile
2942
2943 @value{GDBN} provides a @code{port} interface to target memory.
2944 This allows Guile code to read/write target memory using Guile's port and
2945 bytevector functionality. The main routine is @code{open-memory} which
2946 returns a port object. One can then read/write memory using that object.
2947
2948 @deffn {Scheme Procedure} open-memory @r{[}#:mode mode{]} @r{[}#:start address{]} @r{[}#:size size{]}
2949 Return a port object that can be used for reading and writing memory.
2950 @var{mode} is the standard mode argument to Guile port open routines,
2951 except that it is restricted to one of @samp{"r"}, @samp{"w"}, or @samp{"r+"}.
2952 For compatibility @samp{"b"} (binary) may also be present,
2953 but we ignore it: memory ports are binary only.
2954 The default is @samp{"r"}, read-only.
2955
2956 The chunk of memory that can be accessed can be bounded.
2957 If both @var{start} and @var{size} are unspecified, all of memory can be
2958 accessed. If only @var{start} is specified, all of memory from that point
2959 on can be accessed. If only @var{size} if specified, all memory in the
2960 range [0,@var{size}) can be accessed. If both are specified, all memory
2961 in the rane [@var{start},@var{start}+@var{size}) can be accessed.
2962 @end deffn
2963
2964 @deffn {Scheme Procedure} memory-port?
2965 Return @code{#t} if @var{object} is an object of type @code{<gdb:memory-port>}.
2966 Otherwise return @code{#f}.
2967 @end deffn
2968
2969 @deffn {Scheme Procedure} memory-port-range memory-port
2970 Return the range of @code{<gdb:memory-port>} @var{memory-port} as a list
2971 of two elements: @code{(start end)}. The range is @var{start} to @var{end}
2972 inclusive.
2973 @end deffn
2974
2975 @deffn {Scheme Procedure} memory-port-read-buffer-size memory-port
2976 Return the size of the read buffer of @code{<gdb:memory-port>}
2977 @var{memory-port}.
2978 @end deffn
2979
2980 @deffn {Scheme Procedure} set-memory-port-read-buffer-size! memory-port size
2981 Set the size of the read buffer of @code{<gdb:memory-port>}
2982 @var{memory-port} to @var{size}. The result is unspecified.
2983 @end deffn
2984
2985 @deffn {Scheme Procedure} memory-port-write-buffer-size memory-port
2986 Return the size of the write buffer of @code{<gdb:memory-port>}
2987 @var{memory-port}.
2988 @end deffn
2989
2990 @deffn {Scheme Procedure} set-memory-port-write-buffer-size! memory-port size
2991 Set the size of the write buffer of @code{<gdb:memory-port>}
2992 @var{memory-port} to @var{size}. The result is unspecified.
2993 @end deffn
2994
2995 A memory port is closed like any other port, with @code{close-port}.
2996
2997 Combined with Guile's @code{bytevectors}, memory ports provide a lot
2998 of utility. For example, to fill a buffer of 10 integers in memory,
2999 one can do something like the following.
3000
3001 @smallexample
3002 ;; In the program: int buffer[10];
3003 (use-modules (rnrs bytevectors))
3004 (use-modules (rnrs io ports))
3005 (define addr (parse-and-eval "buffer"))
3006 (define n 10)
3007 (define byte-size (* n 4))
3008 (define mem-port (open-memory #:mode "r+" #:start
3009 (value->integer addr) #:size byte-size))
3010 (define byte-vec (make-bytevector byte-size))
3011 (do ((i 0 (+ i 1)))
3012 ((>= i n))
3013 (bytevector-s32-native-set! byte-vec (* i 4) (* i 42)))
3014 (put-bytevector mem-port byte-vec)
3015 (close-port mem-port)
3016 @end smallexample
3017
3018 @node Iterators In Guile
3019 @subsubsection Iterators In Guile
3020
3021 @cindex guile iterators
3022 @tindex <gdb:iterator>
3023
3024 A simple iterator facility is provided to allow, for example,
3025 iterating over the set of program symbols without having to first
3026 construct a list of all of them. A useful contribution would be
3027 to add support for SRFI 41 and SRFI 45.
3028
3029 @deffn {Scheme Procedure} make-iterator object progress next!
3030 A @code{<gdb:iterator>} object is constructed with the @code{make-iterator}
3031 procedure. It takes three arguments: the object to be iterated over,
3032 an object to record the progress of the iteration, and a procedure to
3033 return the next element in the iteration, or an implementation chosen value
3034 to denote the end of iteration.
3035
3036 By convention, end of iteration is marked with @code{(end-of-iteration)},
3037 and may be tested with the @code{end-of-iteration?} predicate.
3038 The result of @code{(end-of-iteration)} is chosen so that it is not
3039 otherwise used by the @code{(gdb)} module. If you are using
3040 @code{<gdb:iterator>} in your own code it is your responsibility to
3041 maintain this invariant.
3042
3043 A trivial example for illustration's sake:
3044
3045 @smallexample
3046 (use-modules (gdb iterator))
3047 (define my-list (list 1 2 3))
3048 (define iter
3049 (make-iterator my-list my-list
3050 (lambda (iter)
3051 (let ((l (iterator-progress iter)))
3052 (if (eq? l '())
3053 (end-of-iteration)
3054 (begin
3055 (set-iterator-progress! iter (cdr l))
3056 (car l)))))))
3057 @end smallexample
3058
3059 Here is a slightly more realistic example, which computes a list of all the
3060 functions in @code{my-global-block}.
3061
3062 @smallexample
3063 (use-modules (gdb iterator))
3064 (define this-sal (find-pc-line (frame-pc (selected-frame))))
3065 (define this-symtab (sal-symtab this-sal))
3066 (define this-global-block (symtab-global-block this-symtab))
3067 (define syms-iter (make-block-symbols-iterator this-global-block))
3068 (define functions (iterator-filter symbol-function? syms-iter))
3069 @end smallexample
3070 @end deffn
3071
3072 @deffn {Scheme Procedure} iterator? object
3073 Return @code{#t} if @var{object} is a @code{<gdb:iterator>} object.
3074 Otherwise return @code{#f}.
3075 @end deffn
3076
3077 @deffn {Scheme Procedure} iterator-object iterator
3078 Return the first argument that was passed to @code{make-iterator}.
3079 This is the object being iterated over.
3080 @end deffn
3081
3082 @deffn {Scheme Procedure} iterator-progress iterator
3083 Return the object tracking iteration progress.
3084 @end deffn
3085
3086 @deffn {Scheme Procedure} set-iterator-progress! iterator new-value
3087 Set the object tracking iteration progress.
3088 @end deffn
3089
3090 @deffn {Scheme Procedure} iterator-next! iterator
3091 Invoke the procedure that was the third argument to @code{make-iterator},
3092 passing it one argument, the @code{<gdb:iterator>} object.
3093 The result is either the next element in the iteration, or an end
3094 marker as implemented by the @code{next!} procedure.
3095 By convention the end marker is the result of @code{(end-of-iteration)}.
3096 @end deffn
3097
3098 @deffn {Scheme Procedure} end-of-iteration
3099 Return the Scheme object that denotes end of iteration.
3100 @end deffn
3101
3102 @deffn {Scheme Procedure} end-of-iteration? object
3103 Return @code{#t} if @var{object} is the end of iteration marker.
3104 Otherwise return @code{#f}.
3105 @end deffn
3106
3107 These functions are provided by the @code{(gdb iterator)} module to
3108 assist in using iterators.
3109
3110 @deffn {Scheme Procedure} make-list-iterator list
3111 Return a @code{<gdb:iterator>} object that will iterate over @var{list}.
3112 @end deffn
3113
3114 @deffn {Scheme Procedure} iterator->list iterator
3115 Return the elements pointed to by @var{iterator} as a list.
3116 @end deffn
3117
3118 @deffn {Scheme Procedure} iterator-map proc iterator
3119 Return the list of objects obtained by applying @var{proc} to the object
3120 pointed to by @var{iterator} and to each subsequent object.
3121 @end deffn
3122
3123 @deffn {Scheme Procedure} iterator-for-each proc iterator
3124 Apply @var{proc} to each element pointed to by @var{iterator}.
3125 The result is unspecified.
3126 @end deffn
3127
3128 @deffn {Scheme Procedure} iterator-filter pred iterator
3129 Return the list of elements pointed to by @var{iterator} that satisfy
3130 @var{pred}.
3131 @end deffn
3132
3133 @deffn {Scheme Procedure} iterator-until pred iterator
3134 Run @var{iterator} until the result of @code{(pred element)} is true
3135 and return that as the result. Otherwise return @code{#f}.
3136 @end deffn
3137
3138 @node Guile Auto-loading
3139 @subsection Guile Auto-loading
3140 @cindex guile auto-loading
3141
3142 When a new object file is read (for example, due to the @code{file}
3143 command, or because the inferior has loaded a shared library),
3144 @value{GDBN} will look for Guile support scripts in two ways:
3145 @file{@var{objfile}-gdb.scm} and the @code{.debug_gdb_scripts} section.
3146 @xref{Auto-loading extensions}.
3147
3148 The auto-loading feature is useful for supplying application-specific
3149 debugging commands and scripts.
3150
3151 Auto-loading can be enabled or disabled,
3152 and the list of auto-loaded scripts can be printed.
3153
3154 @table @code
3155 @anchor{set auto-load guile-scripts}
3156 @kindex set auto-load guile-scripts
3157 @item set auto-load guile-scripts [on|off]
3158 Enable or disable the auto-loading of Guile scripts.
3159
3160 @anchor{show auto-load guile-scripts}
3161 @kindex show auto-load guile-scripts
3162 @item show auto-load guile-scripts
3163 Show whether auto-loading of Guile scripts is enabled or disabled.
3164
3165 @anchor{info auto-load guile-scripts}
3166 @kindex info auto-load guile-scripts
3167 @cindex print list of auto-loaded Guile scripts
3168 @item info auto-load guile-scripts [@var{regexp}]
3169 Print the list of all Guile scripts that @value{GDBN} auto-loaded.
3170
3171 Also printed is the list of Guile scripts that were mentioned in
3172 the @code{.debug_gdb_scripts} section and were not found.
3173 This is useful because their names are not printed when @value{GDBN}
3174 tries to load them and fails. There may be many of them, and printing
3175 an error message for each one is problematic.
3176
3177 If @var{regexp} is supplied only Guile scripts with matching names are printed.
3178
3179 Example:
3180
3181 @smallexample
3182 (gdb) info auto-load guile-scripts
3183 Loaded Script
3184 Yes scm-section-script.scm
3185 full name: /tmp/scm-section-script.scm
3186 No my-foo-pretty-printers.scm
3187 @end smallexample
3188 @end table
3189
3190 When reading an auto-loaded file, @value{GDBN} sets the
3191 @dfn{current objfile}. This is available via the @code{current-objfile}
3192 procedure (@pxref{Objfiles In Guile}). This can be useful for
3193 registering objfile-specific pretty-printers.
3194
3195 @node Guile Modules
3196 @subsection Guile Modules
3197 @cindex guile modules
3198
3199 @value{GDBN} comes with several modules to assist writing Guile code.
3200
3201 @menu
3202 * Guile Printing Module:: Building and registering pretty-printers
3203 * Guile Types Module:: Utilities for working with types
3204 @end menu
3205
3206 @node Guile Printing Module
3207 @subsubsection Guile Printing Module
3208
3209 This module provides a collection of utilities for working with
3210 pretty-printers.
3211
3212 Usage:
3213
3214 @smallexample
3215 (use-modules (gdb printing))
3216 @end smallexample
3217
3218 @deffn {Scheme Procedure} prepend-pretty-printer! object printer
3219 Add @var{printer} to the front of the list of pretty-printers for
3220 @var{object}. @var{object} must either be a @code{<gdb:objfile>} object
3221 or @code{#f} in which case @var{printer} is added to the global list of
3222 printers.
3223 @end deffn
3224
3225 @deffn {Scheme Procecure} append-pretty-printer! object printer
3226 Add @var{printer} to the end of the list of pretty-printers for
3227 @var{object}. @var{object} must either be a @code{<gdb:objfile>} object
3228 or @code{#f} in which case @var{printer} is added to the global list of
3229 printers.
3230 @end deffn
3231
3232 @node Guile Types Module
3233 @subsubsection Guile Types Module
3234
3235 This module provides a collection of utilities for working with
3236 @code{<gdb:type>} objects.
3237
3238 Usage:
3239
3240 @smallexample
3241 (use-modules (gdb types))
3242 @end smallexample
3243
3244 @deffn {Scheme Procedure} get-basic-type type
3245 Return @var{type} with const and volatile qualifiers stripped,
3246 and with typedefs and C@t{++} references converted to the underlying type.
3247
3248 C@t{++} example:
3249
3250 @smallexample
3251 typedef const int const_int;
3252 const_int foo (3);
3253 const_int& foo_ref (foo);
3254 int main () @{ return 0; @}
3255 @end smallexample
3256
3257 Then in gdb:
3258
3259 @smallexample
3260 (gdb) start
3261 (gdb) guile (use-modules ((gdb) (gdb types)))
3262 (gdb) guile (define foo-ref (parse-and-eval "foo_ref"))
3263 (gdb) guile (get-basic-type (value-type foo-ref))
3264 int
3265 @end smallexample
3266 @end deffn
3267
3268 @deffn {Scheme Procedure} type-has-field-deep? type field
3269 Return @code{#t} if @var{type}, assumed to be a type with fields
3270 (e.g., a structure or union), has field @var{field}.
3271 Otherwise return @code{#f}.
3272 This searches baseclasses, whereas @code{type-has-field?} does not.
3273 @end deffn
3274
3275 @deffn {Scheme Procedure} make-enum-hashtable enum-type
3276 Return a Guile hash table produced from @var{enum-type}.
3277 Elements in the hash table are referenced with @code{hashq-ref}.
3278 @end deffn
This page took 0.132561 seconds and 4 git commands to generate.