gdb: update Type.fields doc based on actual GDB behavior
[binutils-gdb.git] / gdb / doc / python.texi
1 @c Copyright (C) 2008--2021 Free Software Foundation, Inc.
2 @c Permission is granted to copy, distribute and/or modify this document
3 @c under the terms of the GNU Free Documentation License, Version 1.3 or
4 @c any later version published by the Free Software Foundation; with the
5 @c Invariant Sections being ``Free Software'' and ``Free Software Needs
6 @c Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
7 @c and with the Back-Cover Texts as in (a) below.
8 @c
9 @c (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
10 @c this GNU Manual. Buying copies from GNU Press supports the FSF in
11 @c developing GNU and promoting software freedom.''
12
13 @node Python
14 @section Extending @value{GDBN} using Python
15 @cindex python scripting
16 @cindex scripting with python
17
18 You can extend @value{GDBN} using the @uref{http://www.python.org/,
19 Python programming language}. This feature is available only if
20 @value{GDBN} was configured using @option{--with-python}.
21 @value{GDBN} can be built against either Python 2 or Python 3; which
22 one you have depends on this configure-time option.
23
24 @cindex python directory
25 Python scripts used by @value{GDBN} should be installed in
26 @file{@var{data-directory}/python}, where @var{data-directory} is
27 the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
28 This directory, known as the @dfn{python directory},
29 is automatically added to the Python Search Path in order to allow
30 the Python interpreter to locate all scripts installed at this location.
31
32 Additionally, @value{GDBN} commands and convenience functions which
33 are written in Python and are located in the
34 @file{@var{data-directory}/python/gdb/command} or
35 @file{@var{data-directory}/python/gdb/function} directories are
36 automatically imported when @value{GDBN} starts.
37
38 @menu
39 * Python Commands:: Accessing Python from @value{GDBN}.
40 * Python API:: Accessing @value{GDBN} from Python.
41 * Python Auto-loading:: Automatically loading Python code.
42 * Python modules:: Python modules provided by @value{GDBN}.
43 @end menu
44
45 @node Python Commands
46 @subsection Python Commands
47 @cindex python commands
48 @cindex commands to access python
49
50 @value{GDBN} provides two commands for accessing the Python interpreter,
51 and one related setting:
52
53 @table @code
54 @kindex python-interactive
55 @kindex pi
56 @item python-interactive @r{[}@var{command}@r{]}
57 @itemx pi @r{[}@var{command}@r{]}
58 Without an argument, the @code{python-interactive} command can be used
59 to start an interactive Python prompt. To return to @value{GDBN},
60 type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt).
61
62 Alternatively, a single-line Python command can be given as an
63 argument and evaluated. If the command is an expression, the result
64 will be printed; otherwise, nothing will be printed. For example:
65
66 @smallexample
67 (@value{GDBP}) python-interactive 2 + 3
68 5
69 @end smallexample
70
71 @kindex python
72 @kindex py
73 @item python @r{[}@var{command}@r{]}
74 @itemx py @r{[}@var{command}@r{]}
75 The @code{python} command can be used to evaluate Python code.
76
77 If given an argument, the @code{python} command will evaluate the
78 argument as a Python command. For example:
79
80 @smallexample
81 (@value{GDBP}) python print 23
82 23
83 @end smallexample
84
85 If you do not provide an argument to @code{python}, it will act as a
86 multi-line command, like @code{define}. In this case, the Python
87 script is made up of subsequent command lines, given after the
88 @code{python} command. This command list is terminated using a line
89 containing @code{end}. For example:
90
91 @smallexample
92 (@value{GDBP}) python
93 >print 23
94 >end
95 23
96 @end smallexample
97
98 @kindex set python print-stack
99 @item set python print-stack
100 By default, @value{GDBN} will print only the message component of a
101 Python exception when an error occurs in a Python script. This can be
102 controlled using @code{set python print-stack}: if @code{full}, then
103 full Python stack printing is enabled; if @code{none}, then Python stack
104 and message printing is disabled; if @code{message}, the default, only
105 the message component of the error is printed.
106
107 @kindex set python ignore-environment
108 @item set python ignore-environment @r{[}on@r{|}off@r{]}
109 By default this option is @samp{off}, and, when @value{GDBN}
110 initializes its internal Python interpreter, the Python interpreter
111 will check the environment for variables that will effect how it
112 behaves, for example @env{PYTHONHOME}, and
113 @env{PYTHONPATH}@footnote{See the ENVIRONMENT VARIABLES section of
114 @command{man 1 python} for a comprehensive list.}.
115
116 If this option is set to @samp{on} before Python is initialized then
117 Python will ignore all such environment variables. As Python is
118 initialized early during @value{GDBN}'s startup process, then this
119 option must be placed into the early initialization file
120 (@pxref{Initialization Files}) to have the desired effect.
121
122 This option is equivalent to passing @option{-E} to the real
123 @command{python} executable.
124
125 @kindex set python dont-write-bytecode
126 @item set python dont-write-bytecode @r{[}auto@r{|}on@r{|}off@r{]}
127 When this option is @samp{off}, then, once @value{GDBN} has
128 initialized the Python interpreter, the interpreter will byte-compile
129 any Python modules that it imports and write the byte code to disk in
130 @file{.pyc} files.
131
132 If this option is set to @samp{on} before Python is initialized then
133 Python will no longer write the byte code to disk. As Python is
134 initialized early during @value{GDBN}'s startup process, then this
135 option must be placed into the early initialization file
136 (@pxref{Initialization Files}) to have the desired effect.
137
138 By default this option is set to @samp{auto}, in this mode Python will
139 check the environment variable @env{PYTHONDONTWRITEBYTECODE} to see
140 if it should write out byte-code or not.
141
142 This option is equivalent to passing @option{-B} to the real
143 @command{python} executable.
144 @end table
145
146 It is also possible to execute a Python script from the @value{GDBN}
147 interpreter:
148
149 @table @code
150 @item source @file{script-name}
151 The script name must end with @samp{.py} and @value{GDBN} must be configured
152 to recognize the script language based on filename extension using
153 the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
154 @end table
155
156 @node Python API
157 @subsection Python API
158 @cindex python api
159 @cindex programming in python
160
161 You can get quick online help for @value{GDBN}'s Python API by issuing
162 the command @w{@kbd{python help (gdb)}}.
163
164 Functions and methods which have two or more optional arguments allow
165 them to be specified using keyword syntax. This allows passing some
166 optional arguments while skipping others. Example:
167 @w{@code{gdb.some_function ('foo', bar = 1, baz = 2)}}.
168
169 @menu
170 * Basic Python:: Basic Python Functions.
171 * Exception Handling:: How Python exceptions are translated.
172 * Values From Inferior:: Python representation of values.
173 * Types In Python:: Python representation of types.
174 * Pretty Printing API:: Pretty-printing values.
175 * Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
176 * Writing a Pretty-Printer:: Writing a Pretty-Printer.
177 * Type Printing API:: Pretty-printing types.
178 * Frame Filter API:: Filtering Frames.
179 * Frame Decorator API:: Decorating Frames.
180 * Writing a Frame Filter:: Writing a Frame Filter.
181 * Unwinding Frames in Python:: Writing frame unwinder.
182 * Xmethods In Python:: Adding and replacing methods of C++ classes.
183 * Xmethod API:: Xmethod types.
184 * Writing an Xmethod:: Writing an xmethod.
185 * Inferiors In Python:: Python representation of inferiors (processes)
186 * Events In Python:: Listening for events from @value{GDBN}.
187 * Threads In Python:: Accessing inferior threads from Python.
188 * Recordings In Python:: Accessing recordings from Python.
189 * Commands In Python:: Implementing new commands in Python.
190 * Parameters In Python:: Adding new @value{GDBN} parameters.
191 * Functions In Python:: Writing new convenience functions.
192 * Progspaces In Python:: Program spaces.
193 * Objfiles In Python:: Object files.
194 * Frames In Python:: Accessing inferior stack frames from Python.
195 * Blocks In Python:: Accessing blocks from Python.
196 * Symbols In Python:: Python representation of symbols.
197 * Symbol Tables In Python:: Python representation of symbol tables.
198 * Line Tables In Python:: Python representation of line tables.
199 * Breakpoints In Python:: Manipulating breakpoints using Python.
200 * Finish Breakpoints in Python:: Setting Breakpoints on function return
201 using Python.
202 * Lazy Strings In Python:: Python representation of lazy strings.
203 * Architectures In Python:: Python representation of architectures.
204 * Registers In Python:: Python representation of registers.
205 * TUI Windows In Python:: Implementing new TUI windows.
206 @end menu
207
208 @node Basic Python
209 @subsubsection Basic Python
210
211 @cindex python stdout
212 @cindex python pagination
213 At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
214 @code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
215 A Python program which outputs to one of these streams may have its
216 output interrupted by the user (@pxref{Screen Size}). In this
217 situation, a Python @code{KeyboardInterrupt} exception is thrown.
218
219 Some care must be taken when writing Python code to run in
220 @value{GDBN}. Two things worth noting in particular:
221
222 @itemize @bullet
223 @item
224 @value{GDBN} install handlers for @code{SIGCHLD} and @code{SIGINT}.
225 Python code must not override these, or even change the options using
226 @code{sigaction}. If your program changes the handling of these
227 signals, @value{GDBN} will most likely stop working correctly. Note
228 that it is unfortunately common for GUI toolkits to install a
229 @code{SIGCHLD} handler.
230
231 @item
232 @value{GDBN} takes care to mark its internal file descriptors as
233 close-on-exec. However, this cannot be done in a thread-safe way on
234 all platforms. Your Python programs should be aware of this and
235 should both create new file descriptors with the close-on-exec flag
236 set and arrange to close unneeded file descriptors before starting a
237 child process.
238 @end itemize
239
240 @cindex python functions
241 @cindex python module
242 @cindex gdb module
243 @value{GDBN} introduces a new Python module, named @code{gdb}. All
244 methods and classes added by @value{GDBN} are placed in this module.
245 @value{GDBN} automatically @code{import}s the @code{gdb} module for
246 use in all scripts evaluated by the @code{python} command.
247
248 Some types of the @code{gdb} module come with a textual representation
249 (accessible through the @code{repr} or @code{str} functions). These are
250 offered for debugging purposes only, expect them to change over time.
251
252 @findex gdb.PYTHONDIR
253 @defvar gdb.PYTHONDIR
254 A string containing the python directory (@pxref{Python}).
255 @end defvar
256
257 @findex gdb.execute
258 @defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
259 Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
260 If a GDB exception happens while @var{command} runs, it is
261 translated as described in @ref{Exception Handling,,Exception Handling}.
262
263 The @var{from_tty} flag specifies whether @value{GDBN} ought to consider this
264 command as having originated from the user invoking it interactively.
265 It must be a boolean value. If omitted, it defaults to @code{False}.
266
267 By default, any output produced by @var{command} is sent to
268 @value{GDBN}'s standard output (and to the log output if logging is
269 turned on). If the @var{to_string} parameter is
270 @code{True}, then output will be collected by @code{gdb.execute} and
271 returned as a string. The default is @code{False}, in which case the
272 return value is @code{None}. If @var{to_string} is @code{True}, the
273 @value{GDBN} virtual terminal will be temporarily set to unlimited width
274 and height, and its pagination will be disabled; @pxref{Screen Size}.
275 @end defun
276
277 @findex gdb.breakpoints
278 @defun gdb.breakpoints ()
279 Return a sequence holding all of @value{GDBN}'s breakpoints.
280 @xref{Breakpoints In Python}, for more information. In @value{GDBN}
281 version 7.11 and earlier, this function returned @code{None} if there
282 were no breakpoints. This peculiarity was subsequently fixed, and now
283 @code{gdb.breakpoints} returns an empty sequence in this case.
284 @end defun
285
286 @defun gdb.rbreak (regex @r{[}, minsyms @r{[}, throttle, @r{[}, symtabs @r{]]]})
287 Return a Python list holding a collection of newly set
288 @code{gdb.Breakpoint} objects matching function names defined by the
289 @var{regex} pattern. If the @var{minsyms} keyword is @code{True}, all
290 system functions (those not explicitly defined in the inferior) will
291 also be included in the match. The @var{throttle} keyword takes an
292 integer that defines the maximum number of pattern matches for
293 functions matched by the @var{regex} pattern. If the number of
294 matches exceeds the integer value of @var{throttle}, a
295 @code{RuntimeError} will be raised and no breakpoints will be created.
296 If @var{throttle} is not defined then there is no imposed limit on the
297 maximum number of matches and breakpoints to be created. The
298 @var{symtabs} keyword takes a Python iterable that yields a collection
299 of @code{gdb.Symtab} objects and will restrict the search to those
300 functions only contained within the @code{gdb.Symtab} objects.
301 @end defun
302
303 @findex gdb.parameter
304 @defun gdb.parameter (parameter)
305 Return the value of a @value{GDBN} @var{parameter} given by its name,
306 a string; the parameter name string may contain spaces if the parameter has a
307 multi-part name. For example, @samp{print object} is a valid
308 parameter name.
309
310 If the named parameter does not exist, this function throws a
311 @code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
312 parameter's value is converted to a Python value of the appropriate
313 type, and returned.
314 @end defun
315
316 @findex gdb.history
317 @defun gdb.history (number)
318 Return a value from @value{GDBN}'s value history (@pxref{Value
319 History}). The @var{number} argument indicates which history element to return.
320 If @var{number} is negative, then @value{GDBN} will take its absolute value
321 and count backward from the last element (i.e., the most recent element) to
322 find the value to return. If @var{number} is zero, then @value{GDBN} will
323 return the most recent element. If the element specified by @var{number}
324 doesn't exist in the value history, a @code{gdb.error} exception will be
325 raised.
326
327 If no exception is raised, the return value is always an instance of
328 @code{gdb.Value} (@pxref{Values From Inferior}).
329 @end defun
330
331 @findex gdb.convenience_variable
332 @defun gdb.convenience_variable (name)
333 Return the value of the convenience variable (@pxref{Convenience
334 Vars}) named @var{name}. @var{name} must be a string. The name
335 should not include the @samp{$} that is used to mark a convenience
336 variable in an expression. If the convenience variable does not
337 exist, then @code{None} is returned.
338 @end defun
339
340 @findex gdb.set_convenience_variable
341 @defun gdb.set_convenience_variable (name, value)
342 Set the value of the convenience variable (@pxref{Convenience Vars})
343 named @var{name}. @var{name} must be a string. The name should not
344 include the @samp{$} that is used to mark a convenience variable in an
345 expression. If @var{value} is @code{None}, then the convenience
346 variable is removed. Otherwise, if @var{value} is not a
347 @code{gdb.Value} (@pxref{Values From Inferior}), it is is converted
348 using the @code{gdb.Value} constructor.
349 @end defun
350
351 @findex gdb.parse_and_eval
352 @defun gdb.parse_and_eval (expression)
353 Parse @var{expression}, which must be a string, as an expression in
354 the current language, evaluate it, and return the result as a
355 @code{gdb.Value}.
356
357 This function can be useful when implementing a new command
358 (@pxref{Commands In Python}), as it provides a way to parse the
359 command's argument as an expression. It is also useful simply to
360 compute values.
361 @end defun
362
363 @findex gdb.find_pc_line
364 @defun gdb.find_pc_line (pc)
365 Return the @code{gdb.Symtab_and_line} object corresponding to the
366 @var{pc} value. @xref{Symbol Tables In Python}. If an invalid
367 value of @var{pc} is passed as an argument, then the @code{symtab} and
368 @code{line} attributes of the returned @code{gdb.Symtab_and_line} object
369 will be @code{None} and 0 respectively. This is identical to
370 @code{gdb.current_progspace().find_pc_line(pc)} and is included for
371 historical compatibility.
372 @end defun
373
374 @findex gdb.post_event
375 @defun gdb.post_event (event)
376 Put @var{event}, a callable object taking no arguments, into
377 @value{GDBN}'s internal event queue. This callable will be invoked at
378 some later point, during @value{GDBN}'s event processing. Events
379 posted using @code{post_event} will be run in the order in which they
380 were posted; however, there is no way to know when they will be
381 processed relative to other events inside @value{GDBN}.
382
383 @value{GDBN} is not thread-safe. If your Python program uses multiple
384 threads, you must be careful to only call @value{GDBN}-specific
385 functions in the @value{GDBN} thread. @code{post_event} ensures
386 this. For example:
387
388 @smallexample
389 (@value{GDBP}) python
390 >import threading
391 >
392 >class Writer():
393 > def __init__(self, message):
394 > self.message = message;
395 > def __call__(self):
396 > gdb.write(self.message)
397 >
398 >class MyThread1 (threading.Thread):
399 > def run (self):
400 > gdb.post_event(Writer("Hello "))
401 >
402 >class MyThread2 (threading.Thread):
403 > def run (self):
404 > gdb.post_event(Writer("World\n"))
405 >
406 >MyThread1().start()
407 >MyThread2().start()
408 >end
409 (@value{GDBP}) Hello World
410 @end smallexample
411 @end defun
412
413 @findex gdb.write
414 @defun gdb.write (string @r{[}, stream{]})
415 Print a string to @value{GDBN}'s paginated output stream. The
416 optional @var{stream} determines the stream to print to. The default
417 stream is @value{GDBN}'s standard output stream. Possible stream
418 values are:
419
420 @table @code
421 @findex STDOUT
422 @findex gdb.STDOUT
423 @item gdb.STDOUT
424 @value{GDBN}'s standard output stream.
425
426 @findex STDERR
427 @findex gdb.STDERR
428 @item gdb.STDERR
429 @value{GDBN}'s standard error stream.
430
431 @findex STDLOG
432 @findex gdb.STDLOG
433 @item gdb.STDLOG
434 @value{GDBN}'s log stream (@pxref{Logging Output}).
435 @end table
436
437 Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
438 call this function and will automatically direct the output to the
439 relevant stream.
440 @end defun
441
442 @findex gdb.flush
443 @defun gdb.flush ()
444 Flush the buffer of a @value{GDBN} paginated stream so that the
445 contents are displayed immediately. @value{GDBN} will flush the
446 contents of a stream automatically when it encounters a newline in the
447 buffer. The optional @var{stream} determines the stream to flush. The
448 default stream is @value{GDBN}'s standard output stream. Possible
449 stream values are:
450
451 @table @code
452 @findex STDOUT
453 @findex gdb.STDOUT
454 @item gdb.STDOUT
455 @value{GDBN}'s standard output stream.
456
457 @findex STDERR
458 @findex gdb.STDERR
459 @item gdb.STDERR
460 @value{GDBN}'s standard error stream.
461
462 @findex STDLOG
463 @findex gdb.STDLOG
464 @item gdb.STDLOG
465 @value{GDBN}'s log stream (@pxref{Logging Output}).
466
467 @end table
468
469 Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
470 call this function for the relevant stream.
471 @end defun
472
473 @findex gdb.target_charset
474 @defun gdb.target_charset ()
475 Return the name of the current target character set (@pxref{Character
476 Sets}). This differs from @code{gdb.parameter('target-charset')} in
477 that @samp{auto} is never returned.
478 @end defun
479
480 @findex gdb.target_wide_charset
481 @defun gdb.target_wide_charset ()
482 Return the name of the current target wide character set
483 (@pxref{Character Sets}). This differs from
484 @code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
485 never returned.
486 @end defun
487
488 @findex gdb.solib_name
489 @defun gdb.solib_name (address)
490 Return the name of the shared library holding the given @var{address}
491 as a string, or @code{None}. This is identical to
492 @code{gdb.current_progspace().solib_name(address)} and is included for
493 historical compatibility.
494 @end defun
495
496 @findex gdb.decode_line
497 @defun gdb.decode_line (@r{[}expression@r{]})
498 Return locations of the line specified by @var{expression}, or of the
499 current line if no argument was given. This function returns a Python
500 tuple containing two elements. The first element contains a string
501 holding any unparsed section of @var{expression} (or @code{None} if
502 the expression has been fully parsed). The second element contains
503 either @code{None} or another tuple that contains all the locations
504 that match the expression represented as @code{gdb.Symtab_and_line}
505 objects (@pxref{Symbol Tables In Python}). If @var{expression} is
506 provided, it is decoded the way that @value{GDBN}'s inbuilt
507 @code{break} or @code{edit} commands do (@pxref{Specify Location}).
508 @end defun
509
510 @defun gdb.prompt_hook (current_prompt)
511 @anchor{prompt_hook}
512
513 If @var{prompt_hook} is callable, @value{GDBN} will call the method
514 assigned to this operation before a prompt is displayed by
515 @value{GDBN}.
516
517 The parameter @code{current_prompt} contains the current @value{GDBN}
518 prompt. This method must return a Python string, or @code{None}. If
519 a string is returned, the @value{GDBN} prompt will be set to that
520 string. If @code{None} is returned, @value{GDBN} will continue to use
521 the current prompt.
522
523 Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
524 such as those used by readline for command input, and annotation
525 related prompts are prohibited from being changed.
526 @end defun
527
528 @node Exception Handling
529 @subsubsection Exception Handling
530 @cindex python exceptions
531 @cindex exceptions, python
532
533 When executing the @code{python} command, Python exceptions
534 uncaught within the Python code are translated to calls to
535 @value{GDBN} error-reporting mechanism. If the command that called
536 @code{python} does not handle the error, @value{GDBN} will
537 terminate it and print an error message containing the Python
538 exception name, the associated value, and the Python call stack
539 backtrace at the point where the exception was raised. Example:
540
541 @smallexample
542 (@value{GDBP}) python print foo
543 Traceback (most recent call last):
544 File "<string>", line 1, in <module>
545 NameError: name 'foo' is not defined
546 @end smallexample
547
548 @value{GDBN} errors that happen in @value{GDBN} commands invoked by
549 Python code are converted to Python exceptions. The type of the
550 Python exception depends on the error.
551
552 @ftable @code
553 @item gdb.error
554 This is the base class for most exceptions generated by @value{GDBN}.
555 It is derived from @code{RuntimeError}, for compatibility with earlier
556 versions of @value{GDBN}.
557
558 If an error occurring in @value{GDBN} does not fit into some more
559 specific category, then the generated exception will have this type.
560
561 @item gdb.MemoryError
562 This is a subclass of @code{gdb.error} which is thrown when an
563 operation tried to access invalid memory in the inferior.
564
565 @item KeyboardInterrupt
566 User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
567 prompt) is translated to a Python @code{KeyboardInterrupt} exception.
568 @end ftable
569
570 In all cases, your exception handler will see the @value{GDBN} error
571 message as its value and the Python call stack backtrace at the Python
572 statement closest to where the @value{GDBN} error occured as the
573 traceback.
574
575
576 When implementing @value{GDBN} commands in Python via
577 @code{gdb.Command}, or functions via @code{gdb.Function}, it is useful
578 to be able to throw an exception that doesn't cause a traceback to be
579 printed. For example, the user may have invoked the command
580 incorrectly. @value{GDBN} provides a special exception class that can
581 be used for this purpose.
582
583 @ftable @code
584 @item gdb.GdbError
585 When thrown from a command or function, this exception will cause the
586 command or function to fail, but the Python stack will not be
587 displayed. @value{GDBN} does not throw this exception itself, but
588 rather recognizes it when thrown from user Python code. Example:
589
590 @smallexample
591 (gdb) python
592 >class HelloWorld (gdb.Command):
593 > """Greet the whole world."""
594 > def __init__ (self):
595 > super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
596 > def invoke (self, args, from_tty):
597 > argv = gdb.string_to_argv (args)
598 > if len (argv) != 0:
599 > raise gdb.GdbError ("hello-world takes no arguments")
600 > print ("Hello, World!")
601 >HelloWorld ()
602 >end
603 (gdb) hello-world 42
604 hello-world takes no arguments
605 @end smallexample
606 @end ftable
607
608 @node Values From Inferior
609 @subsubsection Values From Inferior
610 @cindex values from inferior, with Python
611 @cindex python, working with values from inferior
612
613 @cindex @code{gdb.Value}
614 @value{GDBN} provides values it obtains from the inferior program in
615 an object of type @code{gdb.Value}. @value{GDBN} uses this object
616 for its internal bookkeeping of the inferior's values, and for
617 fetching values when necessary.
618
619 Inferior values that are simple scalars can be used directly in
620 Python expressions that are valid for the value's data type. Here's
621 an example for an integer or floating-point value @code{some_val}:
622
623 @smallexample
624 bar = some_val + 2
625 @end smallexample
626
627 @noindent
628 As result of this, @code{bar} will also be a @code{gdb.Value} object
629 whose values are of the same type as those of @code{some_val}. Valid
630 Python operations can also be performed on @code{gdb.Value} objects
631 representing a @code{struct} or @code{class} object. For such cases,
632 the overloaded operator (if present), is used to perform the operation.
633 For example, if @code{val1} and @code{val2} are @code{gdb.Value} objects
634 representing instances of a @code{class} which overloads the @code{+}
635 operator, then one can use the @code{+} operator in their Python script
636 as follows:
637
638 @smallexample
639 val3 = val1 + val2
640 @end smallexample
641
642 @noindent
643 The result of the operation @code{val3} is also a @code{gdb.Value}
644 object corresponding to the value returned by the overloaded @code{+}
645 operator. In general, overloaded operators are invoked for the
646 following operations: @code{+} (binary addition), @code{-} (binary
647 subtraction), @code{*} (multiplication), @code{/}, @code{%}, @code{<<},
648 @code{>>}, @code{|}, @code{&}, @code{^}.
649
650 Inferior values that are structures or instances of some class can
651 be accessed using the Python @dfn{dictionary syntax}. For example, if
652 @code{some_val} is a @code{gdb.Value} instance holding a structure, you
653 can access its @code{foo} element with:
654
655 @smallexample
656 bar = some_val['foo']
657 @end smallexample
658
659 @cindex getting structure elements using gdb.Field objects as subscripts
660 Again, @code{bar} will also be a @code{gdb.Value} object. Structure
661 elements can also be accessed by using @code{gdb.Field} objects as
662 subscripts (@pxref{Types In Python}, for more information on
663 @code{gdb.Field} objects). For example, if @code{foo_field} is a
664 @code{gdb.Field} object corresponding to element @code{foo} of the above
665 structure, then @code{bar} can also be accessed as follows:
666
667 @smallexample
668 bar = some_val[foo_field]
669 @end smallexample
670
671 A @code{gdb.Value} that represents a function can be executed via
672 inferior function call. Any arguments provided to the call must match
673 the function's prototype, and must be provided in the order specified
674 by that prototype.
675
676 For example, @code{some_val} is a @code{gdb.Value} instance
677 representing a function that takes two integers as arguments. To
678 execute this function, call it like so:
679
680 @smallexample
681 result = some_val (10,20)
682 @end smallexample
683
684 Any values returned from a function call will be stored as a
685 @code{gdb.Value}.
686
687 The following attributes are provided:
688
689 @defvar Value.address
690 If this object is addressable, this read-only attribute holds a
691 @code{gdb.Value} object representing the address. Otherwise,
692 this attribute holds @code{None}.
693 @end defvar
694
695 @cindex optimized out value in Python
696 @defvar Value.is_optimized_out
697 This read-only boolean attribute is true if the compiler optimized out
698 this value, thus it is not available for fetching from the inferior.
699 @end defvar
700
701 @defvar Value.type
702 The type of this @code{gdb.Value}. The value of this attribute is a
703 @code{gdb.Type} object (@pxref{Types In Python}).
704 @end defvar
705
706 @defvar Value.dynamic_type
707 The dynamic type of this @code{gdb.Value}. This uses the object's
708 virtual table and the C@t{++} run-time type information
709 (@acronym{RTTI}) to determine the dynamic type of the value. If this
710 value is of class type, it will return the class in which the value is
711 embedded, if any. If this value is of pointer or reference to a class
712 type, it will compute the dynamic type of the referenced object, and
713 return a pointer or reference to that type, respectively. In all
714 other cases, it will return the value's static type.
715
716 Note that this feature will only work when debugging a C@t{++} program
717 that includes @acronym{RTTI} for the object in question. Otherwise,
718 it will just return the static type of the value as in @kbd{ptype foo}
719 (@pxref{Symbols, ptype}).
720 @end defvar
721
722 @defvar Value.is_lazy
723 The value of this read-only boolean attribute is @code{True} if this
724 @code{gdb.Value} has not yet been fetched from the inferior.
725 @value{GDBN} does not fetch values until necessary, for efficiency.
726 For example:
727
728 @smallexample
729 myval = gdb.parse_and_eval ('somevar')
730 @end smallexample
731
732 The value of @code{somevar} is not fetched at this time. It will be
733 fetched when the value is needed, or when the @code{fetch_lazy}
734 method is invoked.
735 @end defvar
736
737 The following methods are provided:
738
739 @defun Value.__init__ (@var{val})
740 Many Python values can be converted directly to a @code{gdb.Value} via
741 this object initializer. Specifically:
742
743 @table @asis
744 @item Python boolean
745 A Python boolean is converted to the boolean type from the current
746 language.
747
748 @item Python integer
749 A Python integer is converted to the C @code{long} type for the
750 current architecture.
751
752 @item Python long
753 A Python long is converted to the C @code{long long} type for the
754 current architecture.
755
756 @item Python float
757 A Python float is converted to the C @code{double} type for the
758 current architecture.
759
760 @item Python string
761 A Python string is converted to a target string in the current target
762 language using the current target encoding.
763 If a character cannot be represented in the current target encoding,
764 then an exception is thrown.
765
766 @item @code{gdb.Value}
767 If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
768
769 @item @code{gdb.LazyString}
770 If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
771 Python}), then the lazy string's @code{value} method is called, and
772 its result is used.
773 @end table
774 @end defun
775
776 @defun Value.__init__ (@var{val}, @var{type})
777 This second form of the @code{gdb.Value} constructor returns a
778 @code{gdb.Value} of type @var{type} where the value contents are taken
779 from the Python buffer object specified by @var{val}. The number of
780 bytes in the Python buffer object must be greater than or equal to the
781 size of @var{type}.
782 @end defun
783
784 @defun Value.cast (type)
785 Return a new instance of @code{gdb.Value} that is the result of
786 casting this instance to the type described by @var{type}, which must
787 be a @code{gdb.Type} object. If the cast cannot be performed for some
788 reason, this method throws an exception.
789 @end defun
790
791 @defun Value.dereference ()
792 For pointer data types, this method returns a new @code{gdb.Value} object
793 whose contents is the object pointed to by the pointer. For example, if
794 @code{foo} is a C pointer to an @code{int}, declared in your C program as
795
796 @smallexample
797 int *foo;
798 @end smallexample
799
800 @noindent
801 then you can use the corresponding @code{gdb.Value} to access what
802 @code{foo} points to like this:
803
804 @smallexample
805 bar = foo.dereference ()
806 @end smallexample
807
808 The result @code{bar} will be a @code{gdb.Value} object holding the
809 value pointed to by @code{foo}.
810
811 A similar function @code{Value.referenced_value} exists which also
812 returns @code{gdb.Value} objects corresponding to the values pointed to
813 by pointer values (and additionally, values referenced by reference
814 values). However, the behavior of @code{Value.dereference}
815 differs from @code{Value.referenced_value} by the fact that the
816 behavior of @code{Value.dereference} is identical to applying the C
817 unary operator @code{*} on a given value. For example, consider a
818 reference to a pointer @code{ptrref}, declared in your C@t{++} program
819 as
820
821 @smallexample
822 typedef int *intptr;
823 ...
824 int val = 10;
825 intptr ptr = &val;
826 intptr &ptrref = ptr;
827 @end smallexample
828
829 Though @code{ptrref} is a reference value, one can apply the method
830 @code{Value.dereference} to the @code{gdb.Value} object corresponding
831 to it and obtain a @code{gdb.Value} which is identical to that
832 corresponding to @code{val}. However, if you apply the method
833 @code{Value.referenced_value}, the result would be a @code{gdb.Value}
834 object identical to that corresponding to @code{ptr}.
835
836 @smallexample
837 py_ptrref = gdb.parse_and_eval ("ptrref")
838 py_val = py_ptrref.dereference ()
839 py_ptr = py_ptrref.referenced_value ()
840 @end smallexample
841
842 The @code{gdb.Value} object @code{py_val} is identical to that
843 corresponding to @code{val}, and @code{py_ptr} is identical to that
844 corresponding to @code{ptr}. In general, @code{Value.dereference} can
845 be applied whenever the C unary operator @code{*} can be applied
846 to the corresponding C value. For those cases where applying both
847 @code{Value.dereference} and @code{Value.referenced_value} is allowed,
848 the results obtained need not be identical (as we have seen in the above
849 example). The results are however identical when applied on
850 @code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
851 objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
852 @end defun
853
854 @defun Value.referenced_value ()
855 For pointer or reference data types, this method returns a new
856 @code{gdb.Value} object corresponding to the value referenced by the
857 pointer/reference value. For pointer data types,
858 @code{Value.dereference} and @code{Value.referenced_value} produce
859 identical results. The difference between these methods is that
860 @code{Value.dereference} cannot get the values referenced by reference
861 values. For example, consider a reference to an @code{int}, declared
862 in your C@t{++} program as
863
864 @smallexample
865 int val = 10;
866 int &ref = val;
867 @end smallexample
868
869 @noindent
870 then applying @code{Value.dereference} to the @code{gdb.Value} object
871 corresponding to @code{ref} will result in an error, while applying
872 @code{Value.referenced_value} will result in a @code{gdb.Value} object
873 identical to that corresponding to @code{val}.
874
875 @smallexample
876 py_ref = gdb.parse_and_eval ("ref")
877 er_ref = py_ref.dereference () # Results in error
878 py_val = py_ref.referenced_value () # Returns the referenced value
879 @end smallexample
880
881 The @code{gdb.Value} object @code{py_val} is identical to that
882 corresponding to @code{val}.
883 @end defun
884
885 @defun Value.reference_value ()
886 Return a @code{gdb.Value} object which is a reference to the value
887 encapsulated by this instance.
888 @end defun
889
890 @defun Value.const_value ()
891 Return a @code{gdb.Value} object which is a @code{const} version of the
892 value encapsulated by this instance.
893 @end defun
894
895 @defun Value.dynamic_cast (type)
896 Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
897 operator were used. Consult a C@t{++} reference for details.
898 @end defun
899
900 @defun Value.reinterpret_cast (type)
901 Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
902 operator were used. Consult a C@t{++} reference for details.
903 @end defun
904
905 @defun Value.format_string (...)
906 Convert a @code{gdb.Value} to a string, similarly to what the @code{print}
907 command does. Invoked with no arguments, this is equivalent to calling
908 the @code{str} function on the @code{gdb.Value}. The representation of
909 the same value may change across different versions of @value{GDBN}, so
910 you shouldn't, for instance, parse the strings returned by this method.
911
912 All the arguments are keyword only. If an argument is not specified, the
913 current global default setting is used.
914
915 @table @code
916 @item raw
917 @code{True} if pretty-printers (@pxref{Pretty Printing}) should not be
918 used to format the value. @code{False} if enabled pretty-printers
919 matching the type represented by the @code{gdb.Value} should be used to
920 format it.
921
922 @item pretty_arrays
923 @code{True} if arrays should be pretty printed to be more convenient to
924 read, @code{False} if they shouldn't (see @code{set print array} in
925 @ref{Print Settings}).
926
927 @item pretty_structs
928 @code{True} if structs should be pretty printed to be more convenient to
929 read, @code{False} if they shouldn't (see @code{set print pretty} in
930 @ref{Print Settings}).
931
932 @item array_indexes
933 @code{True} if array indexes should be included in the string
934 representation of arrays, @code{False} if they shouldn't (see @code{set
935 print array-indexes} in @ref{Print Settings}).
936
937 @item symbols
938 @code{True} if the string representation of a pointer should include the
939 corresponding symbol name (if one exists), @code{False} if it shouldn't
940 (see @code{set print symbol} in @ref{Print Settings}).
941
942 @item unions
943 @code{True} if unions which are contained in other structures or unions
944 should be expanded, @code{False} if they shouldn't (see @code{set print
945 union} in @ref{Print Settings}).
946
947 @item address
948 @code{True} if the string representation of a pointer should include the
949 address, @code{False} if it shouldn't (see @code{set print address} in
950 @ref{Print Settings}).
951
952 @item deref_refs
953 @code{True} if C@t{++} references should be resolved to the value they
954 refer to, @code{False} (the default) if they shouldn't. Note that, unlike
955 for the @code{print} command, references are not automatically expanded
956 when using the @code{format_string} method or the @code{str}
957 function. There is no global @code{print} setting to change the default
958 behaviour.
959
960 @item actual_objects
961 @code{True} if the representation of a pointer to an object should
962 identify the @emph{actual} (derived) type of the object rather than the
963 @emph{declared} type, using the virtual function table. @code{False} if
964 the @emph{declared} type should be used. (See @code{set print object} in
965 @ref{Print Settings}).
966
967 @item static_members
968 @code{True} if static members should be included in the string
969 representation of a C@t{++} object, @code{False} if they shouldn't (see
970 @code{set print static-members} in @ref{Print Settings}).
971
972 @item max_elements
973 Number of array elements to print, or @code{0} to print an unlimited
974 number of elements (see @code{set print elements} in @ref{Print
975 Settings}).
976
977 @item max_depth
978 The maximum depth to print for nested structs and unions, or @code{-1}
979 to print an unlimited number of elements (see @code{set print
980 max-depth} in @ref{Print Settings}).
981
982 @item repeat_threshold
983 Set the threshold for suppressing display of repeated array elements, or
984 @code{0} to represent all elements, even if repeated. (See @code{set
985 print repeats} in @ref{Print Settings}).
986
987 @item format
988 A string containing a single character representing the format to use for
989 the returned string. For instance, @code{'x'} is equivalent to using the
990 @value{GDBN} command @code{print} with the @code{/x} option and formats
991 the value as a hexadecimal number.
992 @end table
993 @end defun
994
995 @defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
996 If this @code{gdb.Value} represents a string, then this method
997 converts the contents to a Python string. Otherwise, this method will
998 throw an exception.
999
1000 Values are interpreted as strings according to the rules of the
1001 current language. If the optional length argument is given, the
1002 string will be converted to that length, and will include any embedded
1003 zeroes that the string may contain. Otherwise, for languages
1004 where the string is zero-terminated, the entire string will be
1005 converted.
1006
1007 For example, in C-like languages, a value is a string if it is a pointer
1008 to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
1009 or @code{char32_t}.
1010
1011 If the optional @var{encoding} argument is given, it must be a string
1012 naming the encoding of the string in the @code{gdb.Value}, such as
1013 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
1014 the same encodings as the corresponding argument to Python's
1015 @code{string.decode} method, and the Python codec machinery will be used
1016 to convert the string. If @var{encoding} is not given, or if
1017 @var{encoding} is the empty string, then either the @code{target-charset}
1018 (@pxref{Character Sets}) will be used, or a language-specific encoding
1019 will be used, if the current language is able to supply one.
1020
1021 The optional @var{errors} argument is the same as the corresponding
1022 argument to Python's @code{string.decode} method.
1023
1024 If the optional @var{length} argument is given, the string will be
1025 fetched and converted to the given length.
1026 @end defun
1027
1028 @defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
1029 If this @code{gdb.Value} represents a string, then this method
1030 converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
1031 In Python}). Otherwise, this method will throw an exception.
1032
1033 If the optional @var{encoding} argument is given, it must be a string
1034 naming the encoding of the @code{gdb.LazyString}. Some examples are:
1035 @samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
1036 @var{encoding} argument is an encoding that @value{GDBN} does
1037 recognize, @value{GDBN} will raise an error.
1038
1039 When a lazy string is printed, the @value{GDBN} encoding machinery is
1040 used to convert the string during printing. If the optional
1041 @var{encoding} argument is not provided, or is an empty string,
1042 @value{GDBN} will automatically select the encoding most suitable for
1043 the string type. For further information on encoding in @value{GDBN}
1044 please see @ref{Character Sets}.
1045
1046 If the optional @var{length} argument is given, the string will be
1047 fetched and encoded to the length of characters specified. If
1048 the @var{length} argument is not provided, the string will be fetched
1049 and encoded until a null of appropriate width is found.
1050 @end defun
1051
1052 @defun Value.fetch_lazy ()
1053 If the @code{gdb.Value} object is currently a lazy value
1054 (@code{gdb.Value.is_lazy} is @code{True}), then the value is
1055 fetched from the inferior. Any errors that occur in the process
1056 will produce a Python exception.
1057
1058 If the @code{gdb.Value} object is not a lazy value, this method
1059 has no effect.
1060
1061 This method does not return a value.
1062 @end defun
1063
1064
1065 @node Types In Python
1066 @subsubsection Types In Python
1067 @cindex types in Python
1068 @cindex Python, working with types
1069
1070 @tindex gdb.Type
1071 @value{GDBN} represents types from the inferior using the class
1072 @code{gdb.Type}.
1073
1074 The following type-related functions are available in the @code{gdb}
1075 module:
1076
1077 @findex gdb.lookup_type
1078 @defun gdb.lookup_type (name @r{[}, block@r{]})
1079 This function looks up a type by its @var{name}, which must be a string.
1080
1081 If @var{block} is given, then @var{name} is looked up in that scope.
1082 Otherwise, it is searched for globally.
1083
1084 Ordinarily, this function will return an instance of @code{gdb.Type}.
1085 If the named type cannot be found, it will throw an exception.
1086 @end defun
1087
1088 If the type is a structure or class type, or an enum type, the fields
1089 of that type can be accessed using the Python @dfn{dictionary syntax}.
1090 For example, if @code{some_type} is a @code{gdb.Type} instance holding
1091 a structure type, you can access its @code{foo} field with:
1092
1093 @smallexample
1094 bar = some_type['foo']
1095 @end smallexample
1096
1097 @code{bar} will be a @code{gdb.Field} object; see below under the
1098 description of the @code{Type.fields} method for a description of the
1099 @code{gdb.Field} class.
1100
1101 An instance of @code{Type} has the following attributes:
1102
1103 @defvar Type.alignof
1104 The alignment of this type, in bytes. Type alignment comes from the
1105 debugging information; if it was not specified, then @value{GDBN} will
1106 use the relevant ABI to try to determine the alignment. In some
1107 cases, even this is not possible, and zero will be returned.
1108 @end defvar
1109
1110 @defvar Type.code
1111 The type code for this type. The type code will be one of the
1112 @code{TYPE_CODE_} constants defined below.
1113 @end defvar
1114
1115 @defvar Type.dynamic
1116 A boolean indicating whether this type is dynamic. In some
1117 situations, such as Rust @code{enum} types or Ada variant records, the
1118 concrete type of a value may vary depending on its contents. That is,
1119 the declared type of a variable, or the type returned by
1120 @code{gdb.lookup_type} may be dynamic; while the type of the
1121 variable's value will be a concrete instance of that dynamic type.
1122
1123 For example, consider this code:
1124 @smallexample
1125 int n;
1126 int array[n];
1127 @end smallexample
1128
1129 Here, at least conceptually (whether your compiler actually does this
1130 is a separate issue), examining @w{@code{gdb.lookup_symbol("array", ...).type}}
1131 could yield a @code{gdb.Type} which reports a size of @code{None}.
1132 This is the dynamic type.
1133
1134 However, examining @code{gdb.parse_and_eval("array").type} would yield
1135 a concrete type, whose length would be known.
1136 @end defvar
1137
1138 @defvar Type.name
1139 The name of this type. If this type has no name, then @code{None}
1140 is returned.
1141 @end defvar
1142
1143 @defvar Type.sizeof
1144 The size of this type, in target @code{char} units. Usually, a
1145 target's @code{char} type will be an 8-bit byte. However, on some
1146 unusual platforms, this type may have a different size. A dynamic
1147 type may not have a fixed size; in this case, this attribute's value
1148 will be @code{None}.
1149 @end defvar
1150
1151 @defvar Type.tag
1152 The tag name for this type. The tag name is the name after
1153 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
1154 languages have this concept. If this type has no tag name, then
1155 @code{None} is returned.
1156 @end defvar
1157
1158 @defvar Type.objfile
1159 The @code{gdb.Objfile} that this type was defined in, or @code{None} if
1160 there is no associated objfile.
1161 @end defvar
1162
1163 The following methods are provided:
1164
1165 @defun Type.fields ()
1166
1167 Return the fields of this type. The behavior depends on the type code:
1168
1169 @itemize @bullet
1170
1171 @item
1172 For structure and union types, this method returns the fields.
1173
1174 @item
1175 Range types have two fields, the minimum and maximum values.
1176
1177 @item
1178 Enum types have one field per enum constant.
1179
1180 @item
1181 Function and method types have one field per parameter. The base types of
1182 C@t{++} classes are also represented as fields.
1183
1184 @item
1185 Array types have one field representing the array's range.
1186
1187 @item
1188 If the type does not fit into one of these categories, a @code{TypeError}
1189 is raised.
1190
1191 @end itemize
1192
1193 Each field is a @code{gdb.Field} object, with some pre-defined attributes:
1194 @table @code
1195 @item bitpos
1196 This attribute is not available for @code{enum} or @code{static}
1197 (as in C@t{++}) fields. The value is the position, counting
1198 in bits, from the start of the containing type. Note that, in a
1199 dynamic type, the position of a field may not be constant. In this
1200 case, the value will be @code{None}. Also, a dynamic type may have
1201 fields that do not appear in a corresponding concrete type.
1202
1203 @item enumval
1204 This attribute is only available for @code{enum} fields, and its value
1205 is the enumeration member's integer representation.
1206
1207 @item name
1208 The name of the field, or @code{None} for anonymous fields.
1209
1210 @item artificial
1211 This is @code{True} if the field is artificial, usually meaning that
1212 it was provided by the compiler and not the user. This attribute is
1213 always provided, and is @code{False} if the field is not artificial.
1214
1215 @item is_base_class
1216 This is @code{True} if the field represents a base class of a C@t{++}
1217 structure. This attribute is always provided, and is @code{False}
1218 if the field is not a base class of the type that is the argument of
1219 @code{fields}, or if that type was not a C@t{++} class.
1220
1221 @item bitsize
1222 If the field is packed, or is a bitfield, then this will have a
1223 non-zero value, which is the size of the field in bits. Otherwise,
1224 this will be zero; in this case the field's size is given by its type.
1225
1226 @item type
1227 The type of the field. This is usually an instance of @code{Type},
1228 but it can be @code{None} in some situations.
1229
1230 @item parent_type
1231 The type which contains this field. This is an instance of
1232 @code{gdb.Type}.
1233 @end table
1234 @end defun
1235
1236 @defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
1237 Return a new @code{gdb.Type} object which represents an array of this
1238 type. If one argument is given, it is the inclusive upper bound of
1239 the array; in this case the lower bound is zero. If two arguments are
1240 given, the first argument is the lower bound of the array, and the
1241 second argument is the upper bound of the array. An array's length
1242 must not be negative, but the bounds can be.
1243 @end defun
1244
1245 @defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]})
1246 Return a new @code{gdb.Type} object which represents a vector of this
1247 type. If one argument is given, it is the inclusive upper bound of
1248 the vector; in this case the lower bound is zero. If two arguments are
1249 given, the first argument is the lower bound of the vector, and the
1250 second argument is the upper bound of the vector. A vector's length
1251 must not be negative, but the bounds can be.
1252
1253 The difference between an @code{array} and a @code{vector} is that
1254 arrays behave like in C: when used in expressions they decay to a pointer
1255 to the first element whereas vectors are treated as first class values.
1256 @end defun
1257
1258 @defun Type.const ()
1259 Return a new @code{gdb.Type} object which represents a
1260 @code{const}-qualified variant of this type.
1261 @end defun
1262
1263 @defun Type.volatile ()
1264 Return a new @code{gdb.Type} object which represents a
1265 @code{volatile}-qualified variant of this type.
1266 @end defun
1267
1268 @defun Type.unqualified ()
1269 Return a new @code{gdb.Type} object which represents an unqualified
1270 variant of this type. That is, the result is neither @code{const} nor
1271 @code{volatile}.
1272 @end defun
1273
1274 @defun Type.range ()
1275 Return a Python @code{Tuple} object that contains two elements: the
1276 low bound of the argument type and the high bound of that type. If
1277 the type does not have a range, @value{GDBN} will raise a
1278 @code{gdb.error} exception (@pxref{Exception Handling}).
1279 @end defun
1280
1281 @defun Type.reference ()
1282 Return a new @code{gdb.Type} object which represents a reference to this
1283 type.
1284 @end defun
1285
1286 @defun Type.pointer ()
1287 Return a new @code{gdb.Type} object which represents a pointer to this
1288 type.
1289 @end defun
1290
1291 @defun Type.strip_typedefs ()
1292 Return a new @code{gdb.Type} that represents the real type,
1293 after removing all layers of typedefs.
1294 @end defun
1295
1296 @defun Type.target ()
1297 Return a new @code{gdb.Type} object which represents the target type
1298 of this type.
1299
1300 For a pointer type, the target type is the type of the pointed-to
1301 object. For an array type (meaning C-like arrays), the target type is
1302 the type of the elements of the array. For a function or method type,
1303 the target type is the type of the return value. For a complex type,
1304 the target type is the type of the elements. For a typedef, the
1305 target type is the aliased type.
1306
1307 If the type does not have a target, this method will throw an
1308 exception.
1309 @end defun
1310
1311 @defun Type.template_argument (n @r{[}, block@r{]})
1312 If this @code{gdb.Type} is an instantiation of a template, this will
1313 return a new @code{gdb.Value} or @code{gdb.Type} which represents the
1314 value of the @var{n}th template argument (indexed starting at 0).
1315
1316 If this @code{gdb.Type} is not a template type, or if the type has fewer
1317 than @var{n} template arguments, this will throw an exception.
1318 Ordinarily, only C@t{++} code will have template types.
1319
1320 If @var{block} is given, then @var{name} is looked up in that scope.
1321 Otherwise, it is searched for globally.
1322 @end defun
1323
1324 @defun Type.optimized_out ()
1325 Return @code{gdb.Value} instance of this type whose value is optimized
1326 out. This allows a frame decorator to indicate that the value of an
1327 argument or a local variable is not known.
1328 @end defun
1329
1330 Each type has a code, which indicates what category this type falls
1331 into. The available type categories are represented by constants
1332 defined in the @code{gdb} module:
1333
1334 @vtable @code
1335 @vindex TYPE_CODE_PTR
1336 @item gdb.TYPE_CODE_PTR
1337 The type is a pointer.
1338
1339 @vindex TYPE_CODE_ARRAY
1340 @item gdb.TYPE_CODE_ARRAY
1341 The type is an array.
1342
1343 @vindex TYPE_CODE_STRUCT
1344 @item gdb.TYPE_CODE_STRUCT
1345 The type is a structure.
1346
1347 @vindex TYPE_CODE_UNION
1348 @item gdb.TYPE_CODE_UNION
1349 The type is a union.
1350
1351 @vindex TYPE_CODE_ENUM
1352 @item gdb.TYPE_CODE_ENUM
1353 The type is an enum.
1354
1355 @vindex TYPE_CODE_FLAGS
1356 @item gdb.TYPE_CODE_FLAGS
1357 A bit flags type, used for things such as status registers.
1358
1359 @vindex TYPE_CODE_FUNC
1360 @item gdb.TYPE_CODE_FUNC
1361 The type is a function.
1362
1363 @vindex TYPE_CODE_INT
1364 @item gdb.TYPE_CODE_INT
1365 The type is an integer type.
1366
1367 @vindex TYPE_CODE_FLT
1368 @item gdb.TYPE_CODE_FLT
1369 A floating point type.
1370
1371 @vindex TYPE_CODE_VOID
1372 @item gdb.TYPE_CODE_VOID
1373 The special type @code{void}.
1374
1375 @vindex TYPE_CODE_SET
1376 @item gdb.TYPE_CODE_SET
1377 A Pascal set type.
1378
1379 @vindex TYPE_CODE_RANGE
1380 @item gdb.TYPE_CODE_RANGE
1381 A range type, that is, an integer type with bounds.
1382
1383 @vindex TYPE_CODE_STRING
1384 @item gdb.TYPE_CODE_STRING
1385 A string type. Note that this is only used for certain languages with
1386 language-defined string types; C strings are not represented this way.
1387
1388 @vindex TYPE_CODE_BITSTRING
1389 @item gdb.TYPE_CODE_BITSTRING
1390 A string of bits. It is deprecated.
1391
1392 @vindex TYPE_CODE_ERROR
1393 @item gdb.TYPE_CODE_ERROR
1394 An unknown or erroneous type.
1395
1396 @vindex TYPE_CODE_METHOD
1397 @item gdb.TYPE_CODE_METHOD
1398 A method type, as found in C@t{++}.
1399
1400 @vindex TYPE_CODE_METHODPTR
1401 @item gdb.TYPE_CODE_METHODPTR
1402 A pointer-to-member-function.
1403
1404 @vindex TYPE_CODE_MEMBERPTR
1405 @item gdb.TYPE_CODE_MEMBERPTR
1406 A pointer-to-member.
1407
1408 @vindex TYPE_CODE_REF
1409 @item gdb.TYPE_CODE_REF
1410 A reference type.
1411
1412 @vindex TYPE_CODE_RVALUE_REF
1413 @item gdb.TYPE_CODE_RVALUE_REF
1414 A C@t{++}11 rvalue reference type.
1415
1416 @vindex TYPE_CODE_CHAR
1417 @item gdb.TYPE_CODE_CHAR
1418 A character type.
1419
1420 @vindex TYPE_CODE_BOOL
1421 @item gdb.TYPE_CODE_BOOL
1422 A boolean type.
1423
1424 @vindex TYPE_CODE_COMPLEX
1425 @item gdb.TYPE_CODE_COMPLEX
1426 A complex float type.
1427
1428 @vindex TYPE_CODE_TYPEDEF
1429 @item gdb.TYPE_CODE_TYPEDEF
1430 A typedef to some other type.
1431
1432 @vindex TYPE_CODE_NAMESPACE
1433 @item gdb.TYPE_CODE_NAMESPACE
1434 A C@t{++} namespace.
1435
1436 @vindex TYPE_CODE_DECFLOAT
1437 @item gdb.TYPE_CODE_DECFLOAT
1438 A decimal floating point type.
1439
1440 @vindex TYPE_CODE_INTERNAL_FUNCTION
1441 @item gdb.TYPE_CODE_INTERNAL_FUNCTION
1442 A function internal to @value{GDBN}. This is the type used to represent
1443 convenience functions.
1444 @end vtable
1445
1446 Further support for types is provided in the @code{gdb.types}
1447 Python module (@pxref{gdb.types}).
1448
1449 @node Pretty Printing API
1450 @subsubsection Pretty Printing API
1451 @cindex python pretty printing api
1452
1453 A pretty-printer is just an object that holds a value and implements a
1454 specific interface, defined here. An example output is provided
1455 (@pxref{Pretty Printing}).
1456
1457 @defun pretty_printer.children (self)
1458 @value{GDBN} will call this method on a pretty-printer to compute the
1459 children of the pretty-printer's value.
1460
1461 This method must return an object conforming to the Python iterator
1462 protocol. Each item returned by the iterator must be a tuple holding
1463 two elements. The first element is the ``name'' of the child; the
1464 second element is the child's value. The value can be any Python
1465 object which is convertible to a @value{GDBN} value.
1466
1467 This method is optional. If it does not exist, @value{GDBN} will act
1468 as though the value has no children.
1469
1470 For efficiency, the @code{children} method should lazily compute its
1471 results. This will let @value{GDBN} read as few elements as
1472 necessary, for example when various print settings (@pxref{Print
1473 Settings}) or @code{-var-list-children} (@pxref{GDB/MI Variable
1474 Objects}) limit the number of elements to be displayed.
1475
1476 Children may be hidden from display based on the value of @samp{set
1477 print max-depth} (@pxref{Print Settings}).
1478 @end defun
1479
1480 @defun pretty_printer.display_hint (self)
1481 The CLI may call this method and use its result to change the
1482 formatting of a value. The result will also be supplied to an MI
1483 consumer as a @samp{displayhint} attribute of the variable being
1484 printed.
1485
1486 This method is optional. If it does exist, this method must return a
1487 string or the special value @code{None}.
1488
1489 Some display hints are predefined by @value{GDBN}:
1490
1491 @table @samp
1492 @item array
1493 Indicate that the object being printed is ``array-like''. The CLI
1494 uses this to respect parameters such as @code{set print elements} and
1495 @code{set print array}.
1496
1497 @item map
1498 Indicate that the object being printed is ``map-like'', and that the
1499 children of this value can be assumed to alternate between keys and
1500 values.
1501
1502 @item string
1503 Indicate that the object being printed is ``string-like''. If the
1504 printer's @code{to_string} method returns a Python string of some
1505 kind, then @value{GDBN} will call its internal language-specific
1506 string-printing function to format the string. For the CLI this means
1507 adding quotation marks, possibly escaping some characters, respecting
1508 @code{set print elements}, and the like.
1509 @end table
1510
1511 The special value @code{None} causes @value{GDBN} to apply the default
1512 display rules.
1513 @end defun
1514
1515 @defun pretty_printer.to_string (self)
1516 @value{GDBN} will call this method to display the string
1517 representation of the value passed to the object's constructor.
1518
1519 When printing from the CLI, if the @code{to_string} method exists,
1520 then @value{GDBN} will prepend its result to the values returned by
1521 @code{children}. Exactly how this formatting is done is dependent on
1522 the display hint, and may change as more hints are added. Also,
1523 depending on the print settings (@pxref{Print Settings}), the CLI may
1524 print just the result of @code{to_string} in a stack trace, omitting
1525 the result of @code{children}.
1526
1527 If this method returns a string, it is printed verbatim.
1528
1529 Otherwise, if this method returns an instance of @code{gdb.Value},
1530 then @value{GDBN} prints this value. This may result in a call to
1531 another pretty-printer.
1532
1533 If instead the method returns a Python value which is convertible to a
1534 @code{gdb.Value}, then @value{GDBN} performs the conversion and prints
1535 the resulting value. Again, this may result in a call to another
1536 pretty-printer. Python scalars (integers, floats, and booleans) and
1537 strings are convertible to @code{gdb.Value}; other types are not.
1538
1539 Finally, if this method returns @code{None} then no further operations
1540 are peformed in this method and nothing is printed.
1541
1542 If the result is not one of these types, an exception is raised.
1543 @end defun
1544
1545 @value{GDBN} provides a function which can be used to look up the
1546 default pretty-printer for a @code{gdb.Value}:
1547
1548 @findex gdb.default_visualizer
1549 @defun gdb.default_visualizer (value)
1550 This function takes a @code{gdb.Value} object as an argument. If a
1551 pretty-printer for this value exists, then it is returned. If no such
1552 printer exists, then this returns @code{None}.
1553 @end defun
1554
1555 @node Selecting Pretty-Printers
1556 @subsubsection Selecting Pretty-Printers
1557 @cindex selecting python pretty-printers
1558
1559 @value{GDBN} provides several ways to register a pretty-printer:
1560 globally, per program space, and per objfile. When choosing how to
1561 register your pretty-printer, a good rule is to register it with the
1562 smallest scope possible: that is prefer a specific objfile first, then
1563 a program space, and only register a printer globally as a last
1564 resort.
1565
1566 @findex gdb.pretty_printers
1567 @defvar gdb.pretty_printers
1568 The Python list @code{gdb.pretty_printers} contains an array of
1569 functions or callable objects that have been registered via addition
1570 as a pretty-printer. Printers in this list are called @code{global}
1571 printers, they're available when debugging all inferiors.
1572 @end defvar
1573
1574 Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
1575 Each @code{gdb.Objfile} also contains a @code{pretty_printers}
1576 attribute.
1577
1578 Each function on these lists is passed a single @code{gdb.Value}
1579 argument and should return a pretty-printer object conforming to the
1580 interface definition above (@pxref{Pretty Printing API}). If a function
1581 cannot create a pretty-printer for the value, it should return
1582 @code{None}.
1583
1584 @value{GDBN} first checks the @code{pretty_printers} attribute of each
1585 @code{gdb.Objfile} in the current program space and iteratively calls
1586 each enabled lookup routine in the list for that @code{gdb.Objfile}
1587 until it receives a pretty-printer object.
1588 If no pretty-printer is found in the objfile lists, @value{GDBN} then
1589 searches the pretty-printer list of the current program space,
1590 calling each enabled function until an object is returned.
1591 After these lists have been exhausted, it tries the global
1592 @code{gdb.pretty_printers} list, again calling each enabled function until an
1593 object is returned.
1594
1595 The order in which the objfiles are searched is not specified. For a
1596 given list, functions are always invoked from the head of the list,
1597 and iterated over sequentially until the end of the list, or a printer
1598 object is returned.
1599
1600 For various reasons a pretty-printer may not work.
1601 For example, the underlying data structure may have changed and
1602 the pretty-printer is out of date.
1603
1604 The consequences of a broken pretty-printer are severe enough that
1605 @value{GDBN} provides support for enabling and disabling individual
1606 printers. For example, if @code{print frame-arguments} is on,
1607 a backtrace can become highly illegible if any argument is printed
1608 with a broken printer.
1609
1610 Pretty-printers are enabled and disabled by attaching an @code{enabled}
1611 attribute to the registered function or callable object. If this attribute
1612 is present and its value is @code{False}, the printer is disabled, otherwise
1613 the printer is enabled.
1614
1615 @node Writing a Pretty-Printer
1616 @subsubsection Writing a Pretty-Printer
1617 @cindex writing a pretty-printer
1618
1619 A pretty-printer consists of two parts: a lookup function to detect
1620 if the type is supported, and the printer itself.
1621
1622 Here is an example showing how a @code{std::string} printer might be
1623 written. @xref{Pretty Printing API}, for details on the API this class
1624 must provide.
1625
1626 @smallexample
1627 class StdStringPrinter(object):
1628 "Print a std::string"
1629
1630 def __init__(self, val):
1631 self.val = val
1632
1633 def to_string(self):
1634 return self.val['_M_dataplus']['_M_p']
1635
1636 def display_hint(self):
1637 return 'string'
1638 @end smallexample
1639
1640 And here is an example showing how a lookup function for the printer
1641 example above might be written.
1642
1643 @smallexample
1644 def str_lookup_function(val):
1645 lookup_tag = val.type.tag
1646 if lookup_tag == None:
1647 return None
1648 regex = re.compile("^std::basic_string<char,.*>$")
1649 if regex.match(lookup_tag):
1650 return StdStringPrinter(val)
1651 return None
1652 @end smallexample
1653
1654 The example lookup function extracts the value's type, and attempts to
1655 match it to a type that it can pretty-print. If it is a type the
1656 printer can pretty-print, it will return a printer object. If not, it
1657 returns @code{None}.
1658
1659 We recommend that you put your core pretty-printers into a Python
1660 package. If your pretty-printers are for use with a library, we
1661 further recommend embedding a version number into the package name.
1662 This practice will enable @value{GDBN} to load multiple versions of
1663 your pretty-printers at the same time, because they will have
1664 different names.
1665
1666 You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
1667 can be evaluated multiple times without changing its meaning. An
1668 ideal auto-load file will consist solely of @code{import}s of your
1669 printer modules, followed by a call to a register pretty-printers with
1670 the current objfile.
1671
1672 Taken as a whole, this approach will scale nicely to multiple
1673 inferiors, each potentially using a different library version.
1674 Embedding a version number in the Python package name will ensure that
1675 @value{GDBN} is able to load both sets of printers simultaneously.
1676 Then, because the search for pretty-printers is done by objfile, and
1677 because your auto-loaded code took care to register your library's
1678 printers with a specific objfile, @value{GDBN} will find the correct
1679 printers for the specific version of the library used by each
1680 inferior.
1681
1682 To continue the @code{std::string} example (@pxref{Pretty Printing API}),
1683 this code might appear in @code{gdb.libstdcxx.v6}:
1684
1685 @smallexample
1686 def register_printers(objfile):
1687 objfile.pretty_printers.append(str_lookup_function)
1688 @end smallexample
1689
1690 @noindent
1691 And then the corresponding contents of the auto-load file would be:
1692
1693 @smallexample
1694 import gdb.libstdcxx.v6
1695 gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
1696 @end smallexample
1697
1698 The previous example illustrates a basic pretty-printer.
1699 There are a few things that can be improved on.
1700 The printer doesn't have a name, making it hard to identify in a
1701 list of installed printers. The lookup function has a name, but
1702 lookup functions can have arbitrary, even identical, names.
1703
1704 Second, the printer only handles one type, whereas a library typically has
1705 several types. One could install a lookup function for each desired type
1706 in the library, but one could also have a single lookup function recognize
1707 several types. The latter is the conventional way this is handled.
1708 If a pretty-printer can handle multiple data types, then its
1709 @dfn{subprinters} are the printers for the individual data types.
1710
1711 The @code{gdb.printing} module provides a formal way of solving these
1712 problems (@pxref{gdb.printing}).
1713 Here is another example that handles multiple types.
1714
1715 These are the types we are going to pretty-print:
1716
1717 @smallexample
1718 struct foo @{ int a, b; @};
1719 struct bar @{ struct foo x, y; @};
1720 @end smallexample
1721
1722 Here are the printers:
1723
1724 @smallexample
1725 class fooPrinter:
1726 """Print a foo object."""
1727
1728 def __init__(self, val):
1729 self.val = val
1730
1731 def to_string(self):
1732 return ("a=<" + str(self.val["a"]) +
1733 "> b=<" + str(self.val["b"]) + ">")
1734
1735 class barPrinter:
1736 """Print a bar object."""
1737
1738 def __init__(self, val):
1739 self.val = val
1740
1741 def to_string(self):
1742 return ("x=<" + str(self.val["x"]) +
1743 "> y=<" + str(self.val["y"]) + ">")
1744 @end smallexample
1745
1746 This example doesn't need a lookup function, that is handled by the
1747 @code{gdb.printing} module. Instead a function is provided to build up
1748 the object that handles the lookup.
1749
1750 @smallexample
1751 import gdb.printing
1752
1753 def build_pretty_printer():
1754 pp = gdb.printing.RegexpCollectionPrettyPrinter(
1755 "my_library")
1756 pp.add_printer('foo', '^foo$', fooPrinter)
1757 pp.add_printer('bar', '^bar$', barPrinter)
1758 return pp
1759 @end smallexample
1760
1761 And here is the autoload support:
1762
1763 @smallexample
1764 import gdb.printing
1765 import my_library
1766 gdb.printing.register_pretty_printer(
1767 gdb.current_objfile(),
1768 my_library.build_pretty_printer())
1769 @end smallexample
1770
1771 Finally, when this printer is loaded into @value{GDBN}, here is the
1772 corresponding output of @samp{info pretty-printer}:
1773
1774 @smallexample
1775 (gdb) info pretty-printer
1776 my_library.so:
1777 my_library
1778 foo
1779 bar
1780 @end smallexample
1781
1782 @node Type Printing API
1783 @subsubsection Type Printing API
1784 @cindex type printing API for Python
1785
1786 @value{GDBN} provides a way for Python code to customize type display.
1787 This is mainly useful for substituting canonical typedef names for
1788 types.
1789
1790 @cindex type printer
1791 A @dfn{type printer} is just a Python object conforming to a certain
1792 protocol. A simple base class implementing the protocol is provided;
1793 see @ref{gdb.types}. A type printer must supply at least:
1794
1795 @defivar type_printer enabled
1796 A boolean which is True if the printer is enabled, and False
1797 otherwise. This is manipulated by the @code{enable type-printer}
1798 and @code{disable type-printer} commands.
1799 @end defivar
1800
1801 @defivar type_printer name
1802 The name of the type printer. This must be a string. This is used by
1803 the @code{enable type-printer} and @code{disable type-printer}
1804 commands.
1805 @end defivar
1806
1807 @defmethod type_printer instantiate (self)
1808 This is called by @value{GDBN} at the start of type-printing. It is
1809 only called if the type printer is enabled. This method must return a
1810 new object that supplies a @code{recognize} method, as described below.
1811 @end defmethod
1812
1813
1814 When displaying a type, say via the @code{ptype} command, @value{GDBN}
1815 will compute a list of type recognizers. This is done by iterating
1816 first over the per-objfile type printers (@pxref{Objfiles In Python}),
1817 followed by the per-progspace type printers (@pxref{Progspaces In
1818 Python}), and finally the global type printers.
1819
1820 @value{GDBN} will call the @code{instantiate} method of each enabled
1821 type printer. If this method returns @code{None}, then the result is
1822 ignored; otherwise, it is appended to the list of recognizers.
1823
1824 Then, when @value{GDBN} is going to display a type name, it iterates
1825 over the list of recognizers. For each one, it calls the recognition
1826 function, stopping if the function returns a non-@code{None} value.
1827 The recognition function is defined as:
1828
1829 @defmethod type_recognizer recognize (self, type)
1830 If @var{type} is not recognized, return @code{None}. Otherwise,
1831 return a string which is to be printed as the name of @var{type}.
1832 The @var{type} argument will be an instance of @code{gdb.Type}
1833 (@pxref{Types In Python}).
1834 @end defmethod
1835
1836 @value{GDBN} uses this two-pass approach so that type printers can
1837 efficiently cache information without holding on to it too long. For
1838 example, it can be convenient to look up type information in a type
1839 printer and hold it for a recognizer's lifetime; if a single pass were
1840 done then type printers would have to make use of the event system in
1841 order to avoid holding information that could become stale as the
1842 inferior changed.
1843
1844 @node Frame Filter API
1845 @subsubsection Filtering Frames
1846 @cindex frame filters api
1847
1848 Frame filters are Python objects that manipulate the visibility of a
1849 frame or frames when a backtrace (@pxref{Backtrace}) is printed by
1850 @value{GDBN}.
1851
1852 Only commands that print a backtrace, or, in the case of @sc{gdb/mi}
1853 commands (@pxref{GDB/MI}), those that return a collection of frames
1854 are affected. The commands that work with frame filters are:
1855
1856 @code{backtrace} (@pxref{backtrace-command,, The backtrace command}),
1857 @code{-stack-list-frames}
1858 (@pxref{-stack-list-frames,, The -stack-list-frames command}),
1859 @code{-stack-list-variables} (@pxref{-stack-list-variables,, The
1860 -stack-list-variables command}), @code{-stack-list-arguments}
1861 @pxref{-stack-list-arguments,, The -stack-list-arguments command}) and
1862 @code{-stack-list-locals} (@pxref{-stack-list-locals,, The
1863 -stack-list-locals command}).
1864
1865 A frame filter works by taking an iterator as an argument, applying
1866 actions to the contents of that iterator, and returning another
1867 iterator (or, possibly, the same iterator it was provided in the case
1868 where the filter does not perform any operations). Typically, frame
1869 filters utilize tools such as the Python's @code{itertools} module to
1870 work with and create new iterators from the source iterator.
1871 Regardless of how a filter chooses to apply actions, it must not alter
1872 the underlying @value{GDBN} frame or frames, or attempt to alter the
1873 call-stack within @value{GDBN}. This preserves data integrity within
1874 @value{GDBN}. Frame filters are executed on a priority basis and care
1875 should be taken that some frame filters may have been executed before,
1876 and that some frame filters will be executed after.
1877
1878 An important consideration when designing frame filters, and well
1879 worth reflecting upon, is that frame filters should avoid unwinding
1880 the call stack if possible. Some stacks can run very deep, into the
1881 tens of thousands in some cases. To search every frame when a frame
1882 filter executes may be too expensive at that step. The frame filter
1883 cannot know how many frames it has to iterate over, and it may have to
1884 iterate through them all. This ends up duplicating effort as
1885 @value{GDBN} performs this iteration when it prints the frames. If
1886 the filter can defer unwinding frames until frame decorators are
1887 executed, after the last filter has executed, it should. @xref{Frame
1888 Decorator API}, for more information on decorators. Also, there are
1889 examples for both frame decorators and filters in later chapters.
1890 @xref{Writing a Frame Filter}, for more information.
1891
1892 The Python dictionary @code{gdb.frame_filters} contains key/object
1893 pairings that comprise a frame filter. Frame filters in this
1894 dictionary are called @code{global} frame filters, and they are
1895 available when debugging all inferiors. These frame filters must
1896 register with the dictionary directly. In addition to the
1897 @code{global} dictionary, there are other dictionaries that are loaded
1898 with different inferiors via auto-loading (@pxref{Python
1899 Auto-loading}). The two other areas where frame filter dictionaries
1900 can be found are: @code{gdb.Progspace} which contains a
1901 @code{frame_filters} dictionary attribute, and each @code{gdb.Objfile}
1902 object which also contains a @code{frame_filters} dictionary
1903 attribute.
1904
1905 When a command is executed from @value{GDBN} that is compatible with
1906 frame filters, @value{GDBN} combines the @code{global},
1907 @code{gdb.Progspace} and all @code{gdb.Objfile} dictionaries currently
1908 loaded. All of the @code{gdb.Objfile} dictionaries are combined, as
1909 several frames, and thus several object files, might be in use.
1910 @value{GDBN} then prunes any frame filter whose @code{enabled}
1911 attribute is @code{False}. This pruned list is then sorted according
1912 to the @code{priority} attribute in each filter.
1913
1914 Once the dictionaries are combined, pruned and sorted, @value{GDBN}
1915 creates an iterator which wraps each frame in the call stack in a
1916 @code{FrameDecorator} object, and calls each filter in order. The
1917 output from the previous filter will always be the input to the next
1918 filter, and so on.
1919
1920 Frame filters have a mandatory interface which each frame filter must
1921 implement, defined here:
1922
1923 @defun FrameFilter.filter (iterator)
1924 @value{GDBN} will call this method on a frame filter when it has
1925 reached the order in the priority list for that filter.
1926
1927 For example, if there are four frame filters:
1928
1929 @smallexample
1930 Name Priority
1931
1932 Filter1 5
1933 Filter2 10
1934 Filter3 100
1935 Filter4 1
1936 @end smallexample
1937
1938 The order that the frame filters will be called is:
1939
1940 @smallexample
1941 Filter3 -> Filter2 -> Filter1 -> Filter4
1942 @end smallexample
1943
1944 Note that the output from @code{Filter3} is passed to the input of
1945 @code{Filter2}, and so on.
1946
1947 This @code{filter} method is passed a Python iterator. This iterator
1948 contains a sequence of frame decorators that wrap each
1949 @code{gdb.Frame}, or a frame decorator that wraps another frame
1950 decorator. The first filter that is executed in the sequence of frame
1951 filters will receive an iterator entirely comprised of default
1952 @code{FrameDecorator} objects. However, after each frame filter is
1953 executed, the previous frame filter may have wrapped some or all of
1954 the frame decorators with their own frame decorator. As frame
1955 decorators must also conform to a mandatory interface, these
1956 decorators can be assumed to act in a uniform manner (@pxref{Frame
1957 Decorator API}).
1958
1959 This method must return an object conforming to the Python iterator
1960 protocol. Each item in the iterator must be an object conforming to
1961 the frame decorator interface. If a frame filter does not wish to
1962 perform any operations on this iterator, it should return that
1963 iterator untouched.
1964
1965 This method is not optional. If it does not exist, @value{GDBN} will
1966 raise and print an error.
1967 @end defun
1968
1969 @defvar FrameFilter.name
1970 The @code{name} attribute must be Python string which contains the
1971 name of the filter displayed by @value{GDBN} (@pxref{Frame Filter
1972 Management}). This attribute may contain any combination of letters
1973 or numbers. Care should be taken to ensure that it is unique. This
1974 attribute is mandatory.
1975 @end defvar
1976
1977 @defvar FrameFilter.enabled
1978 The @code{enabled} attribute must be Python boolean. This attribute
1979 indicates to @value{GDBN} whether the frame filter is enabled, and
1980 should be considered when frame filters are executed. If
1981 @code{enabled} is @code{True}, then the frame filter will be executed
1982 when any of the backtrace commands detailed earlier in this chapter
1983 are executed. If @code{enabled} is @code{False}, then the frame
1984 filter will not be executed. This attribute is mandatory.
1985 @end defvar
1986
1987 @defvar FrameFilter.priority
1988 The @code{priority} attribute must be Python integer. This attribute
1989 controls the order of execution in relation to other frame filters.
1990 There are no imposed limits on the range of @code{priority} other than
1991 it must be a valid integer. The higher the @code{priority} attribute,
1992 the sooner the frame filter will be executed in relation to other
1993 frame filters. Although @code{priority} can be negative, it is
1994 recommended practice to assume zero is the lowest priority that a
1995 frame filter can be assigned. Frame filters that have the same
1996 priority are executed in unsorted order in that priority slot. This
1997 attribute is mandatory. 100 is a good default priority.
1998 @end defvar
1999
2000 @node Frame Decorator API
2001 @subsubsection Decorating Frames
2002 @cindex frame decorator api
2003
2004 Frame decorators are sister objects to frame filters (@pxref{Frame
2005 Filter API}). Frame decorators are applied by a frame filter and can
2006 only be used in conjunction with frame filters.
2007
2008 The purpose of a frame decorator is to customize the printed content
2009 of each @code{gdb.Frame} in commands where frame filters are executed.
2010 This concept is called decorating a frame. Frame decorators decorate
2011 a @code{gdb.Frame} with Python code contained within each API call.
2012 This separates the actual data contained in a @code{gdb.Frame} from
2013 the decorated data produced by a frame decorator. This abstraction is
2014 necessary to maintain integrity of the data contained in each
2015 @code{gdb.Frame}.
2016
2017 Frame decorators have a mandatory interface, defined below.
2018
2019 @value{GDBN} already contains a frame decorator called
2020 @code{FrameDecorator}. This contains substantial amounts of
2021 boilerplate code to decorate the content of a @code{gdb.Frame}. It is
2022 recommended that other frame decorators inherit and extend this
2023 object, and only to override the methods needed.
2024
2025 @tindex gdb.FrameDecorator
2026 @code{FrameDecorator} is defined in the Python module
2027 @code{gdb.FrameDecorator}, so your code can import it like:
2028 @smallexample
2029 from gdb.FrameDecorator import FrameDecorator
2030 @end smallexample
2031
2032 @defun FrameDecorator.elided (self)
2033
2034 The @code{elided} method groups frames together in a hierarchical
2035 system. An example would be an interpreter, where multiple low-level
2036 frames make up a single call in the interpreted language. In this
2037 example, the frame filter would elide the low-level frames and present
2038 a single high-level frame, representing the call in the interpreted
2039 language, to the user.
2040
2041 The @code{elided} function must return an iterable and this iterable
2042 must contain the frames that are being elided wrapped in a suitable
2043 frame decorator. If no frames are being elided this function may
2044 return an empty iterable, or @code{None}. Elided frames are indented
2045 from normal frames in a @code{CLI} backtrace, or in the case of
2046 @code{GDB/MI}, are placed in the @code{children} field of the eliding
2047 frame.
2048
2049 It is the frame filter's task to also filter out the elided frames from
2050 the source iterator. This will avoid printing the frame twice.
2051 @end defun
2052
2053 @defun FrameDecorator.function (self)
2054
2055 This method returns the name of the function in the frame that is to
2056 be printed.
2057
2058 This method must return a Python string describing the function, or
2059 @code{None}.
2060
2061 If this function returns @code{None}, @value{GDBN} will not print any
2062 data for this field.
2063 @end defun
2064
2065 @defun FrameDecorator.address (self)
2066
2067 This method returns the address of the frame that is to be printed.
2068
2069 This method must return a Python numeric integer type of sufficient
2070 size to describe the address of the frame, or @code{None}.
2071
2072 If this function returns a @code{None}, @value{GDBN} will not print
2073 any data for this field.
2074 @end defun
2075
2076 @defun FrameDecorator.filename (self)
2077
2078 This method returns the filename and path associated with this frame.
2079
2080 This method must return a Python string containing the filename and
2081 the path to the object file backing the frame, or @code{None}.
2082
2083 If this function returns a @code{None}, @value{GDBN} will not print
2084 any data for this field.
2085 @end defun
2086
2087 @defun FrameDecorator.line (self):
2088
2089 This method returns the line number associated with the current
2090 position within the function addressed by this frame.
2091
2092 This method must return a Python integer type, or @code{None}.
2093
2094 If this function returns a @code{None}, @value{GDBN} will not print
2095 any data for this field.
2096 @end defun
2097
2098 @defun FrameDecorator.frame_args (self)
2099 @anchor{frame_args}
2100
2101 This method must return an iterable, or @code{None}. Returning an
2102 empty iterable, or @code{None} means frame arguments will not be
2103 printed for this frame. This iterable must contain objects that
2104 implement two methods, described here.
2105
2106 This object must implement a @code{symbol} method which takes a
2107 single @code{self} parameter and must return a @code{gdb.Symbol}
2108 (@pxref{Symbols In Python}), or a Python string. The object must also
2109 implement a @code{value} method which takes a single @code{self}
2110 parameter and must return a @code{gdb.Value} (@pxref{Values From
2111 Inferior}), a Python value, or @code{None}. If the @code{value}
2112 method returns @code{None}, and the @code{argument} method returns a
2113 @code{gdb.Symbol}, @value{GDBN} will look-up and print the value of
2114 the @code{gdb.Symbol} automatically.
2115
2116 A brief example:
2117
2118 @smallexample
2119 class SymValueWrapper():
2120
2121 def __init__(self, symbol, value):
2122 self.sym = symbol
2123 self.val = value
2124
2125 def value(self):
2126 return self.val
2127
2128 def symbol(self):
2129 return self.sym
2130
2131 class SomeFrameDecorator()
2132 ...
2133 ...
2134 def frame_args(self):
2135 args = []
2136 try:
2137 block = self.inferior_frame.block()
2138 except:
2139 return None
2140
2141 # Iterate over all symbols in a block. Only add
2142 # symbols that are arguments.
2143 for sym in block:
2144 if not sym.is_argument:
2145 continue
2146 args.append(SymValueWrapper(sym,None))
2147
2148 # Add example synthetic argument.
2149 args.append(SymValueWrapper(``foo'', 42))
2150
2151 return args
2152 @end smallexample
2153 @end defun
2154
2155 @defun FrameDecorator.frame_locals (self)
2156
2157 This method must return an iterable or @code{None}. Returning an
2158 empty iterable, or @code{None} means frame local arguments will not be
2159 printed for this frame.
2160
2161 The object interface, the description of the various strategies for
2162 reading frame locals, and the example are largely similar to those
2163 described in the @code{frame_args} function, (@pxref{frame_args,,The
2164 frame filter frame_args function}). Below is a modified example:
2165
2166 @smallexample
2167 class SomeFrameDecorator()
2168 ...
2169 ...
2170 def frame_locals(self):
2171 vars = []
2172 try:
2173 block = self.inferior_frame.block()
2174 except:
2175 return None
2176
2177 # Iterate over all symbols in a block. Add all
2178 # symbols, except arguments.
2179 for sym in block:
2180 if sym.is_argument:
2181 continue
2182 vars.append(SymValueWrapper(sym,None))
2183
2184 # Add an example of a synthetic local variable.
2185 vars.append(SymValueWrapper(``bar'', 99))
2186
2187 return vars
2188 @end smallexample
2189 @end defun
2190
2191 @defun FrameDecorator.inferior_frame (self):
2192
2193 This method must return the underlying @code{gdb.Frame} that this
2194 frame decorator is decorating. @value{GDBN} requires the underlying
2195 frame for internal frame information to determine how to print certain
2196 values when printing a frame.
2197 @end defun
2198
2199 @node Writing a Frame Filter
2200 @subsubsection Writing a Frame Filter
2201 @cindex writing a frame filter
2202
2203 There are three basic elements that a frame filter must implement: it
2204 must correctly implement the documented interface (@pxref{Frame Filter
2205 API}), it must register itself with @value{GDBN}, and finally, it must
2206 decide if it is to work on the data provided by @value{GDBN}. In all
2207 cases, whether it works on the iterator or not, each frame filter must
2208 return an iterator. A bare-bones frame filter follows the pattern in
2209 the following example.
2210
2211 @smallexample
2212 import gdb
2213
2214 class FrameFilter():
2215
2216 def __init__(self):
2217 # Frame filter attribute creation.
2218 #
2219 # 'name' is the name of the filter that GDB will display.
2220 #
2221 # 'priority' is the priority of the filter relative to other
2222 # filters.
2223 #
2224 # 'enabled' is a boolean that indicates whether this filter is
2225 # enabled and should be executed.
2226
2227 self.name = "Foo"
2228 self.priority = 100
2229 self.enabled = True
2230
2231 # Register this frame filter with the global frame_filters
2232 # dictionary.
2233 gdb.frame_filters[self.name] = self
2234
2235 def filter(self, frame_iter):
2236 # Just return the iterator.
2237 return frame_iter
2238 @end smallexample
2239
2240 The frame filter in the example above implements the three
2241 requirements for all frame filters. It implements the API, self
2242 registers, and makes a decision on the iterator (in this case, it just
2243 returns the iterator untouched).
2244
2245 The first step is attribute creation and assignment, and as shown in
2246 the comments the filter assigns the following attributes: @code{name},
2247 @code{priority} and whether the filter should be enabled with the
2248 @code{enabled} attribute.
2249
2250 The second step is registering the frame filter with the dictionary or
2251 dictionaries that the frame filter has interest in. As shown in the
2252 comments, this filter just registers itself with the global dictionary
2253 @code{gdb.frame_filters}. As noted earlier, @code{gdb.frame_filters}
2254 is a dictionary that is initialized in the @code{gdb} module when
2255 @value{GDBN} starts. What dictionary a filter registers with is an
2256 important consideration. Generally, if a filter is specific to a set
2257 of code, it should be registered either in the @code{objfile} or
2258 @code{progspace} dictionaries as they are specific to the program
2259 currently loaded in @value{GDBN}. The global dictionary is always
2260 present in @value{GDBN} and is never unloaded. Any filters registered
2261 with the global dictionary will exist until @value{GDBN} exits. To
2262 avoid filters that may conflict, it is generally better to register
2263 frame filters against the dictionaries that more closely align with
2264 the usage of the filter currently in question. @xref{Python
2265 Auto-loading}, for further information on auto-loading Python scripts.
2266
2267 @value{GDBN} takes a hands-off approach to frame filter registration,
2268 therefore it is the frame filter's responsibility to ensure
2269 registration has occurred, and that any exceptions are handled
2270 appropriately. In particular, you may wish to handle exceptions
2271 relating to Python dictionary key uniqueness. It is mandatory that
2272 the dictionary key is the same as frame filter's @code{name}
2273 attribute. When a user manages frame filters (@pxref{Frame Filter
2274 Management}), the names @value{GDBN} will display are those contained
2275 in the @code{name} attribute.
2276
2277 The final step of this example is the implementation of the
2278 @code{filter} method. As shown in the example comments, we define the
2279 @code{filter} method and note that the method must take an iterator,
2280 and also must return an iterator. In this bare-bones example, the
2281 frame filter is not very useful as it just returns the iterator
2282 untouched. However this is a valid operation for frame filters that
2283 have the @code{enabled} attribute set, but decide not to operate on
2284 any frames.
2285
2286 In the next example, the frame filter operates on all frames and
2287 utilizes a frame decorator to perform some work on the frames.
2288 @xref{Frame Decorator API}, for further information on the frame
2289 decorator interface.
2290
2291 This example works on inlined frames. It highlights frames which are
2292 inlined by tagging them with an ``[inlined]'' tag. By applying a
2293 frame decorator to all frames with the Python @code{itertools imap}
2294 method, the example defers actions to the frame decorator. Frame
2295 decorators are only processed when @value{GDBN} prints the backtrace.
2296
2297 This introduces a new decision making topic: whether to perform
2298 decision making operations at the filtering step, or at the printing
2299 step. In this example's approach, it does not perform any filtering
2300 decisions at the filtering step beyond mapping a frame decorator to
2301 each frame. This allows the actual decision making to be performed
2302 when each frame is printed. This is an important consideration, and
2303 well worth reflecting upon when designing a frame filter. An issue
2304 that frame filters should avoid is unwinding the stack if possible.
2305 Some stacks can run very deep, into the tens of thousands in some
2306 cases. To search every frame to determine if it is inlined ahead of
2307 time may be too expensive at the filtering step. The frame filter
2308 cannot know how many frames it has to iterate over, and it would have
2309 to iterate through them all. This ends up duplicating effort as
2310 @value{GDBN} performs this iteration when it prints the frames.
2311
2312 In this example decision making can be deferred to the printing step.
2313 As each frame is printed, the frame decorator can examine each frame
2314 in turn when @value{GDBN} iterates. From a performance viewpoint,
2315 this is the most appropriate decision to make as it avoids duplicating
2316 the effort that the printing step would undertake anyway. Also, if
2317 there are many frame filters unwinding the stack during filtering, it
2318 can substantially delay the printing of the backtrace which will
2319 result in large memory usage, and a poor user experience.
2320
2321 @smallexample
2322 class InlineFilter():
2323
2324 def __init__(self):
2325 self.name = "InlinedFrameFilter"
2326 self.priority = 100
2327 self.enabled = True
2328 gdb.frame_filters[self.name] = self
2329
2330 def filter(self, frame_iter):
2331 frame_iter = itertools.imap(InlinedFrameDecorator,
2332 frame_iter)
2333 return frame_iter
2334 @end smallexample
2335
2336 This frame filter is somewhat similar to the earlier example, except
2337 that the @code{filter} method applies a frame decorator object called
2338 @code{InlinedFrameDecorator} to each element in the iterator. The
2339 @code{imap} Python method is light-weight. It does not proactively
2340 iterate over the iterator, but rather creates a new iterator which
2341 wraps the existing one.
2342
2343 Below is the frame decorator for this example.
2344
2345 @smallexample
2346 class InlinedFrameDecorator(FrameDecorator):
2347
2348 def __init__(self, fobj):
2349 super(InlinedFrameDecorator, self).__init__(fobj)
2350
2351 def function(self):
2352 frame = fobj.inferior_frame()
2353 name = str(frame.name())
2354
2355 if frame.type() == gdb.INLINE_FRAME:
2356 name = name + " [inlined]"
2357
2358 return name
2359 @end smallexample
2360
2361 This frame decorator only defines and overrides the @code{function}
2362 method. It lets the supplied @code{FrameDecorator}, which is shipped
2363 with @value{GDBN}, perform the other work associated with printing
2364 this frame.
2365
2366 The combination of these two objects create this output from a
2367 backtrace:
2368
2369 @smallexample
2370 #0 0x004004e0 in bar () at inline.c:11
2371 #1 0x00400566 in max [inlined] (b=6, a=12) at inline.c:21
2372 #2 0x00400566 in main () at inline.c:31
2373 @end smallexample
2374
2375 So in the case of this example, a frame decorator is applied to all
2376 frames, regardless of whether they may be inlined or not. As
2377 @value{GDBN} iterates over the iterator produced by the frame filters,
2378 @value{GDBN} executes each frame decorator which then makes a decision
2379 on what to print in the @code{function} callback. Using a strategy
2380 like this is a way to defer decisions on the frame content to printing
2381 time.
2382
2383 @subheading Eliding Frames
2384
2385 It might be that the above example is not desirable for representing
2386 inlined frames, and a hierarchical approach may be preferred. If we
2387 want to hierarchically represent frames, the @code{elided} frame
2388 decorator interface might be preferable.
2389
2390 This example approaches the issue with the @code{elided} method. This
2391 example is quite long, but very simplistic. It is out-of-scope for
2392 this section to write a complete example that comprehensively covers
2393 all approaches of finding and printing inlined frames. However, this
2394 example illustrates the approach an author might use.
2395
2396 This example comprises of three sections.
2397
2398 @smallexample
2399 class InlineFrameFilter():
2400
2401 def __init__(self):
2402 self.name = "InlinedFrameFilter"
2403 self.priority = 100
2404 self.enabled = True
2405 gdb.frame_filters[self.name] = self
2406
2407 def filter(self, frame_iter):
2408 return ElidingInlineIterator(frame_iter)
2409 @end smallexample
2410
2411 This frame filter is very similar to the other examples. The only
2412 difference is this frame filter is wrapping the iterator provided to
2413 it (@code{frame_iter}) with a custom iterator called
2414 @code{ElidingInlineIterator}. This again defers actions to when
2415 @value{GDBN} prints the backtrace, as the iterator is not traversed
2416 until printing.
2417
2418 The iterator for this example is as follows. It is in this section of
2419 the example where decisions are made on the content of the backtrace.
2420
2421 @smallexample
2422 class ElidingInlineIterator:
2423 def __init__(self, ii):
2424 self.input_iterator = ii
2425
2426 def __iter__(self):
2427 return self
2428
2429 def next(self):
2430 frame = next(self.input_iterator)
2431
2432 if frame.inferior_frame().type() != gdb.INLINE_FRAME:
2433 return frame
2434
2435 try:
2436 eliding_frame = next(self.input_iterator)
2437 except StopIteration:
2438 return frame
2439 return ElidingFrameDecorator(eliding_frame, [frame])
2440 @end smallexample
2441
2442 This iterator implements the Python iterator protocol. When the
2443 @code{next} function is called (when @value{GDBN} prints each frame),
2444 the iterator checks if this frame decorator, @code{frame}, is wrapping
2445 an inlined frame. If it is not, it returns the existing frame decorator
2446 untouched. If it is wrapping an inlined frame, it assumes that the
2447 inlined frame was contained within the next oldest frame,
2448 @code{eliding_frame}, which it fetches. It then creates and returns a
2449 frame decorator, @code{ElidingFrameDecorator}, which contains both the
2450 elided frame, and the eliding frame.
2451
2452 @smallexample
2453 class ElidingInlineDecorator(FrameDecorator):
2454
2455 def __init__(self, frame, elided_frames):
2456 super(ElidingInlineDecorator, self).__init__(frame)
2457 self.frame = frame
2458 self.elided_frames = elided_frames
2459
2460 def elided(self):
2461 return iter(self.elided_frames)
2462 @end smallexample
2463
2464 This frame decorator overrides one function and returns the inlined
2465 frame in the @code{elided} method. As before it lets
2466 @code{FrameDecorator} do the rest of the work involved in printing
2467 this frame. This produces the following output.
2468
2469 @smallexample
2470 #0 0x004004e0 in bar () at inline.c:11
2471 #2 0x00400529 in main () at inline.c:25
2472 #1 0x00400529 in max (b=6, a=12) at inline.c:15
2473 @end smallexample
2474
2475 In that output, @code{max} which has been inlined into @code{main} is
2476 printed hierarchically. Another approach would be to combine the
2477 @code{function} method, and the @code{elided} method to both print a
2478 marker in the inlined frame, and also show the hierarchical
2479 relationship.
2480
2481 @node Unwinding Frames in Python
2482 @subsubsection Unwinding Frames in Python
2483 @cindex unwinding frames in Python
2484
2485 In @value{GDBN} terminology ``unwinding'' is the process of finding
2486 the previous frame (that is, caller's) from the current one. An
2487 unwinder has three methods. The first one checks if it can handle
2488 given frame (``sniff'' it). For the frames it can sniff an unwinder
2489 provides two additional methods: it can return frame's ID, and it can
2490 fetch registers from the previous frame. A running @value{GDBN}
2491 mantains a list of the unwinders and calls each unwinder's sniffer in
2492 turn until it finds the one that recognizes the current frame. There
2493 is an API to register an unwinder.
2494
2495 The unwinders that come with @value{GDBN} handle standard frames.
2496 However, mixed language applications (for example, an application
2497 running Java Virtual Machine) sometimes use frame layouts that cannot
2498 be handled by the @value{GDBN} unwinders. You can write Python code
2499 that can handle such custom frames.
2500
2501 You implement a frame unwinder in Python as a class with which has two
2502 attributes, @code{name} and @code{enabled}, with obvious meanings, and
2503 a single method @code{__call__}, which examines a given frame and
2504 returns an object (an instance of @code{gdb.UnwindInfo class)}
2505 describing it. If an unwinder does not recognize a frame, it should
2506 return @code{None}. The code in @value{GDBN} that enables writing
2507 unwinders in Python uses this object to return frame's ID and previous
2508 frame registers when @value{GDBN} core asks for them.
2509
2510 An unwinder should do as little work as possible. Some otherwise
2511 innocuous operations can cause problems (even crashes, as this code is
2512 not not well-hardened yet). For example, making an inferior call from
2513 an unwinder is unadvisable, as an inferior call will reset
2514 @value{GDBN}'s stack unwinding process, potentially causing re-entrant
2515 unwinding.
2516
2517 @subheading Unwinder Input
2518
2519 An object passed to an unwinder (a @code{gdb.PendingFrame} instance)
2520 provides a method to read frame's registers:
2521
2522 @defun PendingFrame.read_register (reg)
2523 This method returns the contents of the register @var{reg} in the
2524 frame as a @code{gdb.Value} object. For a description of the
2525 acceptable values of @var{reg} see
2526 @ref{gdbpy_frame_read_register,,Frame.read_register}. If @var{reg}
2527 does not name a register for the current architecture, this method
2528 will throw an exception.
2529
2530 Note that this method will always return a @code{gdb.Value} for a
2531 valid register name. This does not mean that the value will be valid.
2532 For example, you may request a register that an earlier unwinder could
2533 not unwind---the value will be unavailable. Instead, the
2534 @code{gdb.Value} returned from this method will be lazy; that is, its
2535 underlying bits will not be fetched until it is first used. So,
2536 attempting to use such a value will cause an exception at the point of
2537 use.
2538
2539 The type of the returned @code{gdb.Value} depends on the register and
2540 the architecture. It is common for registers to have a scalar type,
2541 like @code{long long}; but many other types are possible, such as
2542 pointer, pointer-to-function, floating point or vector types.
2543 @end defun
2544
2545 It also provides a factory method to create a @code{gdb.UnwindInfo}
2546 instance to be returned to @value{GDBN}:
2547
2548 @defun PendingFrame.create_unwind_info (frame_id)
2549 Returns a new @code{gdb.UnwindInfo} instance identified by given
2550 @var{frame_id}. The argument is used to build @value{GDBN}'s frame ID
2551 using one of functions provided by @value{GDBN}. @var{frame_id}'s attributes
2552 determine which function will be used, as follows:
2553
2554 @table @code
2555 @item sp, pc
2556 The frame is identified by the given stack address and PC. The stack
2557 address must be chosen so that it is constant throughout the lifetime
2558 of the frame, so a typical choice is the value of the stack pointer at
2559 the start of the function---in the DWARF standard, this would be the
2560 ``Call Frame Address''.
2561
2562 This is the most common case by far. The other cases are documented
2563 for completeness but are only useful in specialized situations.
2564
2565 @item sp, pc, special
2566 The frame is identified by the stack address, the PC, and a
2567 ``special'' address. The special address is used on architectures
2568 that can have frames that do not change the stack, but which are still
2569 distinct, for example the IA-64, which has a second stack for
2570 registers. Both @var{sp} and @var{special} must be constant
2571 throughout the lifetime of the frame.
2572
2573 @item sp
2574 The frame is identified by the stack address only. Any other stack
2575 frame with a matching @var{sp} will be considered to match this frame.
2576 Inside gdb, this is called a ``wild frame''. You will never need
2577 this.
2578 @end table
2579
2580 Each attribute value should be an instance of @code{gdb.Value}.
2581
2582 @end defun
2583
2584 @defun PendingFrame.architecture ()
2585 Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
2586 for this @code{gdb.PendingFrame}. This represents the architecture of
2587 the particular frame being unwound.
2588 @end defun
2589
2590 @subheading Unwinder Output: UnwindInfo
2591
2592 Use @code{PendingFrame.create_unwind_info} method described above to
2593 create a @code{gdb.UnwindInfo} instance. Use the following method to
2594 specify caller registers that have been saved in this frame:
2595
2596 @defun gdb.UnwindInfo.add_saved_register (reg, value)
2597 @var{reg} identifies the register, for a description of the acceptable
2598 values see @ref{gdbpy_frame_read_register,,Frame.read_register}.
2599 @var{value} is a register value (a @code{gdb.Value} object).
2600 @end defun
2601
2602 @subheading Unwinder Skeleton Code
2603
2604 @value{GDBN} comes with the module containing the base @code{Unwinder}
2605 class. Derive your unwinder class from it and structure the code as
2606 follows:
2607
2608 @smallexample
2609 from gdb.unwinders import Unwinder
2610
2611 class FrameId(object):
2612 def __init__(self, sp, pc):
2613 self.sp = sp
2614 self.pc = pc
2615
2616
2617 class MyUnwinder(Unwinder):
2618 def __init__(....):
2619 super(MyUnwinder, self).__init___(<expects unwinder name argument>)
2620
2621 def __call__(pending_frame):
2622 if not <we recognize frame>:
2623 return None
2624 # Create UnwindInfo. Usually the frame is identified by the stack
2625 # pointer and the program counter.
2626 sp = pending_frame.read_register(<SP number>)
2627 pc = pending_frame.read_register(<PC number>)
2628 unwind_info = pending_frame.create_unwind_info(FrameId(sp, pc))
2629
2630 # Find the values of the registers in the caller's frame and
2631 # save them in the result:
2632 unwind_info.add_saved_register(<register>, <value>)
2633 ....
2634
2635 # Return the result:
2636 return unwind_info
2637
2638 @end smallexample
2639
2640 @subheading Registering a Unwinder
2641
2642 An object file, a program space, and the @value{GDBN} proper can have
2643 unwinders registered with it.
2644
2645 The @code{gdb.unwinders} module provides the function to register a
2646 unwinder:
2647
2648 @defun gdb.unwinder.register_unwinder (locus, unwinder, replace=False)
2649 @var{locus} is specifies an object file or a program space to which
2650 @var{unwinder} is added. Passing @code{None} or @code{gdb} adds
2651 @var{unwinder} to the @value{GDBN}'s global unwinder list. The newly
2652 added @var{unwinder} will be called before any other unwinder from the
2653 same locus. Two unwinders in the same locus cannot have the same
2654 name. An attempt to add a unwinder with already existing name raises
2655 an exception unless @var{replace} is @code{True}, in which case the
2656 old unwinder is deleted.
2657 @end defun
2658
2659 @subheading Unwinder Precedence
2660
2661 @value{GDBN} first calls the unwinders from all the object files in no
2662 particular order, then the unwinders from the current program space,
2663 and finally the unwinders from @value{GDBN}.
2664
2665 @node Xmethods In Python
2666 @subsubsection Xmethods In Python
2667 @cindex xmethods in Python
2668
2669 @dfn{Xmethods} are additional methods or replacements for existing
2670 methods of a C@t{++} class. This feature is useful for those cases
2671 where a method defined in C@t{++} source code could be inlined or
2672 optimized out by the compiler, making it unavailable to @value{GDBN}.
2673 For such cases, one can define an xmethod to serve as a replacement
2674 for the method defined in the C@t{++} source code. @value{GDBN} will
2675 then invoke the xmethod, instead of the C@t{++} method, to
2676 evaluate expressions. One can also use xmethods when debugging
2677 with core files. Moreover, when debugging live programs, invoking an
2678 xmethod need not involve running the inferior (which can potentially
2679 perturb its state). Hence, even if the C@t{++} method is available, it
2680 is better to use its replacement xmethod if one is defined.
2681
2682 The xmethods feature in Python is available via the concepts of an
2683 @dfn{xmethod matcher} and an @dfn{xmethod worker}. To
2684 implement an xmethod, one has to implement a matcher and a
2685 corresponding worker for it (more than one worker can be
2686 implemented, each catering to a different overloaded instance of the
2687 method). Internally, @value{GDBN} invokes the @code{match} method of a
2688 matcher to match the class type and method name. On a match, the
2689 @code{match} method returns a list of matching @emph{worker} objects.
2690 Each worker object typically corresponds to an overloaded instance of
2691 the xmethod. They implement a @code{get_arg_types} method which
2692 returns a sequence of types corresponding to the arguments the xmethod
2693 requires. @value{GDBN} uses this sequence of types to perform
2694 overload resolution and picks a winning xmethod worker. A winner
2695 is also selected from among the methods @value{GDBN} finds in the
2696 C@t{++} source code. Next, the winning xmethod worker and the
2697 winning C@t{++} method are compared to select an overall winner. In
2698 case of a tie between a xmethod worker and a C@t{++} method, the
2699 xmethod worker is selected as the winner. That is, if a winning
2700 xmethod worker is found to be equivalent to the winning C@t{++}
2701 method, then the xmethod worker is treated as a replacement for
2702 the C@t{++} method. @value{GDBN} uses the overall winner to invoke the
2703 method. If the winning xmethod worker is the overall winner, then
2704 the corresponding xmethod is invoked via the @code{__call__} method
2705 of the worker object.
2706
2707 If one wants to implement an xmethod as a replacement for an
2708 existing C@t{++} method, then they have to implement an equivalent
2709 xmethod which has exactly the same name and takes arguments of
2710 exactly the same type as the C@t{++} method. If the user wants to
2711 invoke the C@t{++} method even though a replacement xmethod is
2712 available for that method, then they can disable the xmethod.
2713
2714 @xref{Xmethod API}, for API to implement xmethods in Python.
2715 @xref{Writing an Xmethod}, for implementing xmethods in Python.
2716
2717 @node Xmethod API
2718 @subsubsection Xmethod API
2719 @cindex xmethod API
2720
2721 The @value{GDBN} Python API provides classes, interfaces and functions
2722 to implement, register and manipulate xmethods.
2723 @xref{Xmethods In Python}.
2724
2725 An xmethod matcher should be an instance of a class derived from
2726 @code{XMethodMatcher} defined in the module @code{gdb.xmethod}, or an
2727 object with similar interface and attributes. An instance of
2728 @code{XMethodMatcher} has the following attributes:
2729
2730 @defvar name
2731 The name of the matcher.
2732 @end defvar
2733
2734 @defvar enabled
2735 A boolean value indicating whether the matcher is enabled or disabled.
2736 @end defvar
2737
2738 @defvar methods
2739 A list of named methods managed by the matcher. Each object in the list
2740 is an instance of the class @code{XMethod} defined in the module
2741 @code{gdb.xmethod}, or any object with the following attributes:
2742
2743 @table @code
2744
2745 @item name
2746 Name of the xmethod which should be unique for each xmethod
2747 managed by the matcher.
2748
2749 @item enabled
2750 A boolean value indicating whether the xmethod is enabled or
2751 disabled.
2752
2753 @end table
2754
2755 The class @code{XMethod} is a convenience class with same
2756 attributes as above along with the following constructor:
2757
2758 @defun XMethod.__init__ (self, name)
2759 Constructs an enabled xmethod with name @var{name}.
2760 @end defun
2761 @end defvar
2762
2763 @noindent
2764 The @code{XMethodMatcher} class has the following methods:
2765
2766 @defun XMethodMatcher.__init__ (self, name)
2767 Constructs an enabled xmethod matcher with name @var{name}. The
2768 @code{methods} attribute is initialized to @code{None}.
2769 @end defun
2770
2771 @defun XMethodMatcher.match (self, class_type, method_name)
2772 Derived classes should override this method. It should return a
2773 xmethod worker object (or a sequence of xmethod worker
2774 objects) matching the @var{class_type} and @var{method_name}.
2775 @var{class_type} is a @code{gdb.Type} object, and @var{method_name}
2776 is a string value. If the matcher manages named methods as listed in
2777 its @code{methods} attribute, then only those worker objects whose
2778 corresponding entries in the @code{methods} list are enabled should be
2779 returned.
2780 @end defun
2781
2782 An xmethod worker should be an instance of a class derived from
2783 @code{XMethodWorker} defined in the module @code{gdb.xmethod},
2784 or support the following interface:
2785
2786 @defun XMethodWorker.get_arg_types (self)
2787 This method returns a sequence of @code{gdb.Type} objects corresponding
2788 to the arguments that the xmethod takes. It can return an empty
2789 sequence or @code{None} if the xmethod does not take any arguments.
2790 If the xmethod takes a single argument, then a single
2791 @code{gdb.Type} object corresponding to it can be returned.
2792 @end defun
2793
2794 @defun XMethodWorker.get_result_type (self, *args)
2795 This method returns a @code{gdb.Type} object representing the type
2796 of the result of invoking this xmethod.
2797 The @var{args} argument is the same tuple of arguments that would be
2798 passed to the @code{__call__} method of this worker.
2799 @end defun
2800
2801 @defun XMethodWorker.__call__ (self, *args)
2802 This is the method which does the @emph{work} of the xmethod. The
2803 @var{args} arguments is the tuple of arguments to the xmethod. Each
2804 element in this tuple is a gdb.Value object. The first element is
2805 always the @code{this} pointer value.
2806 @end defun
2807
2808 For @value{GDBN} to lookup xmethods, the xmethod matchers
2809 should be registered using the following function defined in the module
2810 @code{gdb.xmethod}:
2811
2812 @defun register_xmethod_matcher (locus, matcher, replace=False)
2813 The @code{matcher} is registered with @code{locus}, replacing an
2814 existing matcher with the same name as @code{matcher} if
2815 @code{replace} is @code{True}. @code{locus} can be a
2816 @code{gdb.Objfile} object (@pxref{Objfiles In Python}), or a
2817 @code{gdb.Progspace} object (@pxref{Progspaces In Python}), or
2818 @code{None}. If it is @code{None}, then @code{matcher} is registered
2819 globally.
2820 @end defun
2821
2822 @node Writing an Xmethod
2823 @subsubsection Writing an Xmethod
2824 @cindex writing xmethods in Python
2825
2826 Implementing xmethods in Python will require implementing xmethod
2827 matchers and xmethod workers (@pxref{Xmethods In Python}). Consider
2828 the following C@t{++} class:
2829
2830 @smallexample
2831 class MyClass
2832 @{
2833 public:
2834 MyClass (int a) : a_(a) @{ @}
2835
2836 int geta (void) @{ return a_; @}
2837 int operator+ (int b);
2838
2839 private:
2840 int a_;
2841 @};
2842
2843 int
2844 MyClass::operator+ (int b)
2845 @{
2846 return a_ + b;
2847 @}
2848 @end smallexample
2849
2850 @noindent
2851 Let us define two xmethods for the class @code{MyClass}, one
2852 replacing the method @code{geta}, and another adding an overloaded
2853 flavor of @code{operator+} which takes a @code{MyClass} argument (the
2854 C@t{++} code above already has an overloaded @code{operator+}
2855 which takes an @code{int} argument). The xmethod matcher can be
2856 defined as follows:
2857
2858 @smallexample
2859 class MyClass_geta(gdb.xmethod.XMethod):
2860 def __init__(self):
2861 gdb.xmethod.XMethod.__init__(self, 'geta')
2862
2863 def get_worker(self, method_name):
2864 if method_name == 'geta':
2865 return MyClassWorker_geta()
2866
2867
2868 class MyClass_sum(gdb.xmethod.XMethod):
2869 def __init__(self):
2870 gdb.xmethod.XMethod.__init__(self, 'sum')
2871
2872 def get_worker(self, method_name):
2873 if method_name == 'operator+':
2874 return MyClassWorker_plus()
2875
2876
2877 class MyClassMatcher(gdb.xmethod.XMethodMatcher):
2878 def __init__(self):
2879 gdb.xmethod.XMethodMatcher.__init__(self, 'MyClassMatcher')
2880 # List of methods 'managed' by this matcher
2881 self.methods = [MyClass_geta(), MyClass_sum()]
2882
2883 def match(self, class_type, method_name):
2884 if class_type.tag != 'MyClass':
2885 return None
2886 workers = []
2887 for method in self.methods:
2888 if method.enabled:
2889 worker = method.get_worker(method_name)
2890 if worker:
2891 workers.append(worker)
2892
2893 return workers
2894 @end smallexample
2895
2896 @noindent
2897 Notice that the @code{match} method of @code{MyClassMatcher} returns
2898 a worker object of type @code{MyClassWorker_geta} for the @code{geta}
2899 method, and a worker object of type @code{MyClassWorker_plus} for the
2900 @code{operator+} method. This is done indirectly via helper classes
2901 derived from @code{gdb.xmethod.XMethod}. One does not need to use the
2902 @code{methods} attribute in a matcher as it is optional. However, if a
2903 matcher manages more than one xmethod, it is a good practice to list the
2904 xmethods in the @code{methods} attribute of the matcher. This will then
2905 facilitate enabling and disabling individual xmethods via the
2906 @code{enable/disable} commands. Notice also that a worker object is
2907 returned only if the corresponding entry in the @code{methods} attribute
2908 of the matcher is enabled.
2909
2910 The implementation of the worker classes returned by the matcher setup
2911 above is as follows:
2912
2913 @smallexample
2914 class MyClassWorker_geta(gdb.xmethod.XMethodWorker):
2915 def get_arg_types(self):
2916 return None
2917
2918 def get_result_type(self, obj):
2919 return gdb.lookup_type('int')
2920
2921 def __call__(self, obj):
2922 return obj['a_']
2923
2924
2925 class MyClassWorker_plus(gdb.xmethod.XMethodWorker):
2926 def get_arg_types(self):
2927 return gdb.lookup_type('MyClass')
2928
2929 def get_result_type(self, obj):
2930 return gdb.lookup_type('int')
2931
2932 def __call__(self, obj, other):
2933 return obj['a_'] + other['a_']
2934 @end smallexample
2935
2936 For @value{GDBN} to actually lookup a xmethod, it has to be
2937 registered with it. The matcher defined above is registered with
2938 @value{GDBN} globally as follows:
2939
2940 @smallexample
2941 gdb.xmethod.register_xmethod_matcher(None, MyClassMatcher())
2942 @end smallexample
2943
2944 If an object @code{obj} of type @code{MyClass} is initialized in C@t{++}
2945 code as follows:
2946
2947 @smallexample
2948 MyClass obj(5);
2949 @end smallexample
2950
2951 @noindent
2952 then, after loading the Python script defining the xmethod matchers
2953 and workers into @code{GDBN}, invoking the method @code{geta} or using
2954 the operator @code{+} on @code{obj} will invoke the xmethods
2955 defined above:
2956
2957 @smallexample
2958 (gdb) p obj.geta()
2959 $1 = 5
2960
2961 (gdb) p obj + obj
2962 $2 = 10
2963 @end smallexample
2964
2965 Consider another example with a C++ template class:
2966
2967 @smallexample
2968 template <class T>
2969 class MyTemplate
2970 @{
2971 public:
2972 MyTemplate () : dsize_(10), data_ (new T [10]) @{ @}
2973 ~MyTemplate () @{ delete [] data_; @}
2974
2975 int footprint (void)
2976 @{
2977 return sizeof (T) * dsize_ + sizeof (MyTemplate<T>);
2978 @}
2979
2980 private:
2981 int dsize_;
2982 T *data_;
2983 @};
2984 @end smallexample
2985
2986 Let us implement an xmethod for the above class which serves as a
2987 replacement for the @code{footprint} method. The full code listing
2988 of the xmethod workers and xmethod matchers is as follows:
2989
2990 @smallexample
2991 class MyTemplateWorker_footprint(gdb.xmethod.XMethodWorker):
2992 def __init__(self, class_type):
2993 self.class_type = class_type
2994
2995 def get_arg_types(self):
2996 return None
2997
2998 def get_result_type(self):
2999 return gdb.lookup_type('int')
3000
3001 def __call__(self, obj):
3002 return (self.class_type.sizeof +
3003 obj['dsize_'] *
3004 self.class_type.template_argument(0).sizeof)
3005
3006
3007 class MyTemplateMatcher_footprint(gdb.xmethod.XMethodMatcher):
3008 def __init__(self):
3009 gdb.xmethod.XMethodMatcher.__init__(self, 'MyTemplateMatcher')
3010
3011 def match(self, class_type, method_name):
3012 if (re.match('MyTemplate<[ \t\n]*[_a-zA-Z][ _a-zA-Z0-9]*>',
3013 class_type.tag) and
3014 method_name == 'footprint'):
3015 return MyTemplateWorker_footprint(class_type)
3016 @end smallexample
3017
3018 Notice that, in this example, we have not used the @code{methods}
3019 attribute of the matcher as the matcher manages only one xmethod. The
3020 user can enable/disable this xmethod by enabling/disabling the matcher
3021 itself.
3022
3023 @node Inferiors In Python
3024 @subsubsection Inferiors In Python
3025 @cindex inferiors in Python
3026
3027 @findex gdb.Inferior
3028 Programs which are being run under @value{GDBN} are called inferiors
3029 (@pxref{Inferiors Connections and Programs}). Python scripts can access
3030 information about and manipulate inferiors controlled by @value{GDBN}
3031 via objects of the @code{gdb.Inferior} class.
3032
3033 The following inferior-related functions are available in the @code{gdb}
3034 module:
3035
3036 @defun gdb.inferiors ()
3037 Return a tuple containing all inferior objects.
3038 @end defun
3039
3040 @defun gdb.selected_inferior ()
3041 Return an object representing the current inferior.
3042 @end defun
3043
3044 A @code{gdb.Inferior} object has the following attributes:
3045
3046 @defvar Inferior.num
3047 ID of inferior, as assigned by GDB.
3048 @end defvar
3049
3050 @defvar Inferior.pid
3051 Process ID of the inferior, as assigned by the underlying operating
3052 system.
3053 @end defvar
3054
3055 @defvar Inferior.was_attached
3056 Boolean signaling whether the inferior was created using `attach', or
3057 started by @value{GDBN} itself.
3058 @end defvar
3059
3060 @defvar Inferior.progspace
3061 The inferior's program space. @xref{Progspaces In Python}.
3062 @end defvar
3063
3064 A @code{gdb.Inferior} object has the following methods:
3065
3066 @defun Inferior.is_valid ()
3067 Returns @code{True} if the @code{gdb.Inferior} object is valid,
3068 @code{False} if not. A @code{gdb.Inferior} object will become invalid
3069 if the inferior no longer exists within @value{GDBN}. All other
3070 @code{gdb.Inferior} methods will throw an exception if it is invalid
3071 at the time the method is called.
3072 @end defun
3073
3074 @defun Inferior.threads ()
3075 This method returns a tuple holding all the threads which are valid
3076 when it is called. If there are no valid threads, the method will
3077 return an empty tuple.
3078 @end defun
3079
3080 @defun Inferior.architecture ()
3081 Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
3082 for this inferior. This represents the architecture of the inferior
3083 as a whole. Some platforms can have multiple architectures in a
3084 single address space, so this may not match the architecture of a
3085 particular frame (@pxref{Frames In Python}).
3086 @end defun
3087
3088 @findex Inferior.read_memory
3089 @defun Inferior.read_memory (address, length)
3090 Read @var{length} addressable memory units from the inferior, starting at
3091 @var{address}. Returns a buffer object, which behaves much like an array
3092 or a string. It can be modified and given to the
3093 @code{Inferior.write_memory} function. In Python 3, the return
3094 value is a @code{memoryview} object.
3095 @end defun
3096
3097 @findex Inferior.write_memory
3098 @defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
3099 Write the contents of @var{buffer} to the inferior, starting at
3100 @var{address}. The @var{buffer} parameter must be a Python object
3101 which supports the buffer protocol, i.e., a string, an array or the
3102 object returned from @code{Inferior.read_memory}. If given, @var{length}
3103 determines the number of addressable memory units from @var{buffer} to be
3104 written.
3105 @end defun
3106
3107 @findex gdb.search_memory
3108 @defun Inferior.search_memory (address, length, pattern)
3109 Search a region of the inferior memory starting at @var{address} with
3110 the given @var{length} using the search pattern supplied in
3111 @var{pattern}. The @var{pattern} parameter must be a Python object
3112 which supports the buffer protocol, i.e., a string, an array or the
3113 object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
3114 containing the address where the pattern was found, or @code{None} if
3115 the pattern could not be found.
3116 @end defun
3117
3118 @findex Inferior.thread_from_handle
3119 @findex Inferior.thread_from_thread_handle
3120 @defun Inferior.thread_from_handle (handle)
3121 Return the thread object corresponding to @var{handle}, a thread
3122 library specific data structure such as @code{pthread_t} for pthreads
3123 library implementations.
3124
3125 The function @code{Inferior.thread_from_thread_handle} provides
3126 the same functionality, but use of @code{Inferior.thread_from_thread_handle}
3127 is deprecated.
3128 @end defun
3129
3130 @node Events In Python
3131 @subsubsection Events In Python
3132 @cindex inferior events in Python
3133
3134 @value{GDBN} provides a general event facility so that Python code can be
3135 notified of various state changes, particularly changes that occur in
3136 the inferior.
3137
3138 An @dfn{event} is just an object that describes some state change. The
3139 type of the object and its attributes will vary depending on the details
3140 of the change. All the existing events are described below.
3141
3142 In order to be notified of an event, you must register an event handler
3143 with an @dfn{event registry}. An event registry is an object in the
3144 @code{gdb.events} module which dispatches particular events. A registry
3145 provides methods to register and unregister event handlers:
3146
3147 @defun EventRegistry.connect (object)
3148 Add the given callable @var{object} to the registry. This object will be
3149 called when an event corresponding to this registry occurs.
3150 @end defun
3151
3152 @defun EventRegistry.disconnect (object)
3153 Remove the given @var{object} from the registry. Once removed, the object
3154 will no longer receive notifications of events.
3155 @end defun
3156
3157 Here is an example:
3158
3159 @smallexample
3160 def exit_handler (event):
3161 print ("event type: exit")
3162 print ("exit code: %d" % (event.exit_code))
3163
3164 gdb.events.exited.connect (exit_handler)
3165 @end smallexample
3166
3167 In the above example we connect our handler @code{exit_handler} to the
3168 registry @code{events.exited}. Once connected, @code{exit_handler} gets
3169 called when the inferior exits. The argument @dfn{event} in this example is
3170 of type @code{gdb.ExitedEvent}. As you can see in the example the
3171 @code{ExitedEvent} object has an attribute which indicates the exit code of
3172 the inferior.
3173
3174 The following is a listing of the event registries that are available and
3175 details of the events they emit:
3176
3177 @table @code
3178
3179 @item events.cont
3180 Emits @code{gdb.ThreadEvent}.
3181
3182 Some events can be thread specific when @value{GDBN} is running in non-stop
3183 mode. When represented in Python, these events all extend
3184 @code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
3185 events which are emitted by this or other modules might extend this event.
3186 Examples of these events are @code{gdb.BreakpointEvent} and
3187 @code{gdb.ContinueEvent}.
3188
3189 @defvar ThreadEvent.inferior_thread
3190 In non-stop mode this attribute will be set to the specific thread which was
3191 involved in the emitted event. Otherwise, it will be set to @code{None}.
3192 @end defvar
3193
3194 Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
3195
3196 This event indicates that the inferior has been continued after a stop. For
3197 inherited attribute refer to @code{gdb.ThreadEvent} above.
3198
3199 @item events.exited
3200 Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
3201 @code{events.ExitedEvent} has two attributes:
3202 @defvar ExitedEvent.exit_code
3203 An integer representing the exit code, if available, which the inferior
3204 has returned. (The exit code could be unavailable if, for example,
3205 @value{GDBN} detaches from the inferior.) If the exit code is unavailable,
3206 the attribute does not exist.
3207 @end defvar
3208 @defvar ExitedEvent.inferior
3209 A reference to the inferior which triggered the @code{exited} event.
3210 @end defvar
3211
3212 @item events.stop
3213 Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
3214
3215 Indicates that the inferior has stopped. All events emitted by this registry
3216 extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
3217 will indicate the stopped thread when @value{GDBN} is running in non-stop
3218 mode. Refer to @code{gdb.ThreadEvent} above for more details.
3219
3220 Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
3221
3222 This event indicates that the inferior or one of its threads has received as
3223 signal. @code{gdb.SignalEvent} has the following attributes:
3224
3225 @defvar SignalEvent.stop_signal
3226 A string representing the signal received by the inferior. A list of possible
3227 signal values can be obtained by running the command @code{info signals} in
3228 the @value{GDBN} command prompt.
3229 @end defvar
3230
3231 Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
3232
3233 @code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
3234 been hit, and has the following attributes:
3235
3236 @defvar BreakpointEvent.breakpoints
3237 A sequence containing references to all the breakpoints (type
3238 @code{gdb.Breakpoint}) that were hit.
3239 @xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
3240 @end defvar
3241 @defvar BreakpointEvent.breakpoint
3242 A reference to the first breakpoint that was hit.
3243 This function is maintained for backward compatibility and is now deprecated
3244 in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
3245 @end defvar
3246
3247 @item events.new_objfile
3248 Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
3249 been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
3250
3251 @defvar NewObjFileEvent.new_objfile
3252 A reference to the object file (@code{gdb.Objfile}) which has been loaded.
3253 @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
3254 @end defvar
3255
3256 @item events.clear_objfiles
3257 Emits @code{gdb.ClearObjFilesEvent} which indicates that the list of object
3258 files for a program space has been reset.
3259 @code{gdb.ClearObjFilesEvent} has one attribute:
3260
3261 @defvar ClearObjFilesEvent.progspace
3262 A reference to the program space (@code{gdb.Progspace}) whose objfile list has
3263 been cleared. @xref{Progspaces In Python}.
3264 @end defvar
3265
3266 @item events.inferior_call
3267 Emits events just before and after a function in the inferior is
3268 called by @value{GDBN}. Before an inferior call, this emits an event
3269 of type @code{gdb.InferiorCallPreEvent}, and after an inferior call,
3270 this emits an event of type @code{gdb.InferiorCallPostEvent}.
3271
3272 @table @code
3273 @tindex gdb.InferiorCallPreEvent
3274 @item @code{gdb.InferiorCallPreEvent}
3275 Indicates that a function in the inferior is about to be called.
3276
3277 @defvar InferiorCallPreEvent.ptid
3278 The thread in which the call will be run.
3279 @end defvar
3280
3281 @defvar InferiorCallPreEvent.address
3282 The location of the function to be called.
3283 @end defvar
3284
3285 @tindex gdb.InferiorCallPostEvent
3286 @item @code{gdb.InferiorCallPostEvent}
3287 Indicates that a function in the inferior has just been called.
3288
3289 @defvar InferiorCallPostEvent.ptid
3290 The thread in which the call was run.
3291 @end defvar
3292
3293 @defvar InferiorCallPostEvent.address
3294 The location of the function that was called.
3295 @end defvar
3296 @end table
3297
3298 @item events.memory_changed
3299 Emits @code{gdb.MemoryChangedEvent} which indicates that the memory of the
3300 inferior has been modified by the @value{GDBN} user, for instance via a
3301 command like @w{@code{set *addr = value}}. The event has the following
3302 attributes:
3303
3304 @defvar MemoryChangedEvent.address
3305 The start address of the changed region.
3306 @end defvar
3307
3308 @defvar MemoryChangedEvent.length
3309 Length in bytes of the changed region.
3310 @end defvar
3311
3312 @item events.register_changed
3313 Emits @code{gdb.RegisterChangedEvent} which indicates that a register in the
3314 inferior has been modified by the @value{GDBN} user.
3315
3316 @defvar RegisterChangedEvent.frame
3317 A gdb.Frame object representing the frame in which the register was modified.
3318 @end defvar
3319 @defvar RegisterChangedEvent.regnum
3320 Denotes which register was modified.
3321 @end defvar
3322
3323 @item events.breakpoint_created
3324 This is emitted when a new breakpoint has been created. The argument
3325 that is passed is the new @code{gdb.Breakpoint} object.
3326
3327 @item events.breakpoint_modified
3328 This is emitted when a breakpoint has been modified in some way. The
3329 argument that is passed is the new @code{gdb.Breakpoint} object.
3330
3331 @item events.breakpoint_deleted
3332 This is emitted when a breakpoint has been deleted. The argument that
3333 is passed is the @code{gdb.Breakpoint} object. When this event is
3334 emitted, the @code{gdb.Breakpoint} object will already be in its
3335 invalid state; that is, the @code{is_valid} method will return
3336 @code{False}.
3337
3338 @item events.before_prompt
3339 This event carries no payload. It is emitted each time @value{GDBN}
3340 presents a prompt to the user.
3341
3342 @item events.new_inferior
3343 This is emitted when a new inferior is created. Note that the
3344 inferior is not necessarily running; in fact, it may not even have an
3345 associated executable.
3346
3347 The event is of type @code{gdb.NewInferiorEvent}. This has a single
3348 attribute:
3349
3350 @defvar NewInferiorEvent.inferior
3351 The new inferior, a @code{gdb.Inferior} object.
3352 @end defvar
3353
3354 @item events.inferior_deleted
3355 This is emitted when an inferior has been deleted. Note that this is
3356 not the same as process exit; it is notified when the inferior itself
3357 is removed, say via @code{remove-inferiors}.
3358
3359 The event is of type @code{gdb.InferiorDeletedEvent}. This has a single
3360 attribute:
3361
3362 @defvar NewInferiorEvent.inferior
3363 The inferior that is being removed, a @code{gdb.Inferior} object.
3364 @end defvar
3365
3366 @item events.new_thread
3367 This is emitted when @value{GDBN} notices a new thread. The event is of
3368 type @code{gdb.NewThreadEvent}, which extends @code{gdb.ThreadEvent}.
3369 This has a single attribute:
3370
3371 @defvar NewThreadEvent.inferior_thread
3372 The new thread.
3373 @end defvar
3374
3375 @end table
3376
3377 @node Threads In Python
3378 @subsubsection Threads In Python
3379 @cindex threads in python
3380
3381 @findex gdb.InferiorThread
3382 Python scripts can access information about, and manipulate inferior threads
3383 controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
3384
3385 The following thread-related functions are available in the @code{gdb}
3386 module:
3387
3388 @findex gdb.selected_thread
3389 @defun gdb.selected_thread ()
3390 This function returns the thread object for the selected thread. If there
3391 is no selected thread, this will return @code{None}.
3392 @end defun
3393
3394 To get the list of threads for an inferior, use the @code{Inferior.threads()}
3395 method. @xref{Inferiors In Python}.
3396
3397 A @code{gdb.InferiorThread} object has the following attributes:
3398
3399 @defvar InferiorThread.name
3400 The name of the thread. If the user specified a name using
3401 @code{thread name}, then this returns that name. Otherwise, if an
3402 OS-supplied name is available, then it is returned. Otherwise, this
3403 returns @code{None}.
3404
3405 This attribute can be assigned to. The new value must be a string
3406 object, which sets the new name, or @code{None}, which removes any
3407 user-specified thread name.
3408 @end defvar
3409
3410 @defvar InferiorThread.num
3411 The per-inferior number of the thread, as assigned by GDB.
3412 @end defvar
3413
3414 @defvar InferiorThread.global_num
3415 The global ID of the thread, as assigned by GDB. You can use this to
3416 make Python breakpoints thread-specific, for example
3417 (@pxref{python_breakpoint_thread,,The Breakpoint.thread attribute}).
3418 @end defvar
3419
3420 @defvar InferiorThread.ptid
3421 ID of the thread, as assigned by the operating system. This attribute is a
3422 tuple containing three integers. The first is the Process ID (PID); the second
3423 is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
3424 Either the LWPID or TID may be 0, which indicates that the operating system
3425 does not use that identifier.
3426 @end defvar
3427
3428 @defvar InferiorThread.inferior
3429 The inferior this thread belongs to. This attribute is represented as
3430 a @code{gdb.Inferior} object. This attribute is not writable.
3431 @end defvar
3432
3433 A @code{gdb.InferiorThread} object has the following methods:
3434
3435 @defun InferiorThread.is_valid ()
3436 Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
3437 @code{False} if not. A @code{gdb.InferiorThread} object will become
3438 invalid if the thread exits, or the inferior that the thread belongs
3439 is deleted. All other @code{gdb.InferiorThread} methods will throw an
3440 exception if it is invalid at the time the method is called.
3441 @end defun
3442
3443 @defun InferiorThread.switch ()
3444 This changes @value{GDBN}'s currently selected thread to the one represented
3445 by this object.
3446 @end defun
3447
3448 @defun InferiorThread.is_stopped ()
3449 Return a Boolean indicating whether the thread is stopped.
3450 @end defun
3451
3452 @defun InferiorThread.is_running ()
3453 Return a Boolean indicating whether the thread is running.
3454 @end defun
3455
3456 @defun InferiorThread.is_exited ()
3457 Return a Boolean indicating whether the thread is exited.
3458 @end defun
3459
3460 @defun InferiorThread.handle ()
3461 Return the thread object's handle, represented as a Python @code{bytes}
3462 object. A @code{gdb.Value} representation of the handle may be
3463 constructed via @code{gdb.Value(bufobj, type)} where @var{bufobj} is
3464 the Python @code{bytes} representation of the handle and @var{type} is
3465 a @code{gdb.Type} for the handle type.
3466 @end defun
3467
3468 @node Recordings In Python
3469 @subsubsection Recordings In Python
3470 @cindex recordings in python
3471
3472 The following recordings-related functions
3473 (@pxref{Process Record and Replay}) are available in the @code{gdb}
3474 module:
3475
3476 @defun gdb.start_recording (@r{[}method@r{]}, @r{[}format@r{]})
3477 Start a recording using the given @var{method} and @var{format}. If
3478 no @var{format} is given, the default format for the recording method
3479 is used. If no @var{method} is given, the default method will be used.
3480 Returns a @code{gdb.Record} object on success. Throw an exception on
3481 failure.
3482
3483 The following strings can be passed as @var{method}:
3484
3485 @itemize @bullet
3486 @item
3487 @code{"full"}
3488 @item
3489 @code{"btrace"}: Possible values for @var{format}: @code{"pt"},
3490 @code{"bts"} or leave out for default format.
3491 @end itemize
3492 @end defun
3493
3494 @defun gdb.current_recording ()
3495 Access a currently running recording. Return a @code{gdb.Record}
3496 object on success. Return @code{None} if no recording is currently
3497 active.
3498 @end defun
3499
3500 @defun gdb.stop_recording ()
3501 Stop the current recording. Throw an exception if no recording is
3502 currently active. All record objects become invalid after this call.
3503 @end defun
3504
3505 A @code{gdb.Record} object has the following attributes:
3506
3507 @defvar Record.method
3508 A string with the current recording method, e.g.@: @code{full} or
3509 @code{btrace}.
3510 @end defvar
3511
3512 @defvar Record.format
3513 A string with the current recording format, e.g.@: @code{bt}, @code{pts} or
3514 @code{None}.
3515 @end defvar
3516
3517 @defvar Record.begin
3518 A method specific instruction object representing the first instruction
3519 in this recording.
3520 @end defvar
3521
3522 @defvar Record.end
3523 A method specific instruction object representing the current
3524 instruction, that is not actually part of the recording.
3525 @end defvar
3526
3527 @defvar Record.replay_position
3528 The instruction representing the current replay position. If there is
3529 no replay active, this will be @code{None}.
3530 @end defvar
3531
3532 @defvar Record.instruction_history
3533 A list with all recorded instructions.
3534 @end defvar
3535
3536 @defvar Record.function_call_history
3537 A list with all recorded function call segments.
3538 @end defvar
3539
3540 A @code{gdb.Record} object has the following methods:
3541
3542 @defun Record.goto (instruction)
3543 Move the replay position to the given @var{instruction}.
3544 @end defun
3545
3546 The common @code{gdb.Instruction} class that recording method specific
3547 instruction objects inherit from, has the following attributes:
3548
3549 @defvar Instruction.pc
3550 An integer representing this instruction's address.
3551 @end defvar
3552
3553 @defvar Instruction.data
3554 A buffer with the raw instruction data. In Python 3, the return value is a
3555 @code{memoryview} object.
3556 @end defvar
3557
3558 @defvar Instruction.decoded
3559 A human readable string with the disassembled instruction.
3560 @end defvar
3561
3562 @defvar Instruction.size
3563 The size of the instruction in bytes.
3564 @end defvar
3565
3566 Additionally @code{gdb.RecordInstruction} has the following attributes:
3567
3568 @defvar RecordInstruction.number
3569 An integer identifying this instruction. @code{number} corresponds to
3570 the numbers seen in @code{record instruction-history}
3571 (@pxref{Process Record and Replay}).
3572 @end defvar
3573
3574 @defvar RecordInstruction.sal
3575 A @code{gdb.Symtab_and_line} object representing the associated symtab
3576 and line of this instruction. May be @code{None} if no debug information is
3577 available.
3578 @end defvar
3579
3580 @defvar RecordInstruction.is_speculative
3581 A boolean indicating whether the instruction was executed speculatively.
3582 @end defvar
3583
3584 If an error occured during recording or decoding a recording, this error is
3585 represented by a @code{gdb.RecordGap} object in the instruction list. It has
3586 the following attributes:
3587
3588 @defvar RecordGap.number
3589 An integer identifying this gap. @code{number} corresponds to the numbers seen
3590 in @code{record instruction-history} (@pxref{Process Record and Replay}).
3591 @end defvar
3592
3593 @defvar RecordGap.error_code
3594 A numerical representation of the reason for the gap. The value is specific to
3595 the current recording method.
3596 @end defvar
3597
3598 @defvar RecordGap.error_string
3599 A human readable string with the reason for the gap.
3600 @end defvar
3601
3602 A @code{gdb.RecordFunctionSegment} object has the following attributes:
3603
3604 @defvar RecordFunctionSegment.number
3605 An integer identifying this function segment. @code{number} corresponds to
3606 the numbers seen in @code{record function-call-history}
3607 (@pxref{Process Record and Replay}).
3608 @end defvar
3609
3610 @defvar RecordFunctionSegment.symbol
3611 A @code{gdb.Symbol} object representing the associated symbol. May be
3612 @code{None} if no debug information is available.
3613 @end defvar
3614
3615 @defvar RecordFunctionSegment.level
3616 An integer representing the function call's stack level. May be
3617 @code{None} if the function call is a gap.
3618 @end defvar
3619
3620 @defvar RecordFunctionSegment.instructions
3621 A list of @code{gdb.RecordInstruction} or @code{gdb.RecordGap} objects
3622 associated with this function call.
3623 @end defvar
3624
3625 @defvar RecordFunctionSegment.up
3626 A @code{gdb.RecordFunctionSegment} object representing the caller's
3627 function segment. If the call has not been recorded, this will be the
3628 function segment to which control returns. If neither the call nor the
3629 return have been recorded, this will be @code{None}.
3630 @end defvar
3631
3632 @defvar RecordFunctionSegment.prev
3633 A @code{gdb.RecordFunctionSegment} object representing the previous
3634 segment of this function call. May be @code{None}.
3635 @end defvar
3636
3637 @defvar RecordFunctionSegment.next
3638 A @code{gdb.RecordFunctionSegment} object representing the next segment of
3639 this function call. May be @code{None}.
3640 @end defvar
3641
3642 The following example demonstrates the usage of these objects and
3643 functions to create a function that will rewind a record to the last
3644 time a function in a different file was executed. This would typically
3645 be used to track the execution of user provided callback functions in a
3646 library which typically are not visible in a back trace.
3647
3648 @smallexample
3649 def bringback ():
3650 rec = gdb.current_recording ()
3651 if not rec:
3652 return
3653
3654 insn = rec.instruction_history
3655 if len (insn) == 0:
3656 return
3657
3658 try:
3659 position = insn.index (rec.replay_position)
3660 except:
3661 position = -1
3662 try:
3663 filename = insn[position].sal.symtab.fullname ()
3664 except:
3665 filename = None
3666
3667 for i in reversed (insn[:position]):
3668 try:
3669 current = i.sal.symtab.fullname ()
3670 except:
3671 current = None
3672
3673 if filename == current:
3674 continue
3675
3676 rec.goto (i)
3677 return
3678 @end smallexample
3679
3680 Another possible application is to write a function that counts the
3681 number of code executions in a given line range. This line range can
3682 contain parts of functions or span across several functions and is not
3683 limited to be contiguous.
3684
3685 @smallexample
3686 def countrange (filename, linerange):
3687 count = 0
3688
3689 def filter_only (file_name):
3690 for call in gdb.current_recording ().function_call_history:
3691 try:
3692 if file_name in call.symbol.symtab.fullname ():
3693 yield call
3694 except:
3695 pass
3696
3697 for c in filter_only (filename):
3698 for i in c.instructions:
3699 try:
3700 if i.sal.line in linerange:
3701 count += 1
3702 break;
3703 except:
3704 pass
3705
3706 return count
3707 @end smallexample
3708
3709 @node Commands In Python
3710 @subsubsection Commands In Python
3711
3712 @cindex commands in python
3713 @cindex python commands
3714 You can implement new @value{GDBN} CLI commands in Python. A CLI
3715 command is implemented using an instance of the @code{gdb.Command}
3716 class, most commonly using a subclass.
3717
3718 @defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
3719 The object initializer for @code{Command} registers the new command
3720 with @value{GDBN}. This initializer is normally invoked from the
3721 subclass' own @code{__init__} method.
3722
3723 @var{name} is the name of the command. If @var{name} consists of
3724 multiple words, then the initial words are looked for as prefix
3725 commands. In this case, if one of the prefix commands does not exist,
3726 an exception is raised.
3727
3728 There is no support for multi-line commands.
3729
3730 @var{command_class} should be one of the @samp{COMMAND_} constants
3731 defined below. This argument tells @value{GDBN} how to categorize the
3732 new command in the help system.
3733
3734 @var{completer_class} is an optional argument. If given, it should be
3735 one of the @samp{COMPLETE_} constants defined below. This argument
3736 tells @value{GDBN} how to perform completion for this command. If not
3737 given, @value{GDBN} will attempt to complete using the object's
3738 @code{complete} method (see below); if no such method is found, an
3739 error will occur when completion is attempted.
3740
3741 @var{prefix} is an optional argument. If @code{True}, then the new
3742 command is a prefix command; sub-commands of this command may be
3743 registered.
3744
3745 The help text for the new command is taken from the Python
3746 documentation string for the command's class, if there is one. If no
3747 documentation string is provided, the default value ``This command is
3748 not documented.'' is used.
3749 @end defun
3750
3751 @cindex don't repeat Python command
3752 @defun Command.dont_repeat ()
3753 By default, a @value{GDBN} command is repeated when the user enters a
3754 blank line at the command prompt. A command can suppress this
3755 behavior by invoking the @code{dont_repeat} method. This is similar
3756 to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
3757 @end defun
3758
3759 @defun Command.invoke (argument, from_tty)
3760 This method is called by @value{GDBN} when this command is invoked.
3761
3762 @var{argument} is a string. It is the argument to the command, after
3763 leading and trailing whitespace has been stripped.
3764
3765 @var{from_tty} is a boolean argument. When true, this means that the
3766 command was entered by the user at the terminal; when false it means
3767 that the command came from elsewhere.
3768
3769 If this method throws an exception, it is turned into a @value{GDBN}
3770 @code{error} call. Otherwise, the return value is ignored.
3771
3772 @findex gdb.string_to_argv
3773 To break @var{argument} up into an argv-like string use
3774 @code{gdb.string_to_argv}. This function behaves identically to
3775 @value{GDBN}'s internal argument lexer @code{buildargv}.
3776 It is recommended to use this for consistency.
3777 Arguments are separated by spaces and may be quoted.
3778 Example:
3779
3780 @smallexample
3781 print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
3782 ['1', '2 "3', '4 "5', "6 '7"]
3783 @end smallexample
3784
3785 @end defun
3786
3787 @cindex completion of Python commands
3788 @defun Command.complete (text, word)
3789 This method is called by @value{GDBN} when the user attempts
3790 completion on this command. All forms of completion are handled by
3791 this method, that is, the @key{TAB} and @key{M-?} key bindings
3792 (@pxref{Completion}), and the @code{complete} command (@pxref{Help,
3793 complete}).
3794
3795 The arguments @var{text} and @var{word} are both strings; @var{text}
3796 holds the complete command line up to the cursor's location, while
3797 @var{word} holds the last word of the command line; this is computed
3798 using a word-breaking heuristic.
3799
3800 The @code{complete} method can return several values:
3801 @itemize @bullet
3802 @item
3803 If the return value is a sequence, the contents of the sequence are
3804 used as the completions. It is up to @code{complete} to ensure that the
3805 contents actually do complete the word. A zero-length sequence is
3806 allowed, it means that there were no completions available. Only
3807 string elements of the sequence are used; other elements in the
3808 sequence are ignored.
3809
3810 @item
3811 If the return value is one of the @samp{COMPLETE_} constants defined
3812 below, then the corresponding @value{GDBN}-internal completion
3813 function is invoked, and its result is used.
3814
3815 @item
3816 All other results are treated as though there were no available
3817 completions.
3818 @end itemize
3819 @end defun
3820
3821 When a new command is registered, it must be declared as a member of
3822 some general class of commands. This is used to classify top-level
3823 commands in the on-line help system; note that prefix commands are not
3824 listed under their own category but rather that of their top-level
3825 command. The available classifications are represented by constants
3826 defined in the @code{gdb} module:
3827
3828 @table @code
3829 @findex COMMAND_NONE
3830 @findex gdb.COMMAND_NONE
3831 @item gdb.COMMAND_NONE
3832 The command does not belong to any particular class. A command in
3833 this category will not be displayed in any of the help categories.
3834
3835 @findex COMMAND_RUNNING
3836 @findex gdb.COMMAND_RUNNING
3837 @item gdb.COMMAND_RUNNING
3838 The command is related to running the inferior. For example,
3839 @code{start}, @code{step}, and @code{continue} are in this category.
3840 Type @kbd{help running} at the @value{GDBN} prompt to see a list of
3841 commands in this category.
3842
3843 @findex COMMAND_DATA
3844 @findex gdb.COMMAND_DATA
3845 @item gdb.COMMAND_DATA
3846 The command is related to data or variables. For example,
3847 @code{call}, @code{find}, and @code{print} are in this category. Type
3848 @kbd{help data} at the @value{GDBN} prompt to see a list of commands
3849 in this category.
3850
3851 @findex COMMAND_STACK
3852 @findex gdb.COMMAND_STACK
3853 @item gdb.COMMAND_STACK
3854 The command has to do with manipulation of the stack. For example,
3855 @code{backtrace}, @code{frame}, and @code{return} are in this
3856 category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
3857 list of commands in this category.
3858
3859 @findex COMMAND_FILES
3860 @findex gdb.COMMAND_FILES
3861 @item gdb.COMMAND_FILES
3862 This class is used for file-related commands. For example,
3863 @code{file}, @code{list} and @code{section} are in this category.
3864 Type @kbd{help files} at the @value{GDBN} prompt to see a list of
3865 commands in this category.
3866
3867 @findex COMMAND_SUPPORT
3868 @findex gdb.COMMAND_SUPPORT
3869 @item gdb.COMMAND_SUPPORT
3870 This should be used for ``support facilities'', generally meaning
3871 things that are useful to the user when interacting with @value{GDBN},
3872 but not related to the state of the inferior. For example,
3873 @code{help}, @code{make}, and @code{shell} are in this category. Type
3874 @kbd{help support} at the @value{GDBN} prompt to see a list of
3875 commands in this category.
3876
3877 @findex COMMAND_STATUS
3878 @findex gdb.COMMAND_STATUS
3879 @item gdb.COMMAND_STATUS
3880 The command is an @samp{info}-related command, that is, related to the
3881 state of @value{GDBN} itself. For example, @code{info}, @code{macro},
3882 and @code{show} are in this category. Type @kbd{help status} at the
3883 @value{GDBN} prompt to see a list of commands in this category.
3884
3885 @findex COMMAND_BREAKPOINTS
3886 @findex gdb.COMMAND_BREAKPOINTS
3887 @item gdb.COMMAND_BREAKPOINTS
3888 The command has to do with breakpoints. For example, @code{break},
3889 @code{clear}, and @code{delete} are in this category. Type @kbd{help
3890 breakpoints} at the @value{GDBN} prompt to see a list of commands in
3891 this category.
3892
3893 @findex COMMAND_TRACEPOINTS
3894 @findex gdb.COMMAND_TRACEPOINTS
3895 @item gdb.COMMAND_TRACEPOINTS
3896 The command has to do with tracepoints. For example, @code{trace},
3897 @code{actions}, and @code{tfind} are in this category. Type
3898 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
3899 commands in this category.
3900
3901 @findex COMMAND_TUI
3902 @findex gdb.COMMAND_TUI
3903 @item gdb.COMMAND_TUI
3904 The command has to do with the text user interface (@pxref{TUI}).
3905 Type @kbd{help tui} at the @value{GDBN} prompt to see a list of
3906 commands in this category.
3907
3908 @findex COMMAND_USER
3909 @findex gdb.COMMAND_USER
3910 @item gdb.COMMAND_USER
3911 The command is a general purpose command for the user, and typically
3912 does not fit in one of the other categories.
3913 Type @kbd{help user-defined} at the @value{GDBN} prompt to see
3914 a list of commands in this category, as well as the list of gdb macros
3915 (@pxref{Sequences}).
3916
3917 @findex COMMAND_OBSCURE
3918 @findex gdb.COMMAND_OBSCURE
3919 @item gdb.COMMAND_OBSCURE
3920 The command is only used in unusual circumstances, or is not of
3921 general interest to users. For example, @code{checkpoint},
3922 @code{fork}, and @code{stop} are in this category. Type @kbd{help
3923 obscure} at the @value{GDBN} prompt to see a list of commands in this
3924 category.
3925
3926 @findex COMMAND_MAINTENANCE
3927 @findex gdb.COMMAND_MAINTENANCE
3928 @item gdb.COMMAND_MAINTENANCE
3929 The command is only useful to @value{GDBN} maintainers. The
3930 @code{maintenance} and @code{flushregs} commands are in this category.
3931 Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
3932 commands in this category.
3933 @end table
3934
3935 A new command can use a predefined completion function, either by
3936 specifying it via an argument at initialization, or by returning it
3937 from the @code{complete} method. These predefined completion
3938 constants are all defined in the @code{gdb} module:
3939
3940 @vtable @code
3941 @vindex COMPLETE_NONE
3942 @item gdb.COMPLETE_NONE
3943 This constant means that no completion should be done.
3944
3945 @vindex COMPLETE_FILENAME
3946 @item gdb.COMPLETE_FILENAME
3947 This constant means that filename completion should be performed.
3948
3949 @vindex COMPLETE_LOCATION
3950 @item gdb.COMPLETE_LOCATION
3951 This constant means that location completion should be done.
3952 @xref{Specify Location}.
3953
3954 @vindex COMPLETE_COMMAND
3955 @item gdb.COMPLETE_COMMAND
3956 This constant means that completion should examine @value{GDBN}
3957 command names.
3958
3959 @vindex COMPLETE_SYMBOL
3960 @item gdb.COMPLETE_SYMBOL
3961 This constant means that completion should be done using symbol names
3962 as the source.
3963
3964 @vindex COMPLETE_EXPRESSION
3965 @item gdb.COMPLETE_EXPRESSION
3966 This constant means that completion should be done on expressions.
3967 Often this means completing on symbol names, but some language
3968 parsers also have support for completing on field names.
3969 @end vtable
3970
3971 The following code snippet shows how a trivial CLI command can be
3972 implemented in Python:
3973
3974 @smallexample
3975 class HelloWorld (gdb.Command):
3976 """Greet the whole world."""
3977
3978 def __init__ (self):
3979 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
3980
3981 def invoke (self, arg, from_tty):
3982 print ("Hello, World!")
3983
3984 HelloWorld ()
3985 @end smallexample
3986
3987 The last line instantiates the class, and is necessary to trigger the
3988 registration of the command with @value{GDBN}. Depending on how the
3989 Python code is read into @value{GDBN}, you may need to import the
3990 @code{gdb} module explicitly.
3991
3992 @node Parameters In Python
3993 @subsubsection Parameters In Python
3994
3995 @cindex parameters in python
3996 @cindex python parameters
3997 @tindex gdb.Parameter
3998 @tindex Parameter
3999 You can implement new @value{GDBN} parameters using Python. A new
4000 parameter is implemented as an instance of the @code{gdb.Parameter}
4001 class.
4002
4003 Parameters are exposed to the user via the @code{set} and
4004 @code{show} commands. @xref{Help}.
4005
4006 There are many parameters that already exist and can be set in
4007 @value{GDBN}. Two examples are: @code{set follow fork} and
4008 @code{set charset}. Setting these parameters influences certain
4009 behavior in @value{GDBN}. Similarly, you can define parameters that
4010 can be used to influence behavior in custom Python scripts and commands.
4011
4012 @defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
4013 The object initializer for @code{Parameter} registers the new
4014 parameter with @value{GDBN}. This initializer is normally invoked
4015 from the subclass' own @code{__init__} method.
4016
4017 @var{name} is the name of the new parameter. If @var{name} consists
4018 of multiple words, then the initial words are looked for as prefix
4019 parameters. An example of this can be illustrated with the
4020 @code{set print} set of parameters. If @var{name} is
4021 @code{print foo}, then @code{print} will be searched as the prefix
4022 parameter. In this case the parameter can subsequently be accessed in
4023 @value{GDBN} as @code{set print foo}.
4024
4025 If @var{name} consists of multiple words, and no prefix parameter group
4026 can be found, an exception is raised.
4027
4028 @var{command-class} should be one of the @samp{COMMAND_} constants
4029 (@pxref{Commands In Python}). This argument tells @value{GDBN} how to
4030 categorize the new parameter in the help system.
4031
4032 @var{parameter-class} should be one of the @samp{PARAM_} constants
4033 defined below. This argument tells @value{GDBN} the type of the new
4034 parameter; this information is used for input validation and
4035 completion.
4036
4037 If @var{parameter-class} is @code{PARAM_ENUM}, then
4038 @var{enum-sequence} must be a sequence of strings. These strings
4039 represent the possible values for the parameter.
4040
4041 If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
4042 of a fourth argument will cause an exception to be thrown.
4043
4044 The help text for the new parameter is taken from the Python
4045 documentation string for the parameter's class, if there is one. If
4046 there is no documentation string, a default value is used.
4047 @end defun
4048
4049 @defvar Parameter.set_doc
4050 If this attribute exists, and is a string, then its value is used as
4051 the help text for this parameter's @code{set} command. The value is
4052 examined when @code{Parameter.__init__} is invoked; subsequent changes
4053 have no effect.
4054 @end defvar
4055
4056 @defvar Parameter.show_doc
4057 If this attribute exists, and is a string, then its value is used as
4058 the help text for this parameter's @code{show} command. The value is
4059 examined when @code{Parameter.__init__} is invoked; subsequent changes
4060 have no effect.
4061 @end defvar
4062
4063 @defvar Parameter.value
4064 The @code{value} attribute holds the underlying value of the
4065 parameter. It can be read and assigned to just as any other
4066 attribute. @value{GDBN} does validation when assignments are made.
4067 @end defvar
4068
4069 There are two methods that may be implemented in any @code{Parameter}
4070 class. These are:
4071
4072 @defun Parameter.get_set_string (self)
4073 If this method exists, @value{GDBN} will call it when a
4074 @var{parameter}'s value has been changed via the @code{set} API (for
4075 example, @kbd{set foo off}). The @code{value} attribute has already
4076 been populated with the new value and may be used in output. This
4077 method must return a string. If the returned string is not empty,
4078 @value{GDBN} will present it to the user.
4079
4080 If this method raises the @code{gdb.GdbError} exception
4081 (@pxref{Exception Handling}), then @value{GDBN} will print the
4082 exception's string and the @code{set} command will fail. Note,
4083 however, that the @code{value} attribute will not be reset in this
4084 case. So, if your parameter must validate values, it should store the
4085 old value internally and reset the exposed value, like so:
4086
4087 @smallexample
4088 class ExampleParam (gdb.Parameter):
4089 def __init__ (self, name):
4090 super (ExampleParam, self).__init__ (name,
4091 gdb.COMMAND_DATA,
4092 gdb.PARAM_BOOLEAN)
4093 self.value = True
4094 self.saved_value = True
4095 def validate(self):
4096 return False
4097 def get_set_string (self):
4098 if not self.validate():
4099 self.value = self.saved_value
4100 raise gdb.GdbError('Failed to validate')
4101 self.saved_value = self.value
4102 return ""
4103 @end smallexample
4104 @end defun
4105
4106 @defun Parameter.get_show_string (self, svalue)
4107 @value{GDBN} will call this method when a @var{parameter}'s
4108 @code{show} API has been invoked (for example, @kbd{show foo}). The
4109 argument @code{svalue} receives the string representation of the
4110 current value. This method must return a string.
4111 @end defun
4112
4113 When a new parameter is defined, its type must be specified. The
4114 available types are represented by constants defined in the @code{gdb}
4115 module:
4116
4117 @table @code
4118 @findex PARAM_BOOLEAN
4119 @findex gdb.PARAM_BOOLEAN
4120 @item gdb.PARAM_BOOLEAN
4121 The value is a plain boolean. The Python boolean values, @code{True}
4122 and @code{False} are the only valid values.
4123
4124 @findex PARAM_AUTO_BOOLEAN
4125 @findex gdb.PARAM_AUTO_BOOLEAN
4126 @item gdb.PARAM_AUTO_BOOLEAN
4127 The value has three possible states: true, false, and @samp{auto}. In
4128 Python, true and false are represented using boolean constants, and
4129 @samp{auto} is represented using @code{None}.
4130
4131 @findex PARAM_UINTEGER
4132 @findex gdb.PARAM_UINTEGER
4133 @item gdb.PARAM_UINTEGER
4134 The value is an unsigned integer. The value of 0 should be
4135 interpreted to mean ``unlimited''.
4136
4137 @findex PARAM_INTEGER
4138 @findex gdb.PARAM_INTEGER
4139 @item gdb.PARAM_INTEGER
4140 The value is a signed integer. The value of 0 should be interpreted
4141 to mean ``unlimited''.
4142
4143 @findex PARAM_STRING
4144 @findex gdb.PARAM_STRING
4145 @item gdb.PARAM_STRING
4146 The value is a string. When the user modifies the string, any escape
4147 sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
4148 translated into corresponding characters and encoded into the current
4149 host charset.
4150
4151 @findex PARAM_STRING_NOESCAPE
4152 @findex gdb.PARAM_STRING_NOESCAPE
4153 @item gdb.PARAM_STRING_NOESCAPE
4154 The value is a string. When the user modifies the string, escapes are
4155 passed through untranslated.
4156
4157 @findex PARAM_OPTIONAL_FILENAME
4158 @findex gdb.PARAM_OPTIONAL_FILENAME
4159 @item gdb.PARAM_OPTIONAL_FILENAME
4160 The value is a either a filename (a string), or @code{None}.
4161
4162 @findex PARAM_FILENAME
4163 @findex gdb.PARAM_FILENAME
4164 @item gdb.PARAM_FILENAME
4165 The value is a filename. This is just like
4166 @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
4167
4168 @findex PARAM_ZINTEGER
4169 @findex gdb.PARAM_ZINTEGER
4170 @item gdb.PARAM_ZINTEGER
4171 The value is an integer. This is like @code{PARAM_INTEGER}, except 0
4172 is interpreted as itself.
4173
4174 @findex PARAM_ZUINTEGER
4175 @findex gdb.PARAM_ZUINTEGER
4176 @item gdb.PARAM_ZUINTEGER
4177 The value is an unsigned integer. This is like @code{PARAM_INTEGER},
4178 except 0 is interpreted as itself, and the value cannot be negative.
4179
4180 @findex PARAM_ZUINTEGER_UNLIMITED
4181 @findex gdb.PARAM_ZUINTEGER_UNLIMITED
4182 @item gdb.PARAM_ZUINTEGER_UNLIMITED
4183 The value is a signed integer. This is like @code{PARAM_ZUINTEGER},
4184 except the special value -1 should be interpreted to mean
4185 ``unlimited''. Other negative values are not allowed.
4186
4187 @findex PARAM_ENUM
4188 @findex gdb.PARAM_ENUM
4189 @item gdb.PARAM_ENUM
4190 The value is a string, which must be one of a collection string
4191 constants provided when the parameter is created.
4192 @end table
4193
4194 @node Functions In Python
4195 @subsubsection Writing new convenience functions
4196
4197 @cindex writing convenience functions
4198 @cindex convenience functions in python
4199 @cindex python convenience functions
4200 @tindex gdb.Function
4201 @tindex Function
4202 You can implement new convenience functions (@pxref{Convenience Vars})
4203 in Python. A convenience function is an instance of a subclass of the
4204 class @code{gdb.Function}.
4205
4206 @defun Function.__init__ (name)
4207 The initializer for @code{Function} registers the new function with
4208 @value{GDBN}. The argument @var{name} is the name of the function,
4209 a string. The function will be visible to the user as a convenience
4210 variable of type @code{internal function}, whose name is the same as
4211 the given @var{name}.
4212
4213 The documentation for the new function is taken from the documentation
4214 string for the new class.
4215 @end defun
4216
4217 @defun Function.invoke (@var{*args})
4218 When a convenience function is evaluated, its arguments are converted
4219 to instances of @code{gdb.Value}, and then the function's
4220 @code{invoke} method is called. Note that @value{GDBN} does not
4221 predetermine the arity of convenience functions. Instead, all
4222 available arguments are passed to @code{invoke}, following the
4223 standard Python calling convention. In particular, a convenience
4224 function can have default values for parameters without ill effect.
4225
4226 The return value of this method is used as its value in the enclosing
4227 expression. If an ordinary Python value is returned, it is converted
4228 to a @code{gdb.Value} following the usual rules.
4229 @end defun
4230
4231 The following code snippet shows how a trivial convenience function can
4232 be implemented in Python:
4233
4234 @smallexample
4235 class Greet (gdb.Function):
4236 """Return string to greet someone.
4237 Takes a name as argument."""
4238
4239 def __init__ (self):
4240 super (Greet, self).__init__ ("greet")
4241
4242 def invoke (self, name):
4243 return "Hello, %s!" % name.string ()
4244
4245 Greet ()
4246 @end smallexample
4247
4248 The last line instantiates the class, and is necessary to trigger the
4249 registration of the function with @value{GDBN}. Depending on how the
4250 Python code is read into @value{GDBN}, you may need to import the
4251 @code{gdb} module explicitly.
4252
4253 Now you can use the function in an expression:
4254
4255 @smallexample
4256 (gdb) print $greet("Bob")
4257 $1 = "Hello, Bob!"
4258 @end smallexample
4259
4260 @node Progspaces In Python
4261 @subsubsection Program Spaces In Python
4262
4263 @cindex progspaces in python
4264 @tindex gdb.Progspace
4265 @tindex Progspace
4266 A program space, or @dfn{progspace}, represents a symbolic view
4267 of an address space.
4268 It consists of all of the objfiles of the program.
4269 @xref{Objfiles In Python}.
4270 @xref{Inferiors Connections and Programs, program spaces}, for more details
4271 about program spaces.
4272
4273 The following progspace-related functions are available in the
4274 @code{gdb} module:
4275
4276 @findex gdb.current_progspace
4277 @defun gdb.current_progspace ()
4278 This function returns the program space of the currently selected inferior.
4279 @xref{Inferiors Connections and Programs}. This is identical to
4280 @code{gdb.selected_inferior().progspace} (@pxref{Inferiors In Python}) and is
4281 included for historical compatibility.
4282 @end defun
4283
4284 @findex gdb.progspaces
4285 @defun gdb.progspaces ()
4286 Return a sequence of all the progspaces currently known to @value{GDBN}.
4287 @end defun
4288
4289 Each progspace is represented by an instance of the @code{gdb.Progspace}
4290 class.
4291
4292 @defvar Progspace.filename
4293 The file name of the progspace as a string.
4294 @end defvar
4295
4296 @defvar Progspace.pretty_printers
4297 The @code{pretty_printers} attribute is a list of functions. It is
4298 used to look up pretty-printers. A @code{Value} is passed to each
4299 function in order; if the function returns @code{None}, then the
4300 search continues. Otherwise, the return value should be an object
4301 which is used to format the value. @xref{Pretty Printing API}, for more
4302 information.
4303 @end defvar
4304
4305 @defvar Progspace.type_printers
4306 The @code{type_printers} attribute is a list of type printer objects.
4307 @xref{Type Printing API}, for more information.
4308 @end defvar
4309
4310 @defvar Progspace.frame_filters
4311 The @code{frame_filters} attribute is a dictionary of frame filter
4312 objects. @xref{Frame Filter API}, for more information.
4313 @end defvar
4314
4315 A program space has the following methods:
4316
4317 @findex Progspace.block_for_pc
4318 @defun Progspace.block_for_pc (pc)
4319 Return the innermost @code{gdb.Block} containing the given @var{pc}
4320 value. If the block cannot be found for the @var{pc} value specified,
4321 the function will return @code{None}.
4322 @end defun
4323
4324 @findex Progspace.find_pc_line
4325 @defun Progspace.find_pc_line (pc)
4326 Return the @code{gdb.Symtab_and_line} object corresponding to the
4327 @var{pc} value. @xref{Symbol Tables In Python}. If an invalid value
4328 of @var{pc} is passed as an argument, then the @code{symtab} and
4329 @code{line} attributes of the returned @code{gdb.Symtab_and_line}
4330 object will be @code{None} and 0 respectively.
4331 @end defun
4332
4333 @findex Progspace.is_valid
4334 @defun Progspace.is_valid ()
4335 Returns @code{True} if the @code{gdb.Progspace} object is valid,
4336 @code{False} if not. A @code{gdb.Progspace} object can become invalid
4337 if the program space file it refers to is not referenced by any
4338 inferior. All other @code{gdb.Progspace} methods will throw an
4339 exception if it is invalid at the time the method is called.
4340 @end defun
4341
4342 @findex Progspace.objfiles
4343 @defun Progspace.objfiles ()
4344 Return a sequence of all the objfiles referenced by this program
4345 space. @xref{Objfiles In Python}.
4346 @end defun
4347
4348 @findex Progspace.solib_name
4349 @defun Progspace.solib_name (address)
4350 Return the name of the shared library holding the given @var{address}
4351 as a string, or @code{None}.
4352 @end defun
4353
4354 One may add arbitrary attributes to @code{gdb.Progspace} objects
4355 in the usual Python way.
4356 This is useful if, for example, one needs to do some extra record keeping
4357 associated with the program space.
4358
4359 In this contrived example, we want to perform some processing when
4360 an objfile with a certain symbol is loaded, but we only want to do
4361 this once because it is expensive. To achieve this we record the results
4362 with the program space because we can't predict when the desired objfile
4363 will be loaded.
4364
4365 @smallexample
4366 (gdb) python
4367 def clear_objfiles_handler(event):
4368 event.progspace.expensive_computation = None
4369 def expensive(symbol):
4370 """A mock routine to perform an "expensive" computation on symbol."""
4371 print ("Computing the answer to the ultimate question ...")
4372 return 42
4373 def new_objfile_handler(event):
4374 objfile = event.new_objfile
4375 progspace = objfile.progspace
4376 if not hasattr(progspace, 'expensive_computation') or \
4377 progspace.expensive_computation is None:
4378 # We use 'main' for the symbol to keep the example simple.
4379 # Note: There's no current way to constrain the lookup
4380 # to one objfile.
4381 symbol = gdb.lookup_global_symbol('main')
4382 if symbol is not None:
4383 progspace.expensive_computation = expensive(symbol)
4384 gdb.events.clear_objfiles.connect(clear_objfiles_handler)
4385 gdb.events.new_objfile.connect(new_objfile_handler)
4386 end
4387 (gdb) file /tmp/hello
4388 Reading symbols from /tmp/hello...
4389 Computing the answer to the ultimate question ...
4390 (gdb) python print gdb.current_progspace().expensive_computation
4391 42
4392 (gdb) run
4393 Starting program: /tmp/hello
4394 Hello.
4395 [Inferior 1 (process 4242) exited normally]
4396 @end smallexample
4397
4398 @node Objfiles In Python
4399 @subsubsection Objfiles In Python
4400
4401 @cindex objfiles in python
4402 @tindex gdb.Objfile
4403 @tindex Objfile
4404 @value{GDBN} loads symbols for an inferior from various
4405 symbol-containing files (@pxref{Files}). These include the primary
4406 executable file, any shared libraries used by the inferior, and any
4407 separate debug info files (@pxref{Separate Debug Files}).
4408 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
4409
4410 The following objfile-related functions are available in the
4411 @code{gdb} module:
4412
4413 @findex gdb.current_objfile
4414 @defun gdb.current_objfile ()
4415 When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
4416 sets the ``current objfile'' to the corresponding objfile. This
4417 function returns the current objfile. If there is no current objfile,
4418 this function returns @code{None}.
4419 @end defun
4420
4421 @findex gdb.objfiles
4422 @defun gdb.objfiles ()
4423 Return a sequence of objfiles referenced by the current program space.
4424 @xref{Objfiles In Python}, and @ref{Progspaces In Python}. This is identical
4425 to @code{gdb.selected_inferior().progspace.objfiles()} and is included for
4426 historical compatibility.
4427 @end defun
4428
4429 @findex gdb.lookup_objfile
4430 @defun gdb.lookup_objfile (name @r{[}, by_build_id{]})
4431 Look up @var{name}, a file name or build ID, in the list of objfiles
4432 for the current program space (@pxref{Progspaces In Python}).
4433 If the objfile is not found throw the Python @code{ValueError} exception.
4434
4435 If @var{name} is a relative file name, then it will match any
4436 source file name with the same trailing components. For example, if
4437 @var{name} is @samp{gcc/expr.c}, then it will match source file
4438 name of @file{/build/trunk/gcc/expr.c}, but not
4439 @file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
4440
4441 If @var{by_build_id} is provided and is @code{True} then @var{name}
4442 is the build ID of the objfile. Otherwise, @var{name} is a file name.
4443 This is supported only on some operating systems, notably those which use
4444 the ELF format for binary files and the @sc{gnu} Binutils. For more details
4445 about this feature, see the description of the @option{--build-id}
4446 command-line option in @ref{Options, , Command Line Options, ld,
4447 The GNU Linker}.
4448 @end defun
4449
4450 Each objfile is represented by an instance of the @code{gdb.Objfile}
4451 class.
4452
4453 @defvar Objfile.filename
4454 The file name of the objfile as a string, with symbolic links resolved.
4455
4456 The value is @code{None} if the objfile is no longer valid.
4457 See the @code{gdb.Objfile.is_valid} method, described below.
4458 @end defvar
4459
4460 @defvar Objfile.username
4461 The file name of the objfile as specified by the user as a string.
4462
4463 The value is @code{None} if the objfile is no longer valid.
4464 See the @code{gdb.Objfile.is_valid} method, described below.
4465 @end defvar
4466
4467 @defvar Objfile.owner
4468 For separate debug info objfiles this is the corresponding @code{gdb.Objfile}
4469 object that debug info is being provided for.
4470 Otherwise this is @code{None}.
4471 Separate debug info objfiles are added with the
4472 @code{gdb.Objfile.add_separate_debug_file} method, described below.
4473 @end defvar
4474
4475 @defvar Objfile.build_id
4476 The build ID of the objfile as a string.
4477 If the objfile does not have a build ID then the value is @code{None}.
4478
4479 This is supported only on some operating systems, notably those which use
4480 the ELF format for binary files and the @sc{gnu} Binutils. For more details
4481 about this feature, see the description of the @option{--build-id}
4482 command-line option in @ref{Options, , Command Line Options, ld,
4483 The GNU Linker}.
4484 @end defvar
4485
4486 @defvar Objfile.progspace
4487 The containing program space of the objfile as a @code{gdb.Progspace}
4488 object. @xref{Progspaces In Python}.
4489 @end defvar
4490
4491 @defvar Objfile.pretty_printers
4492 The @code{pretty_printers} attribute is a list of functions. It is
4493 used to look up pretty-printers. A @code{Value} is passed to each
4494 function in order; if the function returns @code{None}, then the
4495 search continues. Otherwise, the return value should be an object
4496 which is used to format the value. @xref{Pretty Printing API}, for more
4497 information.
4498 @end defvar
4499
4500 @defvar Objfile.type_printers
4501 The @code{type_printers} attribute is a list of type printer objects.
4502 @xref{Type Printing API}, for more information.
4503 @end defvar
4504
4505 @defvar Objfile.frame_filters
4506 The @code{frame_filters} attribute is a dictionary of frame filter
4507 objects. @xref{Frame Filter API}, for more information.
4508 @end defvar
4509
4510 One may add arbitrary attributes to @code{gdb.Objfile} objects
4511 in the usual Python way.
4512 This is useful if, for example, one needs to do some extra record keeping
4513 associated with the objfile.
4514
4515 In this contrived example we record the time when @value{GDBN}
4516 loaded the objfile.
4517
4518 @smallexample
4519 (gdb) python
4520 import datetime
4521 def new_objfile_handler(event):
4522 # Set the time_loaded attribute of the new objfile.
4523 event.new_objfile.time_loaded = datetime.datetime.today()
4524 gdb.events.new_objfile.connect(new_objfile_handler)
4525 end
4526 (gdb) file ./hello
4527 Reading symbols from ./hello...
4528 (gdb) python print gdb.objfiles()[0].time_loaded
4529 2014-10-09 11:41:36.770345
4530 @end smallexample
4531
4532 A @code{gdb.Objfile} object has the following methods:
4533
4534 @defun Objfile.is_valid ()
4535 Returns @code{True} if the @code{gdb.Objfile} object is valid,
4536 @code{False} if not. A @code{gdb.Objfile} object can become invalid
4537 if the object file it refers to is not loaded in @value{GDBN} any
4538 longer. All other @code{gdb.Objfile} methods will throw an exception
4539 if it is invalid at the time the method is called.
4540 @end defun
4541
4542 @defun Objfile.add_separate_debug_file (file)
4543 Add @var{file} to the list of files that @value{GDBN} will search for
4544 debug information for the objfile.
4545 This is useful when the debug info has been removed from the program
4546 and stored in a separate file. @value{GDBN} has built-in support for
4547 finding separate debug info files (@pxref{Separate Debug Files}), but if
4548 the file doesn't live in one of the standard places that @value{GDBN}
4549 searches then this function can be used to add a debug info file
4550 from a different place.
4551 @end defun
4552
4553 @defun Objfile.lookup_global_symbol (name @r{[}, domain@r{]})
4554 Search for a global symbol named @var{name} in this objfile. Optionally, the
4555 search scope can be restricted with the @var{domain} argument.
4556 The @var{domain} argument must be a domain constant defined in the @code{gdb}
4557 module and described in @ref{Symbols In Python}. This function is similar to
4558 @code{gdb.lookup_global_symbol}, except that the search is limited to this
4559 objfile.
4560
4561 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
4562 is not found.
4563 @end defun
4564
4565 @defun Objfile.lookup_static_symbol (name @r{[}, domain@r{]})
4566 Like @code{Objfile.lookup_global_symbol}, but searches for a global
4567 symbol with static linkage named @var{name} in this objfile.
4568 @end defun
4569
4570 @node Frames In Python
4571 @subsubsection Accessing inferior stack frames from Python
4572
4573 @cindex frames in python
4574 When the debugged program stops, @value{GDBN} is able to analyze its call
4575 stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
4576 represents a frame in the stack. A @code{gdb.Frame} object is only valid
4577 while its corresponding frame exists in the inferior's stack. If you try
4578 to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
4579 exception (@pxref{Exception Handling}).
4580
4581 Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
4582 operator, like:
4583
4584 @smallexample
4585 (@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
4586 True
4587 @end smallexample
4588
4589 The following frame-related functions are available in the @code{gdb} module:
4590
4591 @findex gdb.selected_frame
4592 @defun gdb.selected_frame ()
4593 Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
4594 @end defun
4595
4596 @findex gdb.newest_frame
4597 @defun gdb.newest_frame ()
4598 Return the newest frame object for the selected thread.
4599 @end defun
4600
4601 @defun gdb.frame_stop_reason_string (reason)
4602 Return a string explaining the reason why @value{GDBN} stopped unwinding
4603 frames, as expressed by the given @var{reason} code (an integer, see the
4604 @code{unwind_stop_reason} method further down in this section).
4605 @end defun
4606
4607 @findex gdb.invalidate_cached_frames
4608 @defun gdb.invalidate_cached_frames
4609 @value{GDBN} internally keeps a cache of the frames that have been
4610 unwound. This function invalidates this cache.
4611
4612 This function should not generally be called by ordinary Python code.
4613 It is documented for the sake of completeness.
4614 @end defun
4615
4616 A @code{gdb.Frame} object has the following methods:
4617
4618 @defun Frame.is_valid ()
4619 Returns true if the @code{gdb.Frame} object is valid, false if not.
4620 A frame object can become invalid if the frame it refers to doesn't
4621 exist anymore in the inferior. All @code{gdb.Frame} methods will throw
4622 an exception if it is invalid at the time the method is called.
4623 @end defun
4624
4625 @defun Frame.name ()
4626 Returns the function name of the frame, or @code{None} if it can't be
4627 obtained.
4628 @end defun
4629
4630 @defun Frame.architecture ()
4631 Returns the @code{gdb.Architecture} object corresponding to the frame's
4632 architecture. @xref{Architectures In Python}.
4633 @end defun
4634
4635 @defun Frame.type ()
4636 Returns the type of the frame. The value can be one of:
4637 @table @code
4638 @item gdb.NORMAL_FRAME
4639 An ordinary stack frame.
4640
4641 @item gdb.DUMMY_FRAME
4642 A fake stack frame that was created by @value{GDBN} when performing an
4643 inferior function call.
4644
4645 @item gdb.INLINE_FRAME
4646 A frame representing an inlined function. The function was inlined
4647 into a @code{gdb.NORMAL_FRAME} that is older than this one.
4648
4649 @item gdb.TAILCALL_FRAME
4650 A frame representing a tail call. @xref{Tail Call Frames}.
4651
4652 @item gdb.SIGTRAMP_FRAME
4653 A signal trampoline frame. This is the frame created by the OS when
4654 it calls into a signal handler.
4655
4656 @item gdb.ARCH_FRAME
4657 A fake stack frame representing a cross-architecture call.
4658
4659 @item gdb.SENTINEL_FRAME
4660 This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
4661 newest frame.
4662 @end table
4663 @end defun
4664
4665 @defun Frame.unwind_stop_reason ()
4666 Return an integer representing the reason why it's not possible to find
4667 more frames toward the outermost frame. Use
4668 @code{gdb.frame_stop_reason_string} to convert the value returned by this
4669 function to a string. The value can be one of:
4670
4671 @table @code
4672 @item gdb.FRAME_UNWIND_NO_REASON
4673 No particular reason (older frames should be available).
4674
4675 @item gdb.FRAME_UNWIND_NULL_ID
4676 The previous frame's analyzer returns an invalid result. This is no
4677 longer used by @value{GDBN}, and is kept only for backward
4678 compatibility.
4679
4680 @item gdb.FRAME_UNWIND_OUTERMOST
4681 This frame is the outermost.
4682
4683 @item gdb.FRAME_UNWIND_UNAVAILABLE
4684 Cannot unwind further, because that would require knowing the
4685 values of registers or memory that have not been collected.
4686
4687 @item gdb.FRAME_UNWIND_INNER_ID
4688 This frame ID looks like it ought to belong to a NEXT frame,
4689 but we got it for a PREV frame. Normally, this is a sign of
4690 unwinder failure. It could also indicate stack corruption.
4691
4692 @item gdb.FRAME_UNWIND_SAME_ID
4693 This frame has the same ID as the previous one. That means
4694 that unwinding further would almost certainly give us another
4695 frame with exactly the same ID, so break the chain. Normally,
4696 this is a sign of unwinder failure. It could also indicate
4697 stack corruption.
4698
4699 @item gdb.FRAME_UNWIND_NO_SAVED_PC
4700 The frame unwinder did not find any saved PC, but we needed
4701 one to unwind further.
4702
4703 @item gdb.FRAME_UNWIND_MEMORY_ERROR
4704 The frame unwinder caused an error while trying to access memory.
4705
4706 @item gdb.FRAME_UNWIND_FIRST_ERROR
4707 Any stop reason greater or equal to this value indicates some kind
4708 of error. This special value facilitates writing code that tests
4709 for errors in unwinding in a way that will work correctly even if
4710 the list of the other values is modified in future @value{GDBN}
4711 versions. Using it, you could write:
4712 @smallexample
4713 reason = gdb.selected_frame().unwind_stop_reason ()
4714 reason_str = gdb.frame_stop_reason_string (reason)
4715 if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
4716 print ("An error occured: %s" % reason_str)
4717 @end smallexample
4718 @end table
4719
4720 @end defun
4721
4722 @defun Frame.pc ()
4723 Returns the frame's resume address.
4724 @end defun
4725
4726 @defun Frame.block ()
4727 Return the frame's code block. @xref{Blocks In Python}. If the frame
4728 does not have a block -- for example, if there is no debugging
4729 information for the code in question -- then this will throw an
4730 exception.
4731 @end defun
4732
4733 @defun Frame.function ()
4734 Return the symbol for the function corresponding to this frame.
4735 @xref{Symbols In Python}.
4736 @end defun
4737
4738 @defun Frame.older ()
4739 Return the frame that called this frame.
4740 @end defun
4741
4742 @defun Frame.newer ()
4743 Return the frame called by this frame.
4744 @end defun
4745
4746 @defun Frame.find_sal ()
4747 Return the frame's symtab and line object.
4748 @xref{Symbol Tables In Python}.
4749 @end defun
4750
4751 @anchor{gdbpy_frame_read_register}
4752 @defun Frame.read_register (register)
4753 Return the value of @var{register} in this frame. Returns a
4754 @code{Gdb.Value} object. Throws an exception if @var{register} does
4755 not exist. The @var{register} argument must be one of the following:
4756 @enumerate
4757 @item
4758 A string that is the name of a valid register (e.g., @code{'sp'} or
4759 @code{'rax'}).
4760 @item
4761 A @code{gdb.RegisterDescriptor} object (@pxref{Registers In Python}).
4762 @item
4763 A @value{GDBN} internal, platform specific number. Using these
4764 numbers is supported for historic reasons, but is not recommended as
4765 future changes to @value{GDBN} could change the mapping between
4766 numbers and the registers they represent, breaking any Python code
4767 that uses the platform-specific numbers. The numbers are usually
4768 found in the corresponding @file{@var{platform}-tdep.h} file in the
4769 @value{GDBN} source tree.
4770 @end enumerate
4771 Using a string to access registers will be slightly slower than the
4772 other two methods as @value{GDBN} must look up the mapping between
4773 name and internal register number. If performance is critical
4774 consider looking up and caching a @code{gdb.RegisterDescriptor}
4775 object.
4776 @end defun
4777
4778 @defun Frame.read_var (variable @r{[}, block@r{]})
4779 Return the value of @var{variable} in this frame. If the optional
4780 argument @var{block} is provided, search for the variable from that
4781 block; otherwise start at the frame's current block (which is
4782 determined by the frame's current program counter). The @var{variable}
4783 argument must be a string or a @code{gdb.Symbol} object; @var{block} must be a
4784 @code{gdb.Block} object.
4785 @end defun
4786
4787 @defun Frame.select ()
4788 Set this frame to be the selected frame. @xref{Stack, ,Examining the
4789 Stack}.
4790 @end defun
4791
4792 @node Blocks In Python
4793 @subsubsection Accessing blocks from Python
4794
4795 @cindex blocks in python
4796 @tindex gdb.Block
4797
4798 In @value{GDBN}, symbols are stored in blocks. A block corresponds
4799 roughly to a scope in the source code. Blocks are organized
4800 hierarchically, and are represented individually in Python as a
4801 @code{gdb.Block}. Blocks rely on debugging information being
4802 available.
4803
4804 A frame has a block. Please see @ref{Frames In Python}, for a more
4805 in-depth discussion of frames.
4806
4807 The outermost block is known as the @dfn{global block}. The global
4808 block typically holds public global variables and functions.
4809
4810 The block nested just inside the global block is the @dfn{static
4811 block}. The static block typically holds file-scoped variables and
4812 functions.
4813
4814 @value{GDBN} provides a method to get a block's superblock, but there
4815 is currently no way to examine the sub-blocks of a block, or to
4816 iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
4817 Python}).
4818
4819 Here is a short example that should help explain blocks:
4820
4821 @smallexample
4822 /* This is in the global block. */
4823 int global;
4824
4825 /* This is in the static block. */
4826 static int file_scope;
4827
4828 /* 'function' is in the global block, and 'argument' is
4829 in a block nested inside of 'function'. */
4830 int function (int argument)
4831 @{
4832 /* 'local' is in a block inside 'function'. It may or may
4833 not be in the same block as 'argument'. */
4834 int local;
4835
4836 @{
4837 /* 'inner' is in a block whose superblock is the one holding
4838 'local'. */
4839 int inner;
4840
4841 /* If this call is expanded by the compiler, you may see
4842 a nested block here whose function is 'inline_function'
4843 and whose superblock is the one holding 'inner'. */
4844 inline_function ();
4845 @}
4846 @}
4847 @end smallexample
4848
4849 A @code{gdb.Block} is iterable. The iterator returns the symbols
4850 (@pxref{Symbols In Python}) local to the block. Python programs
4851 should not assume that a specific block object will always contain a
4852 given symbol, since changes in @value{GDBN} features and
4853 infrastructure may cause symbols move across blocks in a symbol
4854 table. You can also use Python's @dfn{dictionary syntax} to access
4855 variables in this block, e.g.:
4856
4857 @smallexample
4858 symbol = some_block['variable'] # symbol is of type gdb.Symbol
4859 @end smallexample
4860
4861 The following block-related functions are available in the @code{gdb}
4862 module:
4863
4864 @findex gdb.block_for_pc
4865 @defun gdb.block_for_pc (pc)
4866 Return the innermost @code{gdb.Block} containing the given @var{pc}
4867 value. If the block cannot be found for the @var{pc} value specified,
4868 the function will return @code{None}. This is identical to
4869 @code{gdb.current_progspace().block_for_pc(pc)} and is included for
4870 historical compatibility.
4871 @end defun
4872
4873 A @code{gdb.Block} object has the following methods:
4874
4875 @defun Block.is_valid ()
4876 Returns @code{True} if the @code{gdb.Block} object is valid,
4877 @code{False} if not. A block object can become invalid if the block it
4878 refers to doesn't exist anymore in the inferior. All other
4879 @code{gdb.Block} methods will throw an exception if it is invalid at
4880 the time the method is called. The block's validity is also checked
4881 during iteration over symbols of the block.
4882 @end defun
4883
4884 A @code{gdb.Block} object has the following attributes:
4885
4886 @defvar Block.start
4887 The start address of the block. This attribute is not writable.
4888 @end defvar
4889
4890 @defvar Block.end
4891 One past the last address that appears in the block. This attribute
4892 is not writable.
4893 @end defvar
4894
4895 @defvar Block.function
4896 The name of the block represented as a @code{gdb.Symbol}. If the
4897 block is not named, then this attribute holds @code{None}. This
4898 attribute is not writable.
4899
4900 For ordinary function blocks, the superblock is the static block.
4901 However, you should note that it is possible for a function block to
4902 have a superblock that is not the static block -- for instance this
4903 happens for an inlined function.
4904 @end defvar
4905
4906 @defvar Block.superblock
4907 The block containing this block. If this parent block does not exist,
4908 this attribute holds @code{None}. This attribute is not writable.
4909 @end defvar
4910
4911 @defvar Block.global_block
4912 The global block associated with this block. This attribute is not
4913 writable.
4914 @end defvar
4915
4916 @defvar Block.static_block
4917 The static block associated with this block. This attribute is not
4918 writable.
4919 @end defvar
4920
4921 @defvar Block.is_global
4922 @code{True} if the @code{gdb.Block} object is a global block,
4923 @code{False} if not. This attribute is not
4924 writable.
4925 @end defvar
4926
4927 @defvar Block.is_static
4928 @code{True} if the @code{gdb.Block} object is a static block,
4929 @code{False} if not. This attribute is not writable.
4930 @end defvar
4931
4932 @node Symbols In Python
4933 @subsubsection Python representation of Symbols
4934
4935 @cindex symbols in python
4936 @tindex gdb.Symbol
4937
4938 @value{GDBN} represents every variable, function and type as an
4939 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
4940 Similarly, Python represents these symbols in @value{GDBN} with the
4941 @code{gdb.Symbol} object.
4942
4943 The following symbol-related functions are available in the @code{gdb}
4944 module:
4945
4946 @findex gdb.lookup_symbol
4947 @defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
4948 This function searches for a symbol by name. The search scope can be
4949 restricted to the parameters defined in the optional domain and block
4950 arguments.
4951
4952 @var{name} is the name of the symbol. It must be a string. The
4953 optional @var{block} argument restricts the search to symbols visible
4954 in that @var{block}. The @var{block} argument must be a
4955 @code{gdb.Block} object. If omitted, the block for the current frame
4956 is used. The optional @var{domain} argument restricts
4957 the search to the domain type. The @var{domain} argument must be a
4958 domain constant defined in the @code{gdb} module and described later
4959 in this chapter.
4960
4961 The result is a tuple of two elements.
4962 The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
4963 is not found.
4964 If the symbol is found, the second element is @code{True} if the symbol
4965 is a field of a method's object (e.g., @code{this} in C@t{++}),
4966 otherwise it is @code{False}.
4967 If the symbol is not found, the second element is @code{False}.
4968 @end defun
4969
4970 @findex gdb.lookup_global_symbol
4971 @defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
4972 This function searches for a global symbol by name.
4973 The search scope can be restricted to by the domain argument.
4974
4975 @var{name} is the name of the symbol. It must be a string.
4976 The optional @var{domain} argument restricts the search to the domain type.
4977 The @var{domain} argument must be a domain constant defined in the @code{gdb}
4978 module and described later in this chapter.
4979
4980 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
4981 is not found.
4982 @end defun
4983
4984 @findex gdb.lookup_static_symbol
4985 @defun gdb.lookup_static_symbol (name @r{[}, domain@r{]})
4986 This function searches for a global symbol with static linkage by name.
4987 The search scope can be restricted to by the domain argument.
4988
4989 @var{name} is the name of the symbol. It must be a string.
4990 The optional @var{domain} argument restricts the search to the domain type.
4991 The @var{domain} argument must be a domain constant defined in the @code{gdb}
4992 module and described later in this chapter.
4993
4994 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
4995 is not found.
4996
4997 Note that this function will not find function-scoped static variables. To look
4998 up such variables, iterate over the variables of the function's
4999 @code{gdb.Block} and check that @code{block.addr_class} is
5000 @code{gdb.SYMBOL_LOC_STATIC}.
5001
5002 There can be multiple global symbols with static linkage with the same
5003 name. This function will only return the first matching symbol that
5004 it finds. Which symbol is found depends on where @value{GDBN} is
5005 currently stopped, as @value{GDBN} will first search for matching
5006 symbols in the current object file, and then search all other object
5007 files. If the application is not yet running then @value{GDBN} will
5008 search all object files in the order they appear in the debug
5009 information.
5010 @end defun
5011
5012 @findex gdb.lookup_static_symbols
5013 @defun gdb.lookup_static_symbols (name @r{[}, domain@r{]})
5014 Similar to @code{gdb.lookup_static_symbol}, this function searches for
5015 global symbols with static linkage by name, and optionally restricted
5016 by the domain argument. However, this function returns a list of all
5017 matching symbols found, not just the first one.
5018
5019 @var{name} is the name of the symbol. It must be a string.
5020 The optional @var{domain} argument restricts the search to the domain type.
5021 The @var{domain} argument must be a domain constant defined in the @code{gdb}
5022 module and described later in this chapter.
5023
5024 The result is a list of @code{gdb.Symbol} objects which could be empty
5025 if no matching symbols were found.
5026
5027 Note that this function will not find function-scoped static variables. To look
5028 up such variables, iterate over the variables of the function's
5029 @code{gdb.Block} and check that @code{block.addr_class} is
5030 @code{gdb.SYMBOL_LOC_STATIC}.
5031 @end defun
5032
5033 A @code{gdb.Symbol} object has the following attributes:
5034
5035 @defvar Symbol.type
5036 The type of the symbol or @code{None} if no type is recorded.
5037 This attribute is represented as a @code{gdb.Type} object.
5038 @xref{Types In Python}. This attribute is not writable.
5039 @end defvar
5040
5041 @defvar Symbol.symtab
5042 The symbol table in which the symbol appears. This attribute is
5043 represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
5044 Python}. This attribute is not writable.
5045 @end defvar
5046
5047 @defvar Symbol.line
5048 The line number in the source code at which the symbol was defined.
5049 This is an integer.
5050 @end defvar
5051
5052 @defvar Symbol.name
5053 The name of the symbol as a string. This attribute is not writable.
5054 @end defvar
5055
5056 @defvar Symbol.linkage_name
5057 The name of the symbol, as used by the linker (i.e., may be mangled).
5058 This attribute is not writable.
5059 @end defvar
5060
5061 @defvar Symbol.print_name
5062 The name of the symbol in a form suitable for output. This is either
5063 @code{name} or @code{linkage_name}, depending on whether the user
5064 asked @value{GDBN} to display demangled or mangled names.
5065 @end defvar
5066
5067 @defvar Symbol.addr_class
5068 The address class of the symbol. This classifies how to find the value
5069 of a symbol. Each address class is a constant defined in the
5070 @code{gdb} module and described later in this chapter.
5071 @end defvar
5072
5073 @defvar Symbol.needs_frame
5074 This is @code{True} if evaluating this symbol's value requires a frame
5075 (@pxref{Frames In Python}) and @code{False} otherwise. Typically,
5076 local variables will require a frame, but other symbols will not.
5077 @end defvar
5078
5079 @defvar Symbol.is_argument
5080 @code{True} if the symbol is an argument of a function.
5081 @end defvar
5082
5083 @defvar Symbol.is_constant
5084 @code{True} if the symbol is a constant.
5085 @end defvar
5086
5087 @defvar Symbol.is_function
5088 @code{True} if the symbol is a function or a method.
5089 @end defvar
5090
5091 @defvar Symbol.is_variable
5092 @code{True} if the symbol is a variable.
5093 @end defvar
5094
5095 A @code{gdb.Symbol} object has the following methods:
5096
5097 @defun Symbol.is_valid ()
5098 Returns @code{True} if the @code{gdb.Symbol} object is valid,
5099 @code{False} if not. A @code{gdb.Symbol} object can become invalid if
5100 the symbol it refers to does not exist in @value{GDBN} any longer.
5101 All other @code{gdb.Symbol} methods will throw an exception if it is
5102 invalid at the time the method is called.
5103 @end defun
5104
5105 @defun Symbol.value (@r{[}frame@r{]})
5106 Compute the value of the symbol, as a @code{gdb.Value}. For
5107 functions, this computes the address of the function, cast to the
5108 appropriate type. If the symbol requires a frame in order to compute
5109 its value, then @var{frame} must be given. If @var{frame} is not
5110 given, or if @var{frame} is invalid, then this method will throw an
5111 exception.
5112 @end defun
5113
5114 The available domain categories in @code{gdb.Symbol} are represented
5115 as constants in the @code{gdb} module:
5116
5117 @vtable @code
5118 @vindex SYMBOL_UNDEF_DOMAIN
5119 @item gdb.SYMBOL_UNDEF_DOMAIN
5120 This is used when a domain has not been discovered or none of the
5121 following domains apply. This usually indicates an error either
5122 in the symbol information or in @value{GDBN}'s handling of symbols.
5123
5124 @vindex SYMBOL_VAR_DOMAIN
5125 @item gdb.SYMBOL_VAR_DOMAIN
5126 This domain contains variables, function names, typedef names and enum
5127 type values.
5128
5129 @vindex SYMBOL_STRUCT_DOMAIN
5130 @item gdb.SYMBOL_STRUCT_DOMAIN
5131 This domain holds struct, union and enum type names.
5132
5133 @vindex SYMBOL_LABEL_DOMAIN
5134 @item gdb.SYMBOL_LABEL_DOMAIN
5135 This domain contains names of labels (for gotos).
5136
5137 @vindex SYMBOL_MODULE_DOMAIN
5138 @item gdb.SYMBOL_MODULE_DOMAIN
5139 This domain contains names of Fortran module types.
5140
5141 @vindex SYMBOL_COMMON_BLOCK_DOMAIN
5142 @item gdb.SYMBOL_COMMON_BLOCK_DOMAIN
5143 This domain contains names of Fortran common blocks.
5144 @end vtable
5145
5146 The available address class categories in @code{gdb.Symbol} are represented
5147 as constants in the @code{gdb} module:
5148
5149 @vtable @code
5150 @vindex SYMBOL_LOC_UNDEF
5151 @item gdb.SYMBOL_LOC_UNDEF
5152 If this is returned by address class, it indicates an error either in
5153 the symbol information or in @value{GDBN}'s handling of symbols.
5154
5155 @vindex SYMBOL_LOC_CONST
5156 @item gdb.SYMBOL_LOC_CONST
5157 Value is constant int.
5158
5159 @vindex SYMBOL_LOC_STATIC
5160 @item gdb.SYMBOL_LOC_STATIC
5161 Value is at a fixed address.
5162
5163 @vindex SYMBOL_LOC_REGISTER
5164 @item gdb.SYMBOL_LOC_REGISTER
5165 Value is in a register.
5166
5167 @vindex SYMBOL_LOC_ARG
5168 @item gdb.SYMBOL_LOC_ARG
5169 Value is an argument. This value is at the offset stored within the
5170 symbol inside the frame's argument list.
5171
5172 @vindex SYMBOL_LOC_REF_ARG
5173 @item gdb.SYMBOL_LOC_REF_ARG
5174 Value address is stored in the frame's argument list. Just like
5175 @code{LOC_ARG} except that the value's address is stored at the
5176 offset, not the value itself.
5177
5178 @vindex SYMBOL_LOC_REGPARM_ADDR
5179 @item gdb.SYMBOL_LOC_REGPARM_ADDR
5180 Value is a specified register. Just like @code{LOC_REGISTER} except
5181 the register holds the address of the argument instead of the argument
5182 itself.
5183
5184 @vindex SYMBOL_LOC_LOCAL
5185 @item gdb.SYMBOL_LOC_LOCAL
5186 Value is a local variable.
5187
5188 @vindex SYMBOL_LOC_TYPEDEF
5189 @item gdb.SYMBOL_LOC_TYPEDEF
5190 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
5191 have this class.
5192
5193 @vindex SYMBOL_LOC_BLOCK
5194 @item gdb.SYMBOL_LOC_BLOCK
5195 Value is a block.
5196
5197 @vindex SYMBOL_LOC_CONST_BYTES
5198 @item gdb.SYMBOL_LOC_CONST_BYTES
5199 Value is a byte-sequence.
5200
5201 @vindex SYMBOL_LOC_UNRESOLVED
5202 @item gdb.SYMBOL_LOC_UNRESOLVED
5203 Value is at a fixed address, but the address of the variable has to be
5204 determined from the minimal symbol table whenever the variable is
5205 referenced.
5206
5207 @vindex SYMBOL_LOC_OPTIMIZED_OUT
5208 @item gdb.SYMBOL_LOC_OPTIMIZED_OUT
5209 The value does not actually exist in the program.
5210
5211 @vindex SYMBOL_LOC_COMPUTED
5212 @item gdb.SYMBOL_LOC_COMPUTED
5213 The value's address is a computed location.
5214
5215 @vindex SYMBOL_LOC_COMPUTED
5216 @item gdb.SYMBOL_LOC_COMPUTED
5217 The value's address is a symbol. This is only used for Fortran common
5218 blocks.
5219 @end vtable
5220
5221 @node Symbol Tables In Python
5222 @subsubsection Symbol table representation in Python
5223
5224 @cindex symbol tables in python
5225 @tindex gdb.Symtab
5226 @tindex gdb.Symtab_and_line
5227
5228 Access to symbol table data maintained by @value{GDBN} on the inferior
5229 is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
5230 @code{gdb.Symtab}. Symbol table and line data for a frame is returned
5231 from the @code{find_sal} method in @code{gdb.Frame} object.
5232 @xref{Frames In Python}.
5233
5234 For more information on @value{GDBN}'s symbol table management, see
5235 @ref{Symbols, ,Examining the Symbol Table}, for more information.
5236
5237 A @code{gdb.Symtab_and_line} object has the following attributes:
5238
5239 @defvar Symtab_and_line.symtab
5240 The symbol table object (@code{gdb.Symtab}) for this frame.
5241 This attribute is not writable.
5242 @end defvar
5243
5244 @defvar Symtab_and_line.pc
5245 Indicates the start of the address range occupied by code for the
5246 current source line. This attribute is not writable.
5247 @end defvar
5248
5249 @defvar Symtab_and_line.last
5250 Indicates the end of the address range occupied by code for the current
5251 source line. This attribute is not writable.
5252 @end defvar
5253
5254 @defvar Symtab_and_line.line
5255 Indicates the current line number for this object. This
5256 attribute is not writable.
5257 @end defvar
5258
5259 A @code{gdb.Symtab_and_line} object has the following methods:
5260
5261 @defun Symtab_and_line.is_valid ()
5262 Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
5263 @code{False} if not. A @code{gdb.Symtab_and_line} object can become
5264 invalid if the Symbol table and line object it refers to does not
5265 exist in @value{GDBN} any longer. All other
5266 @code{gdb.Symtab_and_line} methods will throw an exception if it is
5267 invalid at the time the method is called.
5268 @end defun
5269
5270 A @code{gdb.Symtab} object has the following attributes:
5271
5272 @defvar Symtab.filename
5273 The symbol table's source filename. This attribute is not writable.
5274 @end defvar
5275
5276 @defvar Symtab.objfile
5277 The symbol table's backing object file. @xref{Objfiles In Python}.
5278 This attribute is not writable.
5279 @end defvar
5280
5281 @defvar Symtab.producer
5282 The name and possibly version number of the program that
5283 compiled the code in the symbol table.
5284 The contents of this string is up to the compiler.
5285 If no producer information is available then @code{None} is returned.
5286 This attribute is not writable.
5287 @end defvar
5288
5289 A @code{gdb.Symtab} object has the following methods:
5290
5291 @defun Symtab.is_valid ()
5292 Returns @code{True} if the @code{gdb.Symtab} object is valid,
5293 @code{False} if not. A @code{gdb.Symtab} object can become invalid if
5294 the symbol table it refers to does not exist in @value{GDBN} any
5295 longer. All other @code{gdb.Symtab} methods will throw an exception
5296 if it is invalid at the time the method is called.
5297 @end defun
5298
5299 @defun Symtab.fullname ()
5300 Return the symbol table's source absolute file name.
5301 @end defun
5302
5303 @defun Symtab.global_block ()
5304 Return the global block of the underlying symbol table.
5305 @xref{Blocks In Python}.
5306 @end defun
5307
5308 @defun Symtab.static_block ()
5309 Return the static block of the underlying symbol table.
5310 @xref{Blocks In Python}.
5311 @end defun
5312
5313 @defun Symtab.linetable ()
5314 Return the line table associated with the symbol table.
5315 @xref{Line Tables In Python}.
5316 @end defun
5317
5318 @node Line Tables In Python
5319 @subsubsection Manipulating line tables using Python
5320
5321 @cindex line tables in python
5322 @tindex gdb.LineTable
5323
5324 Python code can request and inspect line table information from a
5325 symbol table that is loaded in @value{GDBN}. A line table is a
5326 mapping of source lines to their executable locations in memory. To
5327 acquire the line table information for a particular symbol table, use
5328 the @code{linetable} function (@pxref{Symbol Tables In Python}).
5329
5330 A @code{gdb.LineTable} is iterable. The iterator returns
5331 @code{LineTableEntry} objects that correspond to the source line and
5332 address for each line table entry. @code{LineTableEntry} objects have
5333 the following attributes:
5334
5335 @defvar LineTableEntry.line
5336 The source line number for this line table entry. This number
5337 corresponds to the actual line of source. This attribute is not
5338 writable.
5339 @end defvar
5340
5341 @defvar LineTableEntry.pc
5342 The address that is associated with the line table entry where the
5343 executable code for that source line resides in memory. This
5344 attribute is not writable.
5345 @end defvar
5346
5347 As there can be multiple addresses for a single source line, you may
5348 receive multiple @code{LineTableEntry} objects with matching
5349 @code{line} attributes, but with different @code{pc} attributes. The
5350 iterator is sorted in ascending @code{pc} order. Here is a small
5351 example illustrating iterating over a line table.
5352
5353 @smallexample
5354 symtab = gdb.selected_frame().find_sal().symtab
5355 linetable = symtab.linetable()
5356 for line in linetable:
5357 print ("Line: "+str(line.line)+" Address: "+hex(line.pc))
5358 @end smallexample
5359
5360 This will have the following output:
5361
5362 @smallexample
5363 Line: 33 Address: 0x4005c8L
5364 Line: 37 Address: 0x4005caL
5365 Line: 39 Address: 0x4005d2L
5366 Line: 40 Address: 0x4005f8L
5367 Line: 42 Address: 0x4005ffL
5368 Line: 44 Address: 0x400608L
5369 Line: 42 Address: 0x40060cL
5370 Line: 45 Address: 0x400615L
5371 @end smallexample
5372
5373 In addition to being able to iterate over a @code{LineTable}, it also
5374 has the following direct access methods:
5375
5376 @defun LineTable.line (line)
5377 Return a Python @code{Tuple} of @code{LineTableEntry} objects for any
5378 entries in the line table for the given @var{line}, which specifies
5379 the source code line. If there are no entries for that source code
5380 @var{line}, the Python @code{None} is returned.
5381 @end defun
5382
5383 @defun LineTable.has_line (line)
5384 Return a Python @code{Boolean} indicating whether there is an entry in
5385 the line table for this source line. Return @code{True} if an entry
5386 is found, or @code{False} if not.
5387 @end defun
5388
5389 @defun LineTable.source_lines ()
5390 Return a Python @code{List} of the source line numbers in the symbol
5391 table. Only lines with executable code locations are returned. The
5392 contents of the @code{List} will just be the source line entries
5393 represented as Python @code{Long} values.
5394 @end defun
5395
5396 @node Breakpoints In Python
5397 @subsubsection Manipulating breakpoints using Python
5398
5399 @cindex breakpoints in python
5400 @tindex gdb.Breakpoint
5401
5402 Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
5403 class.
5404
5405 A breakpoint can be created using one of the two forms of the
5406 @code{gdb.Breakpoint} constructor. The first one accepts a string
5407 like one would pass to the @code{break}
5408 (@pxref{Set Breaks,,Setting Breakpoints}) and @code{watch}
5409 (@pxref{Set Watchpoints, , Setting Watchpoints}) commands, and can be used to
5410 create both breakpoints and watchpoints. The second accepts separate Python
5411 arguments similar to @ref{Explicit Locations}, and can only be used to create
5412 breakpoints.
5413
5414 @defun Breakpoint.__init__ (spec @r{[}, type @r{][}, wp_class @r{][}, internal @r{][}, temporary @r{][}, qualified @r{]})
5415 Create a new breakpoint according to @var{spec}, which is a string naming the
5416 location of a breakpoint, or an expression that defines a watchpoint. The
5417 string should describe a location in a format recognized by the @code{break}
5418 command (@pxref{Set Breaks,,Setting Breakpoints}) or, in the case of a
5419 watchpoint, by the @code{watch} command
5420 (@pxref{Set Watchpoints, , Setting Watchpoints}).
5421
5422 The optional @var{type} argument specifies the type of the breakpoint to create,
5423 as defined below.
5424
5425 The optional @var{wp_class} argument defines the class of watchpoint to create,
5426 if @var{type} is @code{gdb.BP_WATCHPOINT}. If @var{wp_class} is omitted, it
5427 defaults to @code{gdb.WP_WRITE}.
5428
5429 The optional @var{internal} argument allows the breakpoint to become invisible
5430 to the user. The breakpoint will neither be reported when created, nor will it
5431 be listed in the output from @code{info breakpoints} (but will be listed with
5432 the @code{maint info breakpoints} command).
5433
5434 The optional @var{temporary} argument makes the breakpoint a temporary
5435 breakpoint. Temporary breakpoints are deleted after they have been hit. Any
5436 further access to the Python breakpoint after it has been hit will result in a
5437 runtime error (as that breakpoint has now been automatically deleted).
5438
5439 The optional @var{qualified} argument is a boolean that allows interpreting
5440 the function passed in @code{spec} as a fully-qualified name. It is equivalent
5441 to @code{break}'s @code{-qualified} flag (@pxref{Linespec Locations} and
5442 @ref{Explicit Locations}).
5443
5444 @end defun
5445
5446 @defun Breakpoint.__init__ (@r{[} source @r{][}, function @r{][}, label @r{][}, line @r{]}, @r{][} internal @r{][}, temporary @r{][}, qualified @r{]})
5447 This second form of creating a new breakpoint specifies the explicit
5448 location (@pxref{Explicit Locations}) using keywords. The new breakpoint will
5449 be created in the specified source file @var{source}, at the specified
5450 @var{function}, @var{label} and @var{line}.
5451
5452 @var{internal}, @var{temporary} and @var{qualified} have the same usage as
5453 explained previously.
5454 @end defun
5455
5456 The available types are represented by constants defined in the @code{gdb}
5457 module:
5458
5459 @vtable @code
5460 @vindex BP_BREAKPOINT
5461 @item gdb.BP_BREAKPOINT
5462 Normal code breakpoint.
5463
5464 @vindex BP_HARDWARE_BREAKPOINT
5465 @item gdb.BP_HARDWARE_BREAKPOINT
5466 Hardware assisted code breakpoint.
5467
5468 @vindex BP_WATCHPOINT
5469 @item gdb.BP_WATCHPOINT
5470 Watchpoint breakpoint.
5471
5472 @vindex BP_HARDWARE_WATCHPOINT
5473 @item gdb.BP_HARDWARE_WATCHPOINT
5474 Hardware assisted watchpoint.
5475
5476 @vindex BP_READ_WATCHPOINT
5477 @item gdb.BP_READ_WATCHPOINT
5478 Hardware assisted read watchpoint.
5479
5480 @vindex BP_ACCESS_WATCHPOINT
5481 @item gdb.BP_ACCESS_WATCHPOINT
5482 Hardware assisted access watchpoint.
5483 @end vtable
5484
5485 The available watchpoint types represented by constants are defined in the
5486 @code{gdb} module:
5487
5488 @vtable @code
5489 @vindex WP_READ
5490 @item gdb.WP_READ
5491 Read only watchpoint.
5492
5493 @vindex WP_WRITE
5494 @item gdb.WP_WRITE
5495 Write only watchpoint.
5496
5497 @vindex WP_ACCESS
5498 @item gdb.WP_ACCESS
5499 Read/Write watchpoint.
5500 @end vtable
5501
5502 @defun Breakpoint.stop (self)
5503 The @code{gdb.Breakpoint} class can be sub-classed and, in
5504 particular, you may choose to implement the @code{stop} method.
5505 If this method is defined in a sub-class of @code{gdb.Breakpoint},
5506 it will be called when the inferior reaches any location of a
5507 breakpoint which instantiates that sub-class. If the method returns
5508 @code{True}, the inferior will be stopped at the location of the
5509 breakpoint, otherwise the inferior will continue.
5510
5511 If there are multiple breakpoints at the same location with a
5512 @code{stop} method, each one will be called regardless of the
5513 return status of the previous. This ensures that all @code{stop}
5514 methods have a chance to execute at that location. In this scenario
5515 if one of the methods returns @code{True} but the others return
5516 @code{False}, the inferior will still be stopped.
5517
5518 You should not alter the execution state of the inferior (i.e.@:, step,
5519 next, etc.), alter the current frame context (i.e.@:, change the current
5520 active frame), or alter, add or delete any breakpoint. As a general
5521 rule, you should not alter any data within @value{GDBN} or the inferior
5522 at this time.
5523
5524 Example @code{stop} implementation:
5525
5526 @smallexample
5527 class MyBreakpoint (gdb.Breakpoint):
5528 def stop (self):
5529 inf_val = gdb.parse_and_eval("foo")
5530 if inf_val == 3:
5531 return True
5532 return False
5533 @end smallexample
5534 @end defun
5535
5536 @defun Breakpoint.is_valid ()
5537 Return @code{True} if this @code{Breakpoint} object is valid,
5538 @code{False} otherwise. A @code{Breakpoint} object can become invalid
5539 if the user deletes the breakpoint. In this case, the object still
5540 exists, but the underlying breakpoint does not. In the cases of
5541 watchpoint scope, the watchpoint remains valid even if execution of the
5542 inferior leaves the scope of that watchpoint.
5543 @end defun
5544
5545 @defun Breakpoint.delete ()
5546 Permanently deletes the @value{GDBN} breakpoint. This also
5547 invalidates the Python @code{Breakpoint} object. Any further access
5548 to this object's attributes or methods will raise an error.
5549 @end defun
5550
5551 @defvar Breakpoint.enabled
5552 This attribute is @code{True} if the breakpoint is enabled, and
5553 @code{False} otherwise. This attribute is writable. You can use it to enable
5554 or disable the breakpoint.
5555 @end defvar
5556
5557 @defvar Breakpoint.silent
5558 This attribute is @code{True} if the breakpoint is silent, and
5559 @code{False} otherwise. This attribute is writable.
5560
5561 Note that a breakpoint can also be silent if it has commands and the
5562 first command is @code{silent}. This is not reported by the
5563 @code{silent} attribute.
5564 @end defvar
5565
5566 @defvar Breakpoint.pending
5567 This attribute is @code{True} if the breakpoint is pending, and
5568 @code{False} otherwise. @xref{Set Breaks}. This attribute is
5569 read-only.
5570 @end defvar
5571
5572 @anchor{python_breakpoint_thread}
5573 @defvar Breakpoint.thread
5574 If the breakpoint is thread-specific, this attribute holds the
5575 thread's global id. If the breakpoint is not thread-specific, this
5576 attribute is @code{None}. This attribute is writable.
5577 @end defvar
5578
5579 @defvar Breakpoint.task
5580 If the breakpoint is Ada task-specific, this attribute holds the Ada task
5581 id. If the breakpoint is not task-specific (or the underlying
5582 language is not Ada), this attribute is @code{None}. This attribute
5583 is writable.
5584 @end defvar
5585
5586 @defvar Breakpoint.ignore_count
5587 This attribute holds the ignore count for the breakpoint, an integer.
5588 This attribute is writable.
5589 @end defvar
5590
5591 @defvar Breakpoint.number
5592 This attribute holds the breakpoint's number --- the identifier used by
5593 the user to manipulate the breakpoint. This attribute is not writable.
5594 @end defvar
5595
5596 @defvar Breakpoint.type
5597 This attribute holds the breakpoint's type --- the identifier used to
5598 determine the actual breakpoint type or use-case. This attribute is not
5599 writable.
5600 @end defvar
5601
5602 @defvar Breakpoint.visible
5603 This attribute tells whether the breakpoint is visible to the user
5604 when set, or when the @samp{info breakpoints} command is run. This
5605 attribute is not writable.
5606 @end defvar
5607
5608 @defvar Breakpoint.temporary
5609 This attribute indicates whether the breakpoint was created as a
5610 temporary breakpoint. Temporary breakpoints are automatically deleted
5611 after that breakpoint has been hit. Access to this attribute, and all
5612 other attributes and functions other than the @code{is_valid}
5613 function, will result in an error after the breakpoint has been hit
5614 (as it has been automatically deleted). This attribute is not
5615 writable.
5616 @end defvar
5617
5618 @defvar Breakpoint.hit_count
5619 This attribute holds the hit count for the breakpoint, an integer.
5620 This attribute is writable, but currently it can only be set to zero.
5621 @end defvar
5622
5623 @defvar Breakpoint.location
5624 This attribute holds the location of the breakpoint, as specified by
5625 the user. It is a string. If the breakpoint does not have a location
5626 (that is, it is a watchpoint) the attribute's value is @code{None}. This
5627 attribute is not writable.
5628 @end defvar
5629
5630 @defvar Breakpoint.expression
5631 This attribute holds a breakpoint expression, as specified by
5632 the user. It is a string. If the breakpoint does not have an
5633 expression (the breakpoint is not a watchpoint) the attribute's value
5634 is @code{None}. This attribute is not writable.
5635 @end defvar
5636
5637 @defvar Breakpoint.condition
5638 This attribute holds the condition of the breakpoint, as specified by
5639 the user. It is a string. If there is no condition, this attribute's
5640 value is @code{None}. This attribute is writable.
5641 @end defvar
5642
5643 @defvar Breakpoint.commands
5644 This attribute holds the commands attached to the breakpoint. If
5645 there are commands, this attribute's value is a string holding all the
5646 commands, separated by newlines. If there are no commands, this
5647 attribute is @code{None}. This attribute is writable.
5648 @end defvar
5649
5650 @node Finish Breakpoints in Python
5651 @subsubsection Finish Breakpoints
5652
5653 @cindex python finish breakpoints
5654 @tindex gdb.FinishBreakpoint
5655
5656 A finish breakpoint is a temporary breakpoint set at the return address of
5657 a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
5658 extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
5659 and deleted when the execution will run out of the breakpoint scope (i.e.@:
5660 @code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
5661 Finish breakpoints are thread specific and must be create with the right
5662 thread selected.
5663
5664 @defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
5665 Create a finish breakpoint at the return address of the @code{gdb.Frame}
5666 object @var{frame}. If @var{frame} is not provided, this defaults to the
5667 newest frame. The optional @var{internal} argument allows the breakpoint to
5668 become invisible to the user. @xref{Breakpoints In Python}, for further
5669 details about this argument.
5670 @end defun
5671
5672 @defun FinishBreakpoint.out_of_scope (self)
5673 In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
5674 @code{return} command, @dots{}), a function may not properly terminate, and
5675 thus never hit the finish breakpoint. When @value{GDBN} notices such a
5676 situation, the @code{out_of_scope} callback will be triggered.
5677
5678 You may want to sub-class @code{gdb.FinishBreakpoint} and override this
5679 method:
5680
5681 @smallexample
5682 class MyFinishBreakpoint (gdb.FinishBreakpoint)
5683 def stop (self):
5684 print ("normal finish")
5685 return True
5686
5687 def out_of_scope ():
5688 print ("abnormal finish")
5689 @end smallexample
5690 @end defun
5691
5692 @defvar FinishBreakpoint.return_value
5693 When @value{GDBN} is stopped at a finish breakpoint and the frame
5694 used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
5695 attribute will contain a @code{gdb.Value} object corresponding to the return
5696 value of the function. The value will be @code{None} if the function return
5697 type is @code{void} or if the return value was not computable. This attribute
5698 is not writable.
5699 @end defvar
5700
5701 @node Lazy Strings In Python
5702 @subsubsection Python representation of lazy strings
5703
5704 @cindex lazy strings in python
5705 @tindex gdb.LazyString
5706
5707 A @dfn{lazy string} is a string whose contents is not retrieved or
5708 encoded until it is needed.
5709
5710 A @code{gdb.LazyString} is represented in @value{GDBN} as an
5711 @code{address} that points to a region of memory, an @code{encoding}
5712 that will be used to encode that region of memory, and a @code{length}
5713 to delimit the region of memory that represents the string. The
5714 difference between a @code{gdb.LazyString} and a string wrapped within
5715 a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
5716 differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
5717 retrieved and encoded during printing, while a @code{gdb.Value}
5718 wrapping a string is immediately retrieved and encoded on creation.
5719
5720 A @code{gdb.LazyString} object has the following functions:
5721
5722 @defun LazyString.value ()
5723 Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
5724 will point to the string in memory, but will lose all the delayed
5725 retrieval, encoding and handling that @value{GDBN} applies to a
5726 @code{gdb.LazyString}.
5727 @end defun
5728
5729 @defvar LazyString.address
5730 This attribute holds the address of the string. This attribute is not
5731 writable.
5732 @end defvar
5733
5734 @defvar LazyString.length
5735 This attribute holds the length of the string in characters. If the
5736 length is -1, then the string will be fetched and encoded up to the
5737 first null of appropriate width. This attribute is not writable.
5738 @end defvar
5739
5740 @defvar LazyString.encoding
5741 This attribute holds the encoding that will be applied to the string
5742 when the string is printed by @value{GDBN}. If the encoding is not
5743 set, or contains an empty string, then @value{GDBN} will select the
5744 most appropriate encoding when the string is printed. This attribute
5745 is not writable.
5746 @end defvar
5747
5748 @defvar LazyString.type
5749 This attribute holds the type that is represented by the lazy string's
5750 type. For a lazy string this is a pointer or array type. To
5751 resolve this to the lazy string's character type, use the type's
5752 @code{target} method. @xref{Types In Python}. This attribute is not
5753 writable.
5754 @end defvar
5755
5756 @node Architectures In Python
5757 @subsubsection Python representation of architectures
5758 @cindex Python architectures
5759
5760 @value{GDBN} uses architecture specific parameters and artifacts in a
5761 number of its various computations. An architecture is represented
5762 by an instance of the @code{gdb.Architecture} class.
5763
5764 A @code{gdb.Architecture} class has the following methods:
5765
5766 @defun Architecture.name ()
5767 Return the name (string value) of the architecture.
5768 @end defun
5769
5770 @defun Architecture.disassemble (@var{start_pc} @r{[}, @var{end_pc} @r{[}, @var{count}@r{]]})
5771 Return a list of disassembled instructions starting from the memory
5772 address @var{start_pc}. The optional arguments @var{end_pc} and
5773 @var{count} determine the number of instructions in the returned list.
5774 If both the optional arguments @var{end_pc} and @var{count} are
5775 specified, then a list of at most @var{count} disassembled instructions
5776 whose start address falls in the closed memory address interval from
5777 @var{start_pc} to @var{end_pc} are returned. If @var{end_pc} is not
5778 specified, but @var{count} is specified, then @var{count} number of
5779 instructions starting from the address @var{start_pc} are returned. If
5780 @var{count} is not specified but @var{end_pc} is specified, then all
5781 instructions whose start address falls in the closed memory address
5782 interval from @var{start_pc} to @var{end_pc} are returned. If neither
5783 @var{end_pc} nor @var{count} are specified, then a single instruction at
5784 @var{start_pc} is returned. For all of these cases, each element of the
5785 returned list is a Python @code{dict} with the following string keys:
5786
5787 @table @code
5788
5789 @item addr
5790 The value corresponding to this key is a Python long integer capturing
5791 the memory address of the instruction.
5792
5793 @item asm
5794 The value corresponding to this key is a string value which represents
5795 the instruction with assembly language mnemonics. The assembly
5796 language flavor used is the same as that specified by the current CLI
5797 variable @code{disassembly-flavor}. @xref{Machine Code}.
5798
5799 @item length
5800 The value corresponding to this key is the length (integer value) of the
5801 instruction in bytes.
5802
5803 @end table
5804 @end defun
5805
5806 @anchor{gdbpy_architecture_registers}
5807 @defun Architecture.registers (@r{[} @var{reggroup} @r{]})
5808 Return a @code{gdb.RegisterDescriptorIterator} (@pxref{Registers In
5809 Python}) for all of the registers in @var{reggroup}, a string that is
5810 the name of a register group. If @var{reggroup} is omitted, or is the
5811 empty string, then the register group @samp{all} is assumed.
5812 @end defun
5813
5814 @anchor{gdbpy_architecture_reggroups}
5815 @defun Architecture.register_groups ()
5816 Return a @code{gdb.RegisterGroupsIterator} (@pxref{Registers In
5817 Python}) for all of the register groups available for the
5818 @code{gdb.Architecture}.
5819 @end defun
5820
5821 @node Registers In Python
5822 @subsubsection Registers In Python
5823 @cindex Registers In Python
5824
5825 Python code can request from a @code{gdb.Architecture} information
5826 about the set of registers available
5827 (@pxref{gdbpy_architecture_registers,,@code{Architecture.registers}}).
5828 The register information is returned as a
5829 @code{gdb.RegisterDescriptorIterator}, which is an iterator that in
5830 turn returns @code{gdb.RegisterDescriptor} objects.
5831
5832 A @code{gdb.RegisterDescriptor} does not provide the value of a
5833 register (@pxref{gdbpy_frame_read_register,,@code{Frame.read_register}}
5834 for reading a register's value), instead the @code{RegisterDescriptor}
5835 is a way to discover which registers are available for a particular
5836 architecture.
5837
5838 A @code{gdb.RegisterDescriptor} has the following read-only properties:
5839
5840 @defvar RegisterDescriptor.name
5841 The name of this register.
5842 @end defvar
5843
5844 It is also possible to lookup a register descriptor based on its name
5845 using the following @code{gdb.RegisterDescriptorIterator} function:
5846
5847 @defun RegisterDescriptorIterator.find (@var{name})
5848 Takes @var{name} as an argument, which must be a string, and returns a
5849 @code{gdb.RegisterDescriptor} for the register with that name, or
5850 @code{None} if there is no register with that name.
5851 @end defun
5852
5853 Python code can also request from a @code{gdb.Architecture}
5854 information about the set of register groups available on a given
5855 architecture
5856 (@pxref{gdbpy_architecture_reggroups,,@code{Architecture.register_groups}}).
5857
5858 Every register can be a member of zero or more register groups. Some
5859 register groups are used internally within @value{GDBN} to control
5860 things like which registers must be saved when calling into the
5861 program being debugged (@pxref{Calling,,Calling Program Functions}).
5862 Other register groups exist to allow users to easily see related sets
5863 of registers in commands like @code{info registers}
5864 (@pxref{info_registers_reggroup,,@code{info registers
5865 @var{reggroup}}}).
5866
5867 The register groups information is returned as a
5868 @code{gdb.RegisterGroupsIterator}, which is an iterator that in turn
5869 returns @code{gdb.RegisterGroup} objects.
5870
5871 A @code{gdb.RegisterGroup} object has the following read-only
5872 properties:
5873
5874 @defvar RegisterGroup.name
5875 A string that is the name of this register group.
5876 @end defvar
5877
5878 @node TUI Windows In Python
5879 @subsubsection Implementing new TUI windows
5880 @cindex Python TUI Windows
5881
5882 New TUI (@pxref{TUI}) windows can be implemented in Python.
5883
5884 @findex gdb.register_window_type
5885 @defun gdb.register_window_type (@var{name}, @var{factory})
5886 Because TUI windows are created and destroyed depending on the layout
5887 the user chooses, new window types are implemented by registering a
5888 factory function with @value{GDBN}.
5889
5890 @var{name} is the name of the new window. It's an error to try to
5891 replace one of the built-in windows, but other window types can be
5892 replaced.
5893
5894 @var{function} is a factory function that is called to create the TUI
5895 window. This is called with a single argument of type
5896 @code{gdb.TuiWindow}, described below. It should return an object
5897 that implements the TUI window protocol, also described below.
5898 @end defun
5899
5900 As mentioned above, when a factory function is called, it is passed
5901 an object of type @code{gdb.TuiWindow}. This object has these
5902 methods and attributes:
5903
5904 @defun TuiWindow.is_valid ()
5905 This method returns @code{True} when this window is valid. When the
5906 user changes the TUI layout, windows no longer visible in the new
5907 layout will be destroyed. At this point, the @code{gdb.TuiWindow}
5908 will no longer be valid, and methods (and attributes) other than
5909 @code{is_valid} will throw an exception.
5910
5911 When the TUI is disabled using @code{tui disable} (@pxref{TUI
5912 Commands,,tui disable}) the window is hidden rather than destroyed,
5913 but @code{is_valid} will still return @code{False} and other methods
5914 (and attributes) will still throw an exception.
5915 @end defun
5916
5917 @defvar TuiWindow.width
5918 This attribute holds the width of the window. It is not writable.
5919 @end defvar
5920
5921 @defvar TuiWindow.height
5922 This attribute holds the height of the window. It is not writable.
5923 @end defvar
5924
5925 @defvar TuiWindow.title
5926 This attribute holds the window's title, a string. This is normally
5927 displayed above the window. This attribute can be modified.
5928 @end defvar
5929
5930 @defun TuiWindow.erase ()
5931 Remove all the contents of the window.
5932 @end defun
5933
5934 @defun TuiWindow.write (@var{string})
5935 Write @var{string} to the window. @var{string} can contain ANSI
5936 terminal escape styling sequences; @value{GDBN} will translate these
5937 as appropriate for the terminal.
5938 @end defun
5939
5940 The factory function that you supply should return an object
5941 conforming to the TUI window protocol. These are the method that can
5942 be called on this object, which is referred to below as the ``window
5943 object''. The methods documented below are optional; if the object
5944 does not implement one of these methods, @value{GDBN} will not attempt
5945 to call it. Additional new methods may be added to the window
5946 protocol in the future. @value{GDBN} guarantees that they will begin
5947 with a lower-case letter, so you can start implementation methods with
5948 upper-case letters or underscore to avoid any future conflicts.
5949
5950 @defun Window.close ()
5951 When the TUI window is closed, the @code{gdb.TuiWindow} object will be
5952 put into an invalid state. At this time, @value{GDBN} will call
5953 @code{close} method on the window object.
5954
5955 After this method is called, @value{GDBN} will discard any references
5956 it holds on this window object, and will no longer call methods on
5957 this object.
5958 @end defun
5959
5960 @defun Window.render ()
5961 In some situations, a TUI window can change size. For example, this
5962 can happen if the user resizes the terminal, or changes the layout.
5963 When this happens, @value{GDBN} will call the @code{render} method on
5964 the window object.
5965
5966 If your window is intended to update in response to changes in the
5967 inferior, you will probably also want to register event listeners and
5968 send output to the @code{gdb.TuiWindow}.
5969 @end defun
5970
5971 @defun Window.hscroll (@var{num})
5972 This is a request to scroll the window horizontally. @var{num} is the
5973 amount by which to scroll, with negative numbers meaning to scroll
5974 right. In the TUI model, it is the viewport that moves, not the
5975 contents. A positive argument should cause the viewport to move
5976 right, and so the content should appear to move to the left.
5977 @end defun
5978
5979 @defun Window.vscroll (@var{num})
5980 This is a request to scroll the window vertically. @var{num} is the
5981 amount by which to scroll, with negative numbers meaning to scroll
5982 backward. In the TUI model, it is the viewport that moves, not the
5983 contents. A positive argument should cause the viewport to move down,
5984 and so the content should appear to move up.
5985 @end defun
5986
5987 @node Python Auto-loading
5988 @subsection Python Auto-loading
5989 @cindex Python auto-loading
5990
5991 When a new object file is read (for example, due to the @code{file}
5992 command, or because the inferior has loaded a shared library),
5993 @value{GDBN} will look for Python support scripts in several ways:
5994 @file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section.
5995 @xref{Auto-loading extensions}.
5996
5997 The auto-loading feature is useful for supplying application-specific
5998 debugging commands and scripts.
5999
6000 Auto-loading can be enabled or disabled,
6001 and the list of auto-loaded scripts can be printed.
6002
6003 @table @code
6004 @anchor{set auto-load python-scripts}
6005 @kindex set auto-load python-scripts
6006 @item set auto-load python-scripts [on|off]
6007 Enable or disable the auto-loading of Python scripts.
6008
6009 @anchor{show auto-load python-scripts}
6010 @kindex show auto-load python-scripts
6011 @item show auto-load python-scripts
6012 Show whether auto-loading of Python scripts is enabled or disabled.
6013
6014 @anchor{info auto-load python-scripts}
6015 @kindex info auto-load python-scripts
6016 @cindex print list of auto-loaded Python scripts
6017 @item info auto-load python-scripts [@var{regexp}]
6018 Print the list of all Python scripts that @value{GDBN} auto-loaded.
6019
6020 Also printed is the list of Python scripts that were mentioned in
6021 the @code{.debug_gdb_scripts} section and were either not found
6022 (@pxref{dotdebug_gdb_scripts section}) or were not auto-loaded due to
6023 @code{auto-load safe-path} rejection (@pxref{Auto-loading}).
6024 This is useful because their names are not printed when @value{GDBN}
6025 tries to load them and fails. There may be many of them, and printing
6026 an error message for each one is problematic.
6027
6028 If @var{regexp} is supplied only Python scripts with matching names are printed.
6029
6030 Example:
6031
6032 @smallexample
6033 (gdb) info auto-load python-scripts
6034 Loaded Script
6035 Yes py-section-script.py
6036 full name: /tmp/py-section-script.py
6037 No my-foo-pretty-printers.py
6038 @end smallexample
6039 @end table
6040
6041 When reading an auto-loaded file or script, @value{GDBN} sets the
6042 @dfn{current objfile}. This is available via the @code{gdb.current_objfile}
6043 function (@pxref{Objfiles In Python}). This can be useful for
6044 registering objfile-specific pretty-printers and frame-filters.
6045
6046 @node Python modules
6047 @subsection Python modules
6048 @cindex python modules
6049
6050 @value{GDBN} comes with several modules to assist writing Python code.
6051
6052 @menu
6053 * gdb.printing:: Building and registering pretty-printers.
6054 * gdb.types:: Utilities for working with types.
6055 * gdb.prompt:: Utilities for prompt value substitution.
6056 @end menu
6057
6058 @node gdb.printing
6059 @subsubsection gdb.printing
6060 @cindex gdb.printing
6061
6062 This module provides a collection of utilities for working with
6063 pretty-printers.
6064
6065 @table @code
6066 @item PrettyPrinter (@var{name}, @var{subprinters}=None)
6067 This class specifies the API that makes @samp{info pretty-printer},
6068 @samp{enable pretty-printer} and @samp{disable pretty-printer} work.
6069 Pretty-printers should generally inherit from this class.
6070
6071 @item SubPrettyPrinter (@var{name})
6072 For printers that handle multiple types, this class specifies the
6073 corresponding API for the subprinters.
6074
6075 @item RegexpCollectionPrettyPrinter (@var{name})
6076 Utility class for handling multiple printers, all recognized via
6077 regular expressions.
6078 @xref{Writing a Pretty-Printer}, for an example.
6079
6080 @item FlagEnumerationPrinter (@var{name})
6081 A pretty-printer which handles printing of @code{enum} values. Unlike
6082 @value{GDBN}'s built-in @code{enum} printing, this printer attempts to
6083 work properly when there is some overlap between the enumeration
6084 constants. The argument @var{name} is the name of the printer and
6085 also the name of the @code{enum} type to look up.
6086
6087 @item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
6088 Register @var{printer} with the pretty-printer list of @var{obj}.
6089 If @var{replace} is @code{True} then any existing copy of the printer
6090 is replaced. Otherwise a @code{RuntimeError} exception is raised
6091 if a printer with the same name already exists.
6092 @end table
6093
6094 @node gdb.types
6095 @subsubsection gdb.types
6096 @cindex gdb.types
6097
6098 This module provides a collection of utilities for working with
6099 @code{gdb.Type} objects.
6100
6101 @table @code
6102 @item get_basic_type (@var{type})
6103 Return @var{type} with const and volatile qualifiers stripped,
6104 and with typedefs and C@t{++} references converted to the underlying type.
6105
6106 C@t{++} example:
6107
6108 @smallexample
6109 typedef const int const_int;
6110 const_int foo (3);
6111 const_int& foo_ref (foo);
6112 int main () @{ return 0; @}
6113 @end smallexample
6114
6115 Then in gdb:
6116
6117 @smallexample
6118 (gdb) start
6119 (gdb) python import gdb.types
6120 (gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
6121 (gdb) python print gdb.types.get_basic_type(foo_ref.type)
6122 int
6123 @end smallexample
6124
6125 @item has_field (@var{type}, @var{field})
6126 Return @code{True} if @var{type}, assumed to be a type with fields
6127 (e.g., a structure or union), has field @var{field}.
6128
6129 @item make_enum_dict (@var{enum_type})
6130 Return a Python @code{dictionary} type produced from @var{enum_type}.
6131
6132 @item deep_items (@var{type})
6133 Returns a Python iterator similar to the standard
6134 @code{gdb.Type.iteritems} method, except that the iterator returned
6135 by @code{deep_items} will recursively traverse anonymous struct or
6136 union fields. For example:
6137
6138 @smallexample
6139 struct A
6140 @{
6141 int a;
6142 union @{
6143 int b0;
6144 int b1;
6145 @};
6146 @};
6147 @end smallexample
6148
6149 @noindent
6150 Then in @value{GDBN}:
6151 @smallexample
6152 (@value{GDBP}) python import gdb.types
6153 (@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
6154 (@value{GDBP}) python print struct_a.keys ()
6155 @{['a', '']@}
6156 (@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
6157 @{['a', 'b0', 'b1']@}
6158 @end smallexample
6159
6160 @item get_type_recognizers ()
6161 Return a list of the enabled type recognizers for the current context.
6162 This is called by @value{GDBN} during the type-printing process
6163 (@pxref{Type Printing API}).
6164
6165 @item apply_type_recognizers (recognizers, type_obj)
6166 Apply the type recognizers, @var{recognizers}, to the type object
6167 @var{type_obj}. If any recognizer returns a string, return that
6168 string. Otherwise, return @code{None}. This is called by
6169 @value{GDBN} during the type-printing process (@pxref{Type Printing
6170 API}).
6171
6172 @item register_type_printer (locus, printer)
6173 This is a convenience function to register a type printer
6174 @var{printer}. The printer must implement the type printer protocol.
6175 The @var{locus} argument is either a @code{gdb.Objfile}, in which case
6176 the printer is registered with that objfile; a @code{gdb.Progspace},
6177 in which case the printer is registered with that progspace; or
6178 @code{None}, in which case the printer is registered globally.
6179
6180 @item TypePrinter
6181 This is a base class that implements the type printer protocol. Type
6182 printers are encouraged, but not required, to derive from this class.
6183 It defines a constructor:
6184
6185 @defmethod TypePrinter __init__ (self, name)
6186 Initialize the type printer with the given name. The new printer
6187 starts in the enabled state.
6188 @end defmethod
6189
6190 @end table
6191
6192 @node gdb.prompt
6193 @subsubsection gdb.prompt
6194 @cindex gdb.prompt
6195
6196 This module provides a method for prompt value-substitution.
6197
6198 @table @code
6199 @item substitute_prompt (@var{string})
6200 Return @var{string} with escape sequences substituted by values. Some
6201 escape sequences take arguments. You can specify arguments inside
6202 ``@{@}'' immediately following the escape sequence.
6203
6204 The escape sequences you can pass to this function are:
6205
6206 @table @code
6207 @item \\
6208 Substitute a backslash.
6209 @item \e
6210 Substitute an ESC character.
6211 @item \f
6212 Substitute the selected frame; an argument names a frame parameter.
6213 @item \n
6214 Substitute a newline.
6215 @item \p
6216 Substitute a parameter's value; the argument names the parameter.
6217 @item \r
6218 Substitute a carriage return.
6219 @item \t
6220 Substitute the selected thread; an argument names a thread parameter.
6221 @item \v
6222 Substitute the version of GDB.
6223 @item \w
6224 Substitute the current working directory.
6225 @item \[
6226 Begin a sequence of non-printing characters. These sequences are
6227 typically used with the ESC character, and are not counted in the string
6228 length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
6229 blue-colored ``(gdb)'' prompt where the length is five.
6230 @item \]
6231 End a sequence of non-printing characters.
6232 @end table
6233
6234 For example:
6235
6236 @smallexample
6237 substitute_prompt ("frame: \f, args: \p@{print frame-arguments@}")
6238 @end smallexample
6239
6240 @exdent will return the string:
6241
6242 @smallexample
6243 "frame: main, args: scalars"
6244 @end smallexample
6245 @end table