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