python.texi revision 1.9 1 @c Copyright (C) 2008--2024 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
22 @cindex python directory
23 Python scripts used by @value{GDBN} should be installed in
24 @file{@var{data-directory}/python}, where @var{data-directory} is
25 the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
26 This directory, known as the @dfn{python directory},
27 is automatically added to the Python Search Path in order to allow
28 the Python interpreter to locate all scripts installed at this location.
29
30 Additionally, @value{GDBN} commands and convenience functions which
31 are written in Python and are located in the
32 @file{@var{data-directory}/python/gdb/command} or
33 @file{@var{data-directory}/python/gdb/function} directories are
34 automatically imported when @value{GDBN} starts.
35
36 @menu
37 * Python Commands:: Accessing Python from @value{GDBN}.
38 * Python API:: Accessing @value{GDBN} from Python.
39 * Python Auto-loading:: Automatically loading Python code.
40 * Python modules:: Python modules provided by @value{GDBN}.
41 @end menu
42
43 @node Python Commands
44 @subsection Python Commands
45 @cindex python commands
46 @cindex commands to access python
47
48 @value{GDBN} provides two commands for accessing the Python interpreter,
49 and one related setting:
50
51 @table @code
52 @kindex python-interactive
53 @kindex pi
54 @item python-interactive @r{[}@var{command}@r{]}
55 @itemx pi @r{[}@var{command}@r{]}
56 Without an argument, the @code{python-interactive} command can be used
57 to start an interactive Python prompt. To return to @value{GDBN},
58 type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt).
59
60 Alternatively, a single-line Python command can be given as an
61 argument and evaluated. If the command is an expression, the result
62 will be printed; otherwise, nothing will be printed. For example:
63
64 @smallexample
65 (@value{GDBP}) python-interactive 2 + 3
66 5
67 @end smallexample
68
69 @kindex python
70 @kindex py
71 @item python @r{[}@var{command}@r{]}
72 @itemx py @r{[}@var{command}@r{]}
73 The @code{python} command can be used to evaluate Python code.
74
75 If given an argument, the @code{python} command will evaluate the
76 argument as a Python command. For example:
77
78 @smallexample
79 (@value{GDBP}) python print 23
80 23
81 @end smallexample
82
83 If you do not provide an argument to @code{python}, it will act as a
84 multi-line command, like @code{define}. In this case, the Python
85 script is made up of subsequent command lines, given after the
86 @code{python} command. This command list is terminated using a line
87 containing @code{end}. For example:
88
89 @smallexample
90 (@value{GDBP}) python
91 >print 23
92 >end
93 23
94 @end smallexample
95
96 @anchor{set_python_print_stack}
97 @kindex set python print-stack
98 @item set python print-stack
99 By default, @value{GDBN} will print only the message component of a
100 Python exception when an error occurs in a Python script. This can be
101 controlled using @code{set python print-stack}: if @code{full}, then
102 full Python stack printing is enabled; if @code{none}, then Python stack
103 and message printing is disabled; if @code{message}, the default, only
104 the message component of the error is printed.
105
106 @kindex set python ignore-environment
107 @item set python ignore-environment @r{[}on@r{|}off@r{]}
108 By default this option is @samp{off}, and, when @value{GDBN}
109 initializes its internal Python interpreter, the Python interpreter
110 will check the environment for variables that will effect how it
111 behaves, for example @env{PYTHONHOME}, and
112 @env{PYTHONPATH}@footnote{See the ENVIRONMENT VARIABLES section of
113 @command{man 1 python} for a comprehensive list.}.
114
115 If this option is set to @samp{on} before Python is initialized then
116 Python will ignore all such environment variables. As Python is
117 initialized early during @value{GDBN}'s startup process, then this
118 option must be placed into the early initialization file
119 (@pxref{Initialization Files}) to have the desired effect.
120
121 This option is equivalent to passing @option{-E} to the real
122 @command{python} executable.
123
124 @kindex set python dont-write-bytecode
125 @item set python dont-write-bytecode @r{[}auto@r{|}on@r{|}off@r{]}
126 When this option is @samp{off}, then, once @value{GDBN} has
127 initialized the Python interpreter, the interpreter will byte-compile
128 any Python modules that it imports and write the byte code to disk in
129 @file{.pyc} files.
130
131 If this option is set to @samp{on} before Python is initialized then
132 Python will no longer write the byte code to disk. As Python is
133 initialized early during @value{GDBN}'s startup process, then this
134 option must be placed into the early initialization file
135 (@pxref{Initialization Files}) to have the desired effect.
136
137 By default this option is set to @samp{auto}. In this mode, provided
138 the @code{python ignore-environment} setting is @samp{off}, the
139 environment variable @env{PYTHONDONTWRITEBYTECODE} is examined to see
140 if it should write out byte-code or not.
141 @env{PYTHONDONTWRITEBYTECODE} is considered to be off/disabled either
142 when set to the empty string or when the environment variable doesn't
143 exist. All other settings, including those which don't seem to make
144 sense, indicate that it's on/enabled.
145
146 This option is equivalent to passing @option{-B} to the real
147 @command{python} executable.
148 @end table
149
150 It is also possible to execute a Python script from the @value{GDBN}
151 interpreter:
152
153 @table @code
154 @item source @file{script-name}
155 The script name must end with @samp{.py} and @value{GDBN} must be configured
156 to recognize the script language based on filename extension using
157 the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
158 @end table
159
160 The following commands are intended to help debug @value{GDBN} itself:
161
162 @table @code
163 @kindex set debug py-breakpoint
164 @kindex show debug py-breakpoint
165 @item set debug py-breakpoint on@r{|}off
166 @itemx show debug py-breakpoint
167 When @samp{on}, @value{GDBN} prints debug messages related to the
168 Python breakpoint API. This is @samp{off} by default.
169
170 @kindex set debug py-unwind
171 @kindex show debug py-unwind
172 @item set debug py-unwind on@r{|}off
173 @itemx show debug py-unwind
174 When @samp{on}, @value{GDBN} prints debug messages related to the
175 Python unwinder API. This is @samp{off} by default.
176 @end table
177
178 @node Python API
179 @subsection Python API
180 @cindex python api
181 @cindex programming in python
182
183 You can get quick online help for @value{GDBN}'s Python API by issuing
184 the command @w{@kbd{python help (gdb)}}.
185
186 Functions and methods which have two or more optional arguments allow
187 them to be specified using keyword syntax. This allows passing some
188 optional arguments while skipping others. Example:
189 @w{@code{gdb.some_function ('foo', bar = 1, baz = 2)}}.
190
191 @menu
192 * Basic Python:: Basic Python Functions.
193 * Threading in GDB:: Using Python threads in GDB.
194 * Exception Handling:: How Python exceptions are translated.
195 * Values From Inferior:: Python representation of values.
196 * Types In Python:: Python representation of types.
197 * Pretty Printing API:: Pretty-printing values.
198 * Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
199 * Writing a Pretty-Printer:: Writing a Pretty-Printer.
200 * Type Printing API:: Pretty-printing types.
201 * Frame Filter API:: Filtering Frames.
202 * Frame Decorator API:: Decorating Frames.
203 * Writing a Frame Filter:: Writing a Frame Filter.
204 * Unwinding Frames in Python:: Writing frame unwinder.
205 * Xmethods In Python:: Adding and replacing methods of C++ classes.
206 * Xmethod API:: Xmethod types.
207 * Writing an Xmethod:: Writing an xmethod.
208 * Inferiors In Python:: Python representation of inferiors (processes)
209 * Events In Python:: Listening for events from @value{GDBN}.
210 * Threads In Python:: Accessing inferior threads from Python.
211 * Recordings In Python:: Accessing recordings from Python.
212 * CLI Commands In Python:: Implementing new CLI commands in Python.
213 * GDB/MI Commands In Python:: Implementing new @sc{gdb/mi} commands in Python.
214 * GDB/MI Notifications In Python:: Implementing new @sc{gdb/mi} notifications in Python.
215 * Parameters In Python:: Adding new @value{GDBN} parameters.
216 * Functions In Python:: Writing new convenience functions.
217 * Progspaces In Python:: Program spaces.
218 * Objfiles In Python:: Object files.
219 * Frames In Python:: Accessing inferior stack frames from Python.
220 * Blocks In Python:: Accessing blocks from Python.
221 * Symbols In Python:: Python representation of symbols.
222 * Symbol Tables In Python:: Python representation of symbol tables.
223 * Line Tables In Python:: Python representation of line tables.
224 * Breakpoints In Python:: Manipulating breakpoints using Python.
225 * Finish Breakpoints in Python:: Setting Breakpoints on function return
226 using Python.
227 * Lazy Strings In Python:: Python representation of lazy strings.
228 * Architectures In Python:: Python representation of architectures.
229 * Registers In Python:: Python representation of registers.
230 * Connections In Python:: Python representation of connections.
231 * TUI Windows In Python:: Implementing new TUI windows.
232 * Disassembly In Python:: Instruction Disassembly In Python
233 * Missing Debug Info In Python:: Handle missing debug info from Python.
234 @end menu
235
236 @node Basic Python
237 @subsubsection Basic Python
238
239 @cindex python stdout
240 @cindex python pagination
241 At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
242 @code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
243 A Python program which outputs to one of these streams may have its
244 output interrupted by the user (@pxref{Screen Size}). In this
245 situation, a Python @code{KeyboardInterrupt} exception is thrown.
246
247 Some care must be taken when writing Python code to run in
248 @value{GDBN}. Two things worth noting in particular:
249
250 @itemize @bullet
251 @item
252 @value{GDBN} installs handlers for @code{SIGCHLD} and @code{SIGINT}.
253 Python code must not override these, or even change the options using
254 @code{sigaction}. If your program changes the handling of these
255 signals, @value{GDBN} will most likely stop working correctly. Note
256 that it is unfortunately common for GUI toolkits to install a
257 @code{SIGCHLD} handler. When creating a new Python thread, you can
258 use @code{gdb.block_signals} or @code{gdb.Thread} to handle this
259 correctly; see @ref{Threading in GDB}.
260
261 @item
262 @value{GDBN} takes care to mark its internal file descriptors as
263 close-on-exec. However, this cannot be done in a thread-safe way on
264 all platforms. Your Python programs should be aware of this and
265 should both create new file descriptors with the close-on-exec flag
266 set and arrange to close unneeded file descriptors before starting a
267 child process.
268 @end itemize
269
270 @cindex python functions
271 @cindex python module
272 @cindex gdb module
273 @value{GDBN} introduces a new Python module, named @code{gdb}. All
274 methods and classes added by @value{GDBN} are placed in this module.
275 @value{GDBN} automatically @code{import}s the @code{gdb} module for
276 use in all scripts evaluated by the @code{python} command.
277
278 Some types of the @code{gdb} module come with a textual representation
279 (accessible through the @code{repr} or @code{str} functions). These are
280 offered for debugging purposes only, expect them to change over time.
281
282 @defvar gdb.PYTHONDIR
283 A string containing the python directory (@pxref{Python}).
284 @end defvar
285
286 @defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
287 Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
288 If a GDB exception happens while @var{command} runs, it is
289 translated as described in @ref{Exception Handling,,Exception Handling}.
290
291 The @var{from_tty} flag specifies whether @value{GDBN} ought to consider this
292 command as having originated from the user invoking it interactively.
293 It must be a boolean value. If omitted, it defaults to @code{False}.
294
295 By default, any output produced by @var{command} is sent to
296 @value{GDBN}'s standard output (and to the log output if logging is
297 turned on). If the @var{to_string} parameter is
298 @code{True}, then output will be collected by @code{gdb.execute} and
299 returned as a string. The default is @code{False}, in which case the
300 return value is @code{None}. If @var{to_string} is @code{True}, the
301 @value{GDBN} virtual terminal will be temporarily set to unlimited width
302 and height, and its pagination will be disabled; @pxref{Screen Size}.
303 @end defun
304
305 @defun gdb.breakpoints ()
306 Return a sequence holding all of @value{GDBN}'s breakpoints.
307 @xref{Breakpoints In Python}, for more information. In @value{GDBN}
308 version 7.11 and earlier, this function returned @code{None} if there
309 were no breakpoints. This peculiarity was subsequently fixed, and now
310 @code{gdb.breakpoints} returns an empty sequence in this case.
311 @end defun
312
313 @defun gdb.rbreak (regex @r{[}, minsyms @r{[}, throttle, @r{[}, symtabs @r{]]]})
314 Return a Python list holding a collection of newly set
315 @code{gdb.Breakpoint} objects matching function names defined by the
316 @var{regex} pattern. If the @var{minsyms} keyword is @code{True}, all
317 system functions (those not explicitly defined in the inferior) will
318 also be included in the match. The @var{throttle} keyword takes an
319 integer that defines the maximum number of pattern matches for
320 functions matched by the @var{regex} pattern. If the number of
321 matches exceeds the integer value of @var{throttle}, a
322 @code{RuntimeError} will be raised and no breakpoints will be created.
323 If @var{throttle} is not defined then there is no imposed limit on the
324 maximum number of matches and breakpoints to be created. The
325 @var{symtabs} keyword takes a Python iterable that yields a collection
326 of @code{gdb.Symtab} objects and will restrict the search to those
327 functions only contained within the @code{gdb.Symtab} objects.
328 @end defun
329
330 @defun gdb.parameter (parameter)
331 Return the value of a @value{GDBN} @var{parameter} given by its name,
332 a string; the parameter name string may contain spaces if the parameter has a
333 multi-part name. For example, @samp{print object} is a valid
334 parameter name.
335
336 If the named parameter does not exist, this function throws a
337 @code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
338 parameter's value is converted to a Python value of the appropriate
339 type, and returned.
340 @end defun
341
342 @defun gdb.set_parameter (name, value)
343 Sets the gdb parameter @var{name} to @var{value}. As with
344 @code{gdb.parameter}, the parameter name string may contain spaces if
345 the parameter has a multi-part name.
346 @end defun
347
348 @defun gdb.with_parameter (name, value)
349 Create a Python context manager (for use with the Python
350 @command{with} statement) that temporarily sets the gdb parameter
351 @var{name} to @var{value}. On exit from the context, the previous
352 value will be restored.
353
354 This uses @code{gdb.parameter} in its implementation, so it can throw
355 the same exceptions as that function.
356
357 For example, it's sometimes useful to evaluate some Python code with a
358 particular gdb language:
359
360 @smallexample
361 with gdb.with_parameter('language', 'pascal'):
362 ... language-specific operations
363 @end smallexample
364 @end defun
365
366 @defun gdb.history (number)
367 Return a value from @value{GDBN}'s value history (@pxref{Value
368 History}). The @var{number} argument indicates which history element to return.
369 If @var{number} is negative, then @value{GDBN} will take its absolute value
370 and count backward from the last element (i.e., the most recent element) to
371 find the value to return. If @var{number} is zero, then @value{GDBN} will
372 return the most recent element. If the element specified by @var{number}
373 doesn't exist in the value history, a @code{gdb.error} exception will be
374 raised.
375
376 If no exception is raised, the return value is always an instance of
377 @code{gdb.Value} (@pxref{Values From Inferior}).
378 @end defun
379
380 @defun gdb.add_history (value)
381 Takes @var{value}, an instance of @code{gdb.Value} (@pxref{Values From
382 Inferior}), and appends the value this object represents to
383 @value{GDBN}'s value history (@pxref{Value History}), and return an
384 integer, its history number. If @var{value} is not a
385 @code{gdb.Value}, it is is converted using the @code{gdb.Value}
386 constructor. If @var{value} can't be converted to a @code{gdb.Value}
387 then a @code{TypeError} is raised.
388
389 When a command implemented in Python prints a single @code{gdb.Value}
390 as its result, then placing the value into the history will allow the
391 user convenient access to those values via CLI history facilities.
392 @end defun
393
394 @defun gdb.history_count ()
395 Return an integer indicating the number of values in @value{GDBN}'s
396 value history (@pxref{Value History}).
397 @end defun
398
399 @defun gdb.convenience_variable (name)
400 Return the value of the convenience variable (@pxref{Convenience
401 Vars}) named @var{name}. @var{name} must be a string. The name
402 should not include the @samp{$} that is used to mark a convenience
403 variable in an expression. If the convenience variable does not
404 exist, then @code{None} is returned.
405 @end defun
406
407 @defun gdb.set_convenience_variable (name, value)
408 Set the value of the convenience variable (@pxref{Convenience Vars})
409 named @var{name}. @var{name} must be a string. The name should not
410 include the @samp{$} that is used to mark a convenience variable in an
411 expression. If @var{value} is @code{None}, then the convenience
412 variable is removed. Otherwise, if @var{value} is not a
413 @code{gdb.Value} (@pxref{Values From Inferior}), it is is converted
414 using the @code{gdb.Value} constructor.
415 @end defun
416
417 @defun gdb.parse_and_eval (expression @r{[}, global_context@r{]})
418 Parse @var{expression}, which must be a string, as an expression in
419 the current language, evaluate it, and return the result as a
420 @code{gdb.Value}.
421
422 @var{global_context}, if provided, is a boolean indicating whether the
423 parsing should be done in the global context. The default is
424 @samp{False}, meaning that the current frame or current static context
425 should be used.
426
427 This function can be useful when implementing a new command
428 (@pxref{CLI Commands In Python}, @pxref{GDB/MI Commands In Python}),
429 as it provides a way to parse the
430 command's argument as an expression. It is also useful simply to
431 compute values.
432 @end defun
433
434 @defun gdb.find_pc_line (pc)
435 Return the @code{gdb.Symtab_and_line} object corresponding to the
436 @var{pc} value. @xref{Symbol Tables In Python}. If an invalid
437 value of @var{pc} is passed as an argument, then the @code{symtab} and
438 @code{line} attributes of the returned @code{gdb.Symtab_and_line} object
439 will be @code{None} and 0 respectively. This is identical to
440 @code{gdb.current_progspace().find_pc_line(pc)} and is included for
441 historical compatibility.
442 @end defun
443
444 @defun gdb.write (string @r{[}, stream@r{]})
445 Print a string to @value{GDBN}'s paginated output stream. The
446 optional @var{stream} determines the stream to print to. The default
447 stream is @value{GDBN}'s standard output stream. Possible stream
448 values are:
449
450 @table @code
451 @findex STDOUT
452 @findex gdb.STDOUT
453 @item gdb.STDOUT
454 @value{GDBN}'s standard output stream.
455
456 @findex STDERR
457 @findex gdb.STDERR
458 @item gdb.STDERR
459 @value{GDBN}'s standard error stream.
460
461 @findex STDLOG
462 @findex gdb.STDLOG
463 @item gdb.STDLOG
464 @value{GDBN}'s log stream (@pxref{Logging Output}).
465 @end table
466
467 Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
468 call this function and will automatically direct the output to the
469 relevant stream.
470 @end defun
471
472 @defun gdb.flush (@r{[}, stream@r{]})
473 Flush the buffer of a @value{GDBN} paginated stream so that the
474 contents are displayed immediately. @value{GDBN} will flush the
475 contents of a stream automatically when it encounters a newline in the
476 buffer. The optional @var{stream} determines the stream to flush. The
477 default stream is @value{GDBN}'s standard output stream. Possible
478 stream values are:
479
480 @table @code
481 @findex STDOUT
482 @findex gdb.STDOUT
483 @item gdb.STDOUT
484 @value{GDBN}'s standard output stream.
485
486 @findex STDERR
487 @findex gdb.STDERR
488 @item gdb.STDERR
489 @value{GDBN}'s standard error stream.
490
491 @findex STDLOG
492 @findex gdb.STDLOG
493 @item gdb.STDLOG
494 @value{GDBN}'s log stream (@pxref{Logging Output}).
495
496 @end table
497
498 Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
499 call this function for the relevant stream.
500 @end defun
501
502 @defun gdb.target_charset ()
503 Return the name of the current target character set (@pxref{Character
504 Sets}). This differs from @code{gdb.parameter('target-charset')} in
505 that @samp{auto} is never returned.
506 @end defun
507
508 @defun gdb.target_wide_charset ()
509 Return the name of the current target wide character set
510 (@pxref{Character Sets}). This differs from
511 @code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
512 never returned.
513 @end defun
514
515 @defun gdb.host_charset ()
516 Return a string, the name of the current host character set
517 (@pxref{Character Sets}). This differs from
518 @code{gdb.parameter('host-charset')} in that @samp{auto} is never
519 returned.
520 @end defun
521
522 @defun gdb.solib_name (address)
523 Return the name of the shared library holding the given @var{address}
524 as a string, or @code{None}. This is identical to
525 @code{gdb.current_progspace().solib_name(address)} and is included for
526 historical compatibility.
527 @end defun
528
529 @defun gdb.decode_line (@r{[}expression@r{]})
530 Return locations of the line specified by @var{expression}, or of the
531 current line if no argument was given. This function returns a Python
532 tuple containing two elements. The first element contains a string
533 holding any unparsed section of @var{expression} (or @code{None} if
534 the expression has been fully parsed). The second element contains
535 either @code{None} or another tuple that contains all the locations
536 that match the expression represented as @code{gdb.Symtab_and_line}
537 objects (@pxref{Symbol Tables In Python}). If @var{expression} is
538 provided, it is decoded the way that @value{GDBN}'s inbuilt
539 @code{break} or @code{edit} commands do (@pxref{Location
540 Specifications}).
541 @end defun
542
543 @defun gdb.prompt_hook (current_prompt)
544 @anchor{prompt_hook}
545
546 If @var{prompt_hook} is callable, @value{GDBN} will call the method
547 assigned to this operation before a prompt is displayed by
548 @value{GDBN}.
549
550 The parameter @code{current_prompt} contains the current @value{GDBN}
551 prompt. This method must return a Python string, or @code{None}. If
552 a string is returned, the @value{GDBN} prompt will be set to that
553 string. If @code{None} is returned, @value{GDBN} will continue to use
554 the current prompt.
555
556 Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
557 such as those used by readline for command input, and annotation
558 related prompts are prohibited from being changed.
559 @end defun
560
561 @anchor{gdb_architecture_names}
562 @defun gdb.architecture_names ()
563 Return a list containing all of the architecture names that the
564 current build of @value{GDBN} supports. Each architecture name is a
565 string. The names returned in this list are the same names as are
566 returned from @code{gdb.Architecture.name}
567 (@pxref{gdbpy_architecture_name,,Architecture.name}).
568 @end defun
569
570 @anchor{gdbpy_connections}
571 @defun gdb.connections
572 Return a list of @code{gdb.TargetConnection} objects, one for each
573 currently active connection (@pxref{Connections In Python}). The
574 connection objects are in no particular order in the returned list.
575 @end defun
576
577 @defun gdb.format_address (address @r{[}, progspace, architecture@r{]})
578 Return a string in the format @samp{@var{addr}
579 <@var{symbol}+@var{offset}>}, where @var{addr} is @var{address}
580 formatted in hexadecimal, @var{symbol} is the symbol whose address is
581 the nearest to @var{address} and below it in memory, and @var{offset}
582 is the offset from @var{symbol} to @var{address} in decimal.
583
584 If no suitable @var{symbol} was found, then the
585 <@var{symbol}+@var{offset}> part is not included in the returned
586 string, instead the returned string will just contain the
587 @var{address} formatted as hexadecimal. How far @value{GDBN} looks
588 back for a suitable symbol can be controlled with @kbd{set print
589 max-symbolic-offset} (@pxref{Print Settings}).
590
591 Additionally, the returned string can include file name and line
592 number information when @kbd{set print symbol-filename on}
593 (@pxref{Print Settings}), in this case the format of the returned
594 string is @samp{@var{addr} <@var{symbol}+@var{offset}> at
595 @var{filename}:@var{line-number}}.
596
597
598 The @var{progspace} is the gdb.Progspace in which @var{symbol} is
599 looked up, and @var{architecture} is used when formatting @var{addr},
600 e.g.@: in order to determine the size of an address in bytes.
601
602 If neither @var{progspace} or @var{architecture} are passed, then by
603 default @value{GDBN} will use the program space and architecture of
604 the currently selected inferior, thus, the following two calls are
605 equivalent:
606
607 @smallexample
608 gdb.format_address(address)
609 gdb.format_address(address,
610 gdb.selected_inferior().progspace,
611 gdb.selected_inferior().architecture())
612 @end smallexample
613
614 It is not valid to only pass one of @var{progspace} or
615 @var{architecture}, either they must both be provided, or neither must
616 be provided (and the defaults will be used).
617
618 This method uses the same mechanism for formatting address, symbol,
619 and offset information as core @value{GDBN} does in commands such as
620 @kbd{disassemble}.
621
622 Here are some examples of the possible string formats:
623
624 @smallexample
625 0x00001042
626 0x00001042 <symbol+16>
627 0x00001042 <symbol+16 at file.c:123>
628 @end smallexample
629 @end defun
630
631 @defun gdb.current_language ()
632 Return the name of the current language as a string. Unlike
633 @code{gdb.parameter('language')}, this function will never return
634 @samp{auto}. If a @code{gdb.Frame} object is available (@pxref{Frames
635 In Python}), the @code{language} method might be preferable in some
636 cases, as that is not affected by the user's language setting.
637 @end defun
638
639 @node Threading in GDB
640 @subsubsection Threading in GDB
641
642 @value{GDBN} is not thread-safe. If your Python program uses multiple
643 threads, you must be careful to only call @value{GDBN}-specific
644 functions in the @value{GDBN} thread. @value{GDBN} provides some
645 functions to help with this.
646
647 @defun gdb.block_signals ()
648 As mentioned earlier (@pxref{Basic Python}), certain signals must be
649 delivered to the @value{GDBN} main thread. The @code{block_signals}
650 function returns a context manager that will block these signals on
651 entry. This can be used when starting a new thread to ensure that the
652 signals are blocked there, like:
653
654 @smallexample
655 with gdb.block_signals():
656 start_new_thread()
657 @end smallexample
658 @end defun
659
660 @deftp {class} gdb.Thread
661 This is a subclass of Python's @code{threading.Thread} class. It
662 overrides the @code{start} method to call @code{block_signals}, making
663 this an easy-to-use drop-in replacement for creating threads that will
664 work well in @value{GDBN}.
665 @end deftp
666
667 @defun gdb.interrupt ()
668 This causes @value{GDBN} to react as if the user had typed a control-C
669 character at the terminal. That is, if the inferior is running, it is
670 interrupted; if a @value{GDBN} command is executing, it is stopped;
671 and if a Python command is running, @code{KeyboardInterrupt} will be
672 raised.
673
674 Unlike most Python APIs in @value{GDBN}, @code{interrupt} is
675 thread-safe.
676 @end defun
677
678 @defun gdb.post_event (event)
679 Put @var{event}, a callable object taking no arguments, into
680 @value{GDBN}'s internal event queue. This callable will be invoked at
681 some later point, during @value{GDBN}'s event processing. Events
682 posted using @code{post_event} will be run in the order in which they
683 were posted; however, there is no way to know when they will be
684 processed relative to other events inside @value{GDBN}.
685
686 Unlike most Python APIs in @value{GDBN}, @code{post_event} is
687 thread-safe. For example:
688
689 @smallexample
690 (@value{GDBP}) python
691 >import threading
692 >
693 >class Writer():
694 > def __init__(self, message):
695 > self.message = message;
696 > def __call__(self):
697 > gdb.write(self.message)
698 >
699 >class MyThread1 (threading.Thread):
700 > def run (self):
701 > gdb.post_event(Writer("Hello "))
702 >
703 >class MyThread2 (threading.Thread):
704 > def run (self):
705 > gdb.post_event(Writer("World\n"))
706 >
707 >MyThread1().start()
708 >MyThread2().start()
709 >end
710 (@value{GDBP}) Hello World
711 @end smallexample
712 @end defun
713
714
715 @node Exception Handling
716 @subsubsection Exception Handling
717 @cindex python exceptions
718 @cindex exceptions, python
719
720 When executing the @code{python} command, Python exceptions
721 uncaught within the Python code are translated to calls to
722 @value{GDBN} error-reporting mechanism. If the command that called
723 @code{python} does not handle the error, @value{GDBN} will
724 terminate it and print an error message. Exactly what will be printed
725 depends on @code{set python print-stack} (@pxref{Python Commands}).
726 Example:
727
728 @smallexample
729 (@value{GDBP}) python print foo
730 Traceback (most recent call last):
731 File "<string>", line 1, in <module>
732 NameError: name 'foo' is not defined
733 @end smallexample
734
735 @value{GDBN} errors that happen in @value{GDBN} commands invoked by
736 Python code are converted to Python exceptions. The type of the
737 Python exception depends on the error.
738
739 @ftable @code
740 @item gdb.error
741 This is the base class for most exceptions generated by @value{GDBN}.
742 It is derived from @code{RuntimeError}, for compatibility with earlier
743 versions of @value{GDBN}.
744
745 If an error occurring in @value{GDBN} does not fit into some more
746 specific category, then the generated exception will have this type.
747
748 @item gdb.MemoryError
749 This is a subclass of @code{gdb.error} which is thrown when an
750 operation tried to access invalid memory in the inferior.
751
752 @item KeyboardInterrupt
753 User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
754 prompt) is translated to a Python @code{KeyboardInterrupt} exception.
755 @end ftable
756
757 In all cases, your exception handler will see the @value{GDBN} error
758 message as its value and the Python call stack backtrace at the Python
759 statement closest to where the @value{GDBN} error occurred as the
760 traceback.
761
762
763 When implementing @value{GDBN} commands in Python via
764 @code{gdb.Command}, or functions via @code{gdb.Function}, it is useful
765 to be able to throw an exception that doesn't cause a traceback to be
766 printed. For example, the user may have invoked the command
767 incorrectly. @value{GDBN} provides a special exception class that can
768 be used for this purpose.
769
770 @ftable @code
771 @item gdb.GdbError
772 When thrown from a command or function, this exception will cause the
773 command or function to fail, but the Python stack will not be
774 displayed. @value{GDBN} does not throw this exception itself, but
775 rather recognizes it when thrown from user Python code. Example:
776
777 @smallexample
778 (gdb) python
779 >class HelloWorld (gdb.Command):
780 > """Greet the whole world."""
781 > def __init__ (self):
782 > super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
783 > def invoke (self, args, from_tty):
784 > argv = gdb.string_to_argv (args)
785 > if len (argv) != 0:
786 > raise gdb.GdbError ("hello-world takes no arguments")
787 > print ("Hello, World!")
788 >HelloWorld ()
789 >end
790 (gdb) hello-world 42
791 hello-world takes no arguments
792 @end smallexample
793 @end ftable
794
795 @node Values From Inferior
796 @subsubsection Values From Inferior
797 @cindex values from inferior, with Python
798 @cindex python, working with values from inferior
799
800 @cindex @code{gdb.Value}
801 @value{GDBN} provides values it obtains from the inferior program in
802 an object of type @code{gdb.Value}. @value{GDBN} uses this object
803 for its internal bookkeeping of the inferior's values, and for
804 fetching values when necessary.
805
806 Inferior values that are simple scalars can be used directly in
807 Python expressions that are valid for the value's data type. Here's
808 an example for an integer or floating-point value @code{some_val}:
809
810 @smallexample
811 bar = some_val + 2
812 @end smallexample
813
814 @noindent
815 As result of this, @code{bar} will also be a @code{gdb.Value} object
816 whose values are of the same type as those of @code{some_val}. Valid
817 Python operations can also be performed on @code{gdb.Value} objects
818 representing a @code{struct} or @code{class} object. For such cases,
819 the overloaded operator (if present), is used to perform the operation.
820 For example, if @code{val1} and @code{val2} are @code{gdb.Value} objects
821 representing instances of a @code{class} which overloads the @code{+}
822 operator, then one can use the @code{+} operator in their Python script
823 as follows:
824
825 @smallexample
826 val3 = val1 + val2
827 @end smallexample
828
829 @noindent
830 The result of the operation @code{val3} is also a @code{gdb.Value}
831 object corresponding to the value returned by the overloaded @code{+}
832 operator. In general, overloaded operators are invoked for the
833 following operations: @code{+} (binary addition), @code{-} (binary
834 subtraction), @code{*} (multiplication), @code{/}, @code{%}, @code{<<},
835 @code{>>}, @code{|}, @code{&}, @code{^}.
836
837 Inferior values that are structures or instances of some class can
838 be accessed using the Python @dfn{dictionary syntax}. For example, if
839 @code{some_val} is a @code{gdb.Value} instance holding a structure, you
840 can access its @code{foo} element with:
841
842 @smallexample
843 bar = some_val['foo']
844 @end smallexample
845
846 @cindex getting structure elements using gdb.Field objects as subscripts
847 Again, @code{bar} will also be a @code{gdb.Value} object. Structure
848 elements can also be accessed by using @code{gdb.Field} objects as
849 subscripts (@pxref{Types In Python}, for more information on
850 @code{gdb.Field} objects). For example, if @code{foo_field} is a
851 @code{gdb.Field} object corresponding to element @code{foo} of the above
852 structure, then @code{bar} can also be accessed as follows:
853
854 @smallexample
855 bar = some_val[foo_field]
856 @end smallexample
857
858 If a @code{gdb.Value} has array or pointer type, an integer index can
859 be used to access elements.
860
861 @smallexample
862 result = some_array[23]
863 @end smallexample
864
865 A @code{gdb.Value} that represents a function can be executed via
866 inferior function call. Any arguments provided to the call must match
867 the function's prototype, and must be provided in the order specified
868 by that prototype.
869
870 For example, @code{some_val} is a @code{gdb.Value} instance
871 representing a function that takes two integers as arguments. To
872 execute this function, call it like so:
873
874 @smallexample
875 result = some_val (10,20)
876 @end smallexample
877
878 Any values returned from a function call will be stored as a
879 @code{gdb.Value}.
880
881 The following attributes are provided:
882
883 @defvar Value.address
884 If this object is addressable, this read-only attribute holds a
885 @code{gdb.Value} object representing the address. Otherwise,
886 this attribute holds @code{None}.
887 @end defvar
888
889 @cindex optimized out value in Python
890 @defvar Value.is_optimized_out
891 This read-only boolean attribute is true if the compiler optimized out
892 this value, thus it is not available for fetching from the inferior.
893 @end defvar
894
895 @defvar Value.type
896 The type of this @code{gdb.Value}. The value of this attribute is a
897 @code{gdb.Type} object (@pxref{Types In Python}).
898 @end defvar
899
900 @defvar Value.dynamic_type
901 The dynamic type of this @code{gdb.Value}. This uses the object's
902 virtual table and the C@t{++} run-time type information
903 (@acronym{RTTI}) to determine the dynamic type of the value. If this
904 value is of class type, it will return the class in which the value is
905 embedded, if any. If this value is of pointer or reference to a class
906 type, it will compute the dynamic type of the referenced object, and
907 return a pointer or reference to that type, respectively. In all
908 other cases, it will return the value's static type.
909
910 Note that this feature will only work when debugging a C@t{++} program
911 that includes @acronym{RTTI} for the object in question. Otherwise,
912 it will just return the static type of the value as in @kbd{ptype foo}
913 (@pxref{Symbols, ptype}).
914 @end defvar
915
916 @defvar Value.is_lazy
917 The value of this read-only boolean attribute is @code{True} if this
918 @code{gdb.Value} has not yet been fetched from the inferior.
919 @value{GDBN} does not fetch values until necessary, for efficiency.
920 For example:
921
922 @smallexample
923 myval = gdb.parse_and_eval ('somevar')
924 @end smallexample
925
926 The value of @code{somevar} is not fetched at this time. It will be
927 fetched when the value is needed, or when the @code{fetch_lazy}
928 method is invoked.
929 @end defvar
930
931 @defvar Value.bytes
932 The value of this attribute is a @code{bytes} object containing the
933 bytes that make up this @code{Value}'s complete value in little endian
934 order. If the complete contents of this value are not available then
935 accessing this attribute will raise an exception.
936
937 This attribute can also be assigned to. The new value should be a
938 buffer object (e.g.@: a @code{bytes} object), the length of the new
939 buffer must exactly match the length of this @code{Value}'s type. The
940 bytes values in the new buffer should be in little endian order.
941
942 As with @code{Value.assign} (@pxref{Value.assign}), if this value
943 cannot be assigned to, then an exception will be thrown.
944 @end defvar
945
946 The following methods are provided:
947
948 @defun Value.__init__ (val)
949 Many Python values can be converted directly to a @code{gdb.Value} via
950 this object initializer. Specifically:
951
952 @table @asis
953 @item Python boolean
954 A Python boolean is converted to the boolean type from the current
955 language.
956
957 @item Python integer
958 A Python integer is converted to the C @code{long} type for the
959 current architecture.
960
961 @item Python long
962 A Python long is converted to the C @code{long long} type for the
963 current architecture.
964
965 @item Python float
966 A Python float is converted to the C @code{double} type for the
967 current architecture.
968
969 @item Python string
970 A Python string is converted to a target string in the current target
971 language using the current target encoding.
972 If a character cannot be represented in the current target encoding,
973 then an exception is thrown.
974
975 @item @code{gdb.Value}
976 If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
977
978 @item @code{gdb.LazyString}
979 If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
980 Python}), then the lazy string's @code{value} method is called, and
981 its result is used.
982 @end table
983 @end defun
984
985 @defun Value.__init__ (val, type)
986 This second form of the @code{gdb.Value} constructor returns a
987 @code{gdb.Value} of type @var{type} where the value contents are taken
988 from the Python buffer object specified by @var{val}. The number of
989 bytes in the Python buffer object must be greater than or equal to the
990 size of @var{type}.
991
992 If @var{type} is @code{None} then this version of @code{__init__}
993 behaves as though @var{type} was not passed at all.
994 @end defun
995
996 @anchor{Value.assign}
997 @defun Value.assign (rhs)
998 Assign @var{rhs} to this value, and return @code{None}. If this value
999 cannot be assigned to, or if the assignment is invalid for some reason
1000 (for example a type-checking failure), an exception will be thrown.
1001 @end defun
1002
1003 @defun Value.cast (type)
1004 Return a new instance of @code{gdb.Value} that is the result of
1005 casting this instance to the type described by @var{type}, which must
1006 be a @code{gdb.Type} object. If the cast cannot be performed for some
1007 reason, this method throws an exception.
1008 @end defun
1009
1010 @defun Value.dereference ()
1011 For pointer data types, this method returns a new @code{gdb.Value} object
1012 whose contents is the object pointed to by the pointer. For example, if
1013 @code{foo} is a C pointer to an @code{int}, declared in your C program as
1014
1015 @smallexample
1016 int *foo;
1017 @end smallexample
1018
1019 @noindent
1020 then you can use the corresponding @code{gdb.Value} to access what
1021 @code{foo} points to like this:
1022
1023 @smallexample
1024 bar = foo.dereference ()
1025 @end smallexample
1026
1027 The result @code{bar} will be a @code{gdb.Value} object holding the
1028 value pointed to by @code{foo}.
1029
1030 A similar function @code{Value.referenced_value} exists which also
1031 returns @code{gdb.Value} objects corresponding to the values pointed to
1032 by pointer values (and additionally, values referenced by reference
1033 values). However, the behavior of @code{Value.dereference}
1034 differs from @code{Value.referenced_value} by the fact that the
1035 behavior of @code{Value.dereference} is identical to applying the C
1036 unary operator @code{*} on a given value. For example, consider a
1037 reference to a pointer @code{ptrref}, declared in your C@t{++} program
1038 as
1039
1040 @smallexample
1041 typedef int *intptr;
1042 ...
1043 int val = 10;
1044 intptr ptr = &val;
1045 intptr &ptrref = ptr;
1046 @end smallexample
1047
1048 Though @code{ptrref} is a reference value, one can apply the method
1049 @code{Value.dereference} to the @code{gdb.Value} object corresponding
1050 to it and obtain a @code{gdb.Value} which is identical to that
1051 corresponding to @code{val}. However, if you apply the method
1052 @code{Value.referenced_value}, the result would be a @code{gdb.Value}
1053 object identical to that corresponding to @code{ptr}.
1054
1055 @smallexample
1056 py_ptrref = gdb.parse_and_eval ("ptrref")
1057 py_val = py_ptrref.dereference ()
1058 py_ptr = py_ptrref.referenced_value ()
1059 @end smallexample
1060
1061 The @code{gdb.Value} object @code{py_val} is identical to that
1062 corresponding to @code{val}, and @code{py_ptr} is identical to that
1063 corresponding to @code{ptr}. In general, @code{Value.dereference} can
1064 be applied whenever the C unary operator @code{*} can be applied
1065 to the corresponding C value. For those cases where applying both
1066 @code{Value.dereference} and @code{Value.referenced_value} is allowed,
1067 the results obtained need not be identical (as we have seen in the above
1068 example). The results are however identical when applied on
1069 @code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
1070 objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
1071 @end defun
1072
1073 @defun Value.referenced_value ()
1074 For pointer or reference data types, this method returns a new
1075 @code{gdb.Value} object corresponding to the value referenced by the
1076 pointer/reference value. For pointer data types,
1077 @code{Value.dereference} and @code{Value.referenced_value} produce
1078 identical results. The difference between these methods is that
1079 @code{Value.dereference} cannot get the values referenced by reference
1080 values. For example, consider a reference to an @code{int}, declared
1081 in your C@t{++} program as
1082
1083 @smallexample
1084 int val = 10;
1085 int &ref = val;
1086 @end smallexample
1087
1088 @noindent
1089 then applying @code{Value.dereference} to the @code{gdb.Value} object
1090 corresponding to @code{ref} will result in an error, while applying
1091 @code{Value.referenced_value} will result in a @code{gdb.Value} object
1092 identical to that corresponding to @code{val}.
1093
1094 @smallexample
1095 py_ref = gdb.parse_and_eval ("ref")
1096 er_ref = py_ref.dereference () # Results in error
1097 py_val = py_ref.referenced_value () # Returns the referenced value
1098 @end smallexample
1099
1100 The @code{gdb.Value} object @code{py_val} is identical to that
1101 corresponding to @code{val}.
1102 @end defun
1103
1104 @defun Value.reference_value ()
1105 Return a @code{gdb.Value} object which is a reference to the value
1106 encapsulated by this instance.
1107 @end defun
1108
1109 @defun Value.const_value ()
1110 Return a @code{gdb.Value} object which is a @code{const} version of the
1111 value encapsulated by this instance.
1112 @end defun
1113
1114 @defun Value.dynamic_cast (type)
1115 Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
1116 operator were used. Consult a C@t{++} reference for details.
1117 @end defun
1118
1119 @defun Value.reinterpret_cast (type)
1120 Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
1121 operator were used. Consult a C@t{++} reference for details.
1122 @end defun
1123
1124 @defun Value.format_string (...)
1125 Convert a @code{gdb.Value} to a string, similarly to what the @code{print}
1126 command does. Invoked with no arguments, this is equivalent to calling
1127 the @code{str} function on the @code{gdb.Value}. The representation of
1128 the same value may change across different versions of @value{GDBN}, so
1129 you shouldn't, for instance, parse the strings returned by this method.
1130
1131 All the arguments are keyword only. If an argument is not specified, the
1132 current global default setting is used.
1133
1134 @table @code
1135 @item raw
1136 @code{True} if pretty-printers (@pxref{Pretty Printing}) should not be
1137 used to format the value. @code{False} if enabled pretty-printers
1138 matching the type represented by the @code{gdb.Value} should be used to
1139 format it.
1140
1141 @item pretty_arrays
1142 @code{True} if arrays should be pretty printed to be more convenient to
1143 read, @code{False} if they shouldn't (see @code{set print array} in
1144 @ref{Print Settings}).
1145
1146 @item pretty_structs
1147 @code{True} if structs should be pretty printed to be more convenient to
1148 read, @code{False} if they shouldn't (see @code{set print pretty} in
1149 @ref{Print Settings}).
1150
1151 @item array_indexes
1152 @code{True} if array indexes should be included in the string
1153 representation of arrays, @code{False} if they shouldn't (see @code{set
1154 print array-indexes} in @ref{Print Settings}).
1155
1156 @item symbols
1157 @code{True} if the string representation of a pointer should include the
1158 corresponding symbol name (if one exists), @code{False} if it shouldn't
1159 (see @code{set print symbol} in @ref{Print Settings}).
1160
1161 @item unions
1162 @code{True} if unions which are contained in other structures or unions
1163 should be expanded, @code{False} if they shouldn't (see @code{set print
1164 union} in @ref{Print Settings}).
1165
1166 @item address
1167 @code{True} if the string representation of a pointer should include the
1168 address, @code{False} if it shouldn't (see @code{set print address} in
1169 @ref{Print Settings}).
1170
1171 @item nibbles
1172 @code{True} if binary values should be displayed in groups of four bits,
1173 known as nibbles. @code{False} if it shouldn't (@pxref{Print Settings,
1174 set print nibbles}).
1175
1176 @item deref_refs
1177 @code{True} if C@t{++} references should be resolved to the value they
1178 refer to, @code{False} (the default) if they shouldn't. Note that, unlike
1179 for the @code{print} command, references are not automatically expanded
1180 when using the @code{format_string} method or the @code{str}
1181 function. There is no global @code{print} setting to change the default
1182 behaviour.
1183
1184 @item actual_objects
1185 @code{True} if the representation of a pointer to an object should
1186 identify the @emph{actual} (derived) type of the object rather than the
1187 @emph{declared} type, using the virtual function table. @code{False} if
1188 the @emph{declared} type should be used. (See @code{set print object} in
1189 @ref{Print Settings}).
1190
1191 @item static_members
1192 @code{True} if static members should be included in the string
1193 representation of a C@t{++} object, @code{False} if they shouldn't (see
1194 @code{set print static-members} in @ref{Print Settings}).
1195
1196 @item max_characters
1197 Number of string characters to print, @code{0} to follow
1198 @code{max_elements}, or @code{UINT_MAX} to print an unlimited number
1199 of characters (see @code{set print characters} in @ref{Print Settings}).
1200
1201 @item max_elements
1202 Number of array elements to print, or @code{0} to print an unlimited
1203 number of elements (see @code{set print elements} in @ref{Print
1204 Settings}).
1205
1206 @item max_depth
1207 The maximum depth to print for nested structs and unions, or @code{-1}
1208 to print an unlimited number of elements (see @code{set print
1209 max-depth} in @ref{Print Settings}).
1210
1211 @item repeat_threshold
1212 Set the threshold for suppressing display of repeated array elements, or
1213 @code{0} to represent all elements, even if repeated. (See @code{set
1214 print repeats} in @ref{Print Settings}).
1215
1216 @item format
1217 A string containing a single character representing the format to use for
1218 the returned string. For instance, @code{'x'} is equivalent to using the
1219 @value{GDBN} command @code{print} with the @code{/x} option and formats
1220 the value as a hexadecimal number.
1221
1222 @item styling
1223 @code{True} if @value{GDBN} should apply styling to the returned
1224 string. When styling is applied, the returned string might contain
1225 ANSI terminal escape sequences. Escape sequences will only be
1226 included if styling is turned on, see @ref{Output Styling}.
1227 Additionally, @value{GDBN} only styles some value contents, so not
1228 every output string will contain escape sequences.
1229
1230 When @code{False}, which is the default, no output styling is applied.
1231
1232 @item summary
1233 @code{True} when just a summary should be printed. In this mode,
1234 scalar values are printed in their entirety, but aggregates such as
1235 structures or unions are omitted. This mode is used by @code{set
1236 print frame-arguments scalars} (@pxref{Print Settings}).
1237 @end table
1238 @end defun
1239
1240 @defun Value.to_array ()
1241 If this value is array-like (@pxref{Type.is_array_like}), then this
1242 method converts it to an array, which is returned. If this value is
1243 already an array, it is simply returned. Otherwise, an exception is
1244 throw.
1245 @end defun
1246
1247 @defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
1248 If this @code{gdb.Value} represents a string, then this method
1249 converts the contents to a Python string. Otherwise, this method will
1250 throw an exception.
1251
1252 Values are interpreted as strings according to the rules of the
1253 current language. If the optional length argument is given, the
1254 string will be converted to that length, and will include any embedded
1255 zeroes that the string may contain. Otherwise, for languages
1256 where the string is zero-terminated, the entire string will be
1257 converted.
1258
1259 For example, in C-like languages, a value is a string if it is a pointer
1260 to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
1261 or @code{char32_t}.
1262
1263 If the optional @var{encoding} argument is given, it must be a string
1264 naming the encoding of the string in the @code{gdb.Value}, such as
1265 @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
1266 the same encodings as the corresponding argument to Python's
1267 @code{string.decode} method, and the Python codec machinery will be used
1268 to convert the string. If @var{encoding} is not given, or if
1269 @var{encoding} is the empty string, then either the @code{target-charset}
1270 (@pxref{Character Sets}) will be used, or a language-specific encoding
1271 will be used, if the current language is able to supply one.
1272
1273 The optional @var{errors} argument is the same as the corresponding
1274 argument to Python's @code{string.decode} method.
1275
1276 If the optional @var{length} argument is given, the string will be
1277 fetched and converted to the given length.
1278 @end defun
1279
1280 @defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
1281 If this @code{gdb.Value} represents a string, then this method
1282 converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
1283 In Python}). Otherwise, this method will throw an exception.
1284
1285 If the optional @var{encoding} argument is given, it must be a string
1286 naming the encoding of the @code{gdb.LazyString}. Some examples are:
1287 @samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
1288 @var{encoding} argument is an encoding that @value{GDBN} does
1289 recognize, @value{GDBN} will raise an error.
1290
1291 When a lazy string is printed, the @value{GDBN} encoding machinery is
1292 used to convert the string during printing. If the optional
1293 @var{encoding} argument is not provided, or is an empty string,
1294 @value{GDBN} will automatically select the encoding most suitable for
1295 the string type. For further information on encoding in @value{GDBN}
1296 please see @ref{Character Sets}.
1297
1298 If the optional @var{length} argument is given, the string will be
1299 fetched and encoded to the length of characters specified. If
1300 the @var{length} argument is not provided, the string will be fetched
1301 and encoded until a null of appropriate width is found.
1302 @end defun
1303
1304 @defun Value.fetch_lazy ()
1305 If the @code{gdb.Value} object is currently a lazy value
1306 (@code{gdb.Value.is_lazy} is @code{True}), then the value is
1307 fetched from the inferior. Any errors that occur in the process
1308 will produce a Python exception.
1309
1310 If the @code{gdb.Value} object is not a lazy value, this method
1311 has no effect.
1312
1313 This method does not return a value.
1314 @end defun
1315
1316
1317 @node Types In Python
1318 @subsubsection Types In Python
1319 @cindex types in Python
1320 @cindex Python, working with types
1321
1322 @tindex gdb.Type
1323 @value{GDBN} represents types from the inferior using the class
1324 @code{gdb.Type}.
1325
1326 The following type-related functions are available in the @code{gdb}
1327 module:
1328
1329 @defun gdb.lookup_type (name @r{[}, block@r{]})
1330 This function looks up a type by its @var{name}, which must be a string.
1331
1332 If @var{block} is given, then @var{name} is looked up in that scope.
1333 Otherwise, it is searched for globally.
1334
1335 Ordinarily, this function will return an instance of @code{gdb.Type}.
1336 If the named type cannot be found, it will throw an exception.
1337 @end defun
1338
1339 Integer types can be found without looking them up by name.
1340 @xref{Architectures In Python}, for the @code{integer_type} method.
1341
1342 If the type is a structure or class type, or an enum type, the fields
1343 of that type can be accessed using the Python @dfn{dictionary syntax}.
1344 For example, if @code{some_type} is a @code{gdb.Type} instance holding
1345 a structure type, you can access its @code{foo} field with:
1346
1347 @smallexample
1348 bar = some_type['foo']
1349 @end smallexample
1350
1351 @code{bar} will be a @code{gdb.Field} object; see below under the
1352 description of the @code{Type.fields} method for a description of the
1353 @code{gdb.Field} class.
1354
1355 An instance of @code{Type} has the following attributes:
1356
1357 @defvar Type.alignof
1358 The alignment of this type, in bytes. Type alignment comes from the
1359 debugging information; if it was not specified, then @value{GDBN} will
1360 use the relevant ABI to try to determine the alignment. In some
1361 cases, even this is not possible, and zero will be returned.
1362 @end defvar
1363
1364 @defvar Type.code
1365 The type code for this type. The type code will be one of the
1366 @code{TYPE_CODE_} constants defined below.
1367 @end defvar
1368
1369 @defvar Type.dynamic
1370 A boolean indicating whether this type is dynamic. In some
1371 situations, such as Rust @code{enum} types or Ada variant records, the
1372 concrete type of a value may vary depending on its contents. That is,
1373 the declared type of a variable, or the type returned by
1374 @code{gdb.lookup_type} may be dynamic; while the type of the
1375 variable's value will be a concrete instance of that dynamic type.
1376
1377 For example, consider this code:
1378 @smallexample
1379 int n;
1380 int array[n];
1381 @end smallexample
1382
1383 Here, at least conceptually (whether your compiler actually does this
1384 is a separate issue), examining @w{@code{gdb.lookup_symbol("array", ...).type}}
1385 could yield a @code{gdb.Type} which reports a size of @code{None}.
1386 This is the dynamic type.
1387
1388 However, examining @code{gdb.parse_and_eval("array").type} would yield
1389 a concrete type, whose length would be known.
1390 @end defvar
1391
1392 @defvar Type.name
1393 The name of this type. If this type has no name, then @code{None}
1394 is returned.
1395 @end defvar
1396
1397 @defvar Type.sizeof
1398 The size of this type, in target @code{char} units. Usually, a
1399 target's @code{char} type will be an 8-bit byte. However, on some
1400 unusual platforms, this type may have a different size. A dynamic
1401 type may not have a fixed size; in this case, this attribute's value
1402 will be @code{None}.
1403 @end defvar
1404
1405 @defvar Type.tag
1406 The tag name for this type. The tag name is the name after
1407 @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
1408 languages have this concept. If this type has no tag name, then
1409 @code{None} is returned.
1410 @end defvar
1411
1412 @defvar Type.objfile
1413 The @code{gdb.Objfile} that this type was defined in, or @code{None} if
1414 there is no associated objfile.
1415 @end defvar
1416
1417 @defvar Type.is_scalar
1418 This property is @code{True} if the type is a scalar type, otherwise,
1419 this property is @code{False}. Examples of non-scalar types include
1420 structures, unions, and classes.
1421 @end defvar
1422
1423 @defvar Type.is_signed
1424 For scalar types (those for which @code{Type.is_scalar} is
1425 @code{True}), this property is @code{True} if the type is signed,
1426 otherwise this property is @code{False}.
1427
1428 Attempting to read this property for a non-scalar type (a type for
1429 which @code{Type.is_scalar} is @code{False}), will raise a
1430 @code{ValueError}.
1431 @end defvar
1432
1433 @defvar Type.is_array_like
1434 @anchor{Type.is_array_like}
1435 A boolean indicating whether this type is array-like.
1436
1437 Some languages have array-like objects that are represented internally
1438 as structures. For example, this is true for a Rust slice type, or
1439 for an Ada unconstrained array. @value{GDBN} may know about these
1440 types. This determination is done based on the language from which
1441 the type originated.
1442 @end defvar
1443
1444 @defvar Type.is_string_like
1445 A boolean indicating whether this type is string-like. Like
1446 @code{Type.is_array_like}, this is determined based on the originating
1447 language of the type.
1448 @end defvar
1449
1450 The following methods are provided:
1451
1452 @defun Type.fields ()
1453
1454 Return the fields of this type. The behavior depends on the type code:
1455
1456 @itemize @bullet
1457
1458 @item
1459 For structure and union types, this method returns the fields.
1460
1461 @item
1462 Enum types have one field per enum constant.
1463
1464 @item
1465 Function and method types have one field per parameter. The base types of
1466 C@t{++} classes are also represented as fields.
1467
1468 @item
1469 Array types have one field representing the array's range.
1470
1471 @item
1472 If the type does not fit into one of these categories, a @code{TypeError}
1473 is raised.
1474
1475 @end itemize
1476
1477 Each field is a @code{gdb.Field} object, with some pre-defined attributes:
1478 @table @code
1479 @item bitpos
1480 This attribute is not available for @code{enum} or @code{static}
1481 (as in C@t{++}) fields. The value is the position, counting
1482 in bits, from the start of the containing type. Note that, in a
1483 dynamic type, the position of a field may not be constant. In this
1484 case, the value will be @code{None}. Also, a dynamic type may have
1485 fields that do not appear in a corresponding concrete type.
1486
1487 @item enumval
1488 This attribute is only available for @code{enum} fields, and its value
1489 is the enumeration member's integer representation.
1490
1491 @item name
1492 The name of the field, or @code{None} for anonymous fields.
1493
1494 @item artificial
1495 This is @code{True} if the field is artificial, usually meaning that
1496 it was provided by the compiler and not the user. This attribute is
1497 always provided, and is @code{False} if the field is not artificial.
1498
1499 @item is_base_class
1500 This is @code{True} if the field represents a base class of a C@t{++}
1501 structure. This attribute is always provided, and is @code{False}
1502 if the field is not a base class of the type that is the argument of
1503 @code{fields}, or if that type was not a C@t{++} class.
1504
1505 @item bitsize
1506 If the field is packed, or is a bitfield, then this will have a
1507 non-zero value, which is the size of the field in bits. Otherwise,
1508 this will be zero; in this case the field's size is given by its type.
1509
1510 @item type
1511 The type of the field. This is usually an instance of @code{Type},
1512 but it can be @code{None} in some situations.
1513
1514 @item parent_type
1515 The type which contains this field. This is an instance of
1516 @code{gdb.Type}.
1517 @end table
1518 @end defun
1519
1520 @defun Type.array (n1 @r{[}, n2@r{]})
1521 Return a new @code{gdb.Type} object which represents an array of this
1522 type. If one argument is given, it is the inclusive upper bound of
1523 the array; in this case the lower bound is zero. If two arguments are
1524 given, the first argument is the lower bound of the array, and the
1525 second argument is the upper bound of the array. An array's length
1526 must not be negative, but the bounds can be.
1527 @end defun
1528
1529 @defun Type.vector (n1 @r{[}, n2@r{]})
1530 Return a new @code{gdb.Type} object which represents a vector of this
1531 type. If one argument is given, it is the inclusive upper bound of
1532 the vector; in this case the lower bound is zero. If two arguments are
1533 given, the first argument is the lower bound of the vector, and the
1534 second argument is the upper bound of the vector. A vector's length
1535 must not be negative, but the bounds can be.
1536
1537 The difference between an @code{array} and a @code{vector} is that
1538 arrays behave like in C: when used in expressions they decay to a pointer
1539 to the first element whereas vectors are treated as first class values.
1540 @end defun
1541
1542 @defun Type.const ()
1543 Return a new @code{gdb.Type} object which represents a
1544 @code{const}-qualified variant of this type.
1545 @end defun
1546
1547 @defun Type.volatile ()
1548 Return a new @code{gdb.Type} object which represents a
1549 @code{volatile}-qualified variant of this type.
1550 @end defun
1551
1552 @defun Type.unqualified ()
1553 Return a new @code{gdb.Type} object which represents an unqualified
1554 variant of this type. That is, the result is neither @code{const} nor
1555 @code{volatile}.
1556 @end defun
1557
1558 @defun Type.range ()
1559 Return a Python @code{Tuple} object that contains two elements: the
1560 low bound of the argument type and the high bound of that type. If
1561 the type does not have a range, @value{GDBN} will raise a
1562 @code{gdb.error} exception (@pxref{Exception Handling}).
1563 @end defun
1564
1565 @defun Type.reference ()
1566 Return a new @code{gdb.Type} object which represents a reference to this
1567 type.
1568 @end defun
1569
1570 @defun Type.pointer ()
1571 Return a new @code{gdb.Type} object which represents a pointer to this
1572 type.
1573 @end defun
1574
1575 @defun Type.strip_typedefs ()
1576 Return a new @code{gdb.Type} that represents the real type,
1577 after removing all layers of typedefs.
1578 @end defun
1579
1580 @defun Type.target ()
1581 Return a new @code{gdb.Type} object which represents the target type
1582 of this type.
1583
1584 For a pointer type, the target type is the type of the pointed-to
1585 object. For an array type (meaning C-like arrays), the target type is
1586 the type of the elements of the array. For a function or method type,
1587 the target type is the type of the return value. For a complex type,
1588 the target type is the type of the elements. For a typedef, the
1589 target type is the aliased type.
1590
1591 If the type does not have a target, this method will throw an
1592 exception.
1593 @end defun
1594
1595 @defun Type.template_argument (n @r{[}, block@r{]})
1596 If this @code{gdb.Type} is an instantiation of a template, this will
1597 return a new @code{gdb.Value} or @code{gdb.Type} which represents the
1598 value of the @var{n}th template argument (indexed starting at 0).
1599
1600 If this @code{gdb.Type} is not a template type, or if the type has fewer
1601 than @var{n} template arguments, this will throw an exception.
1602 Ordinarily, only C@t{++} code will have template types.
1603
1604 If @var{block} is given, then @var{name} is looked up in that scope.
1605 Otherwise, it is searched for globally.
1606 @end defun
1607
1608 @defun Type.optimized_out ()
1609 Return @code{gdb.Value} instance of this type whose value is optimized
1610 out. This allows a frame decorator to indicate that the value of an
1611 argument or a local variable is not known.
1612 @end defun
1613
1614 Each type has a code, which indicates what category this type falls
1615 into. The available type categories are represented by constants
1616 defined in the @code{gdb} module:
1617
1618 @vtable @code
1619 @vindex TYPE_CODE_PTR
1620 @item gdb.TYPE_CODE_PTR
1621 The type is a pointer.
1622
1623 @vindex TYPE_CODE_ARRAY
1624 @item gdb.TYPE_CODE_ARRAY
1625 The type is an array.
1626
1627 @vindex TYPE_CODE_STRUCT
1628 @item gdb.TYPE_CODE_STRUCT
1629 The type is a structure.
1630
1631 @vindex TYPE_CODE_UNION
1632 @item gdb.TYPE_CODE_UNION
1633 The type is a union.
1634
1635 @vindex TYPE_CODE_ENUM
1636 @item gdb.TYPE_CODE_ENUM
1637 The type is an enum.
1638
1639 @vindex TYPE_CODE_FLAGS
1640 @item gdb.TYPE_CODE_FLAGS
1641 A bit flags type, used for things such as status registers.
1642
1643 @vindex TYPE_CODE_FUNC
1644 @item gdb.TYPE_CODE_FUNC
1645 The type is a function.
1646
1647 @vindex TYPE_CODE_INT
1648 @item gdb.TYPE_CODE_INT
1649 The type is an integer type.
1650
1651 @vindex TYPE_CODE_FLT
1652 @item gdb.TYPE_CODE_FLT
1653 A floating point type.
1654
1655 @vindex TYPE_CODE_VOID
1656 @item gdb.TYPE_CODE_VOID
1657 The special type @code{void}.
1658
1659 @vindex TYPE_CODE_SET
1660 @item gdb.TYPE_CODE_SET
1661 A Pascal set type.
1662
1663 @vindex TYPE_CODE_RANGE
1664 @item gdb.TYPE_CODE_RANGE
1665 A range type, that is, an integer type with bounds.
1666
1667 @vindex TYPE_CODE_STRING
1668 @item gdb.TYPE_CODE_STRING
1669 A string type. Note that this is only used for certain languages with
1670 language-defined string types; C strings are not represented this way.
1671
1672 @vindex TYPE_CODE_BITSTRING
1673 @item gdb.TYPE_CODE_BITSTRING
1674 A string of bits. It is deprecated.
1675
1676 @vindex TYPE_CODE_ERROR
1677 @item gdb.TYPE_CODE_ERROR
1678 An unknown or erroneous type.
1679
1680 @vindex TYPE_CODE_METHOD
1681 @item gdb.TYPE_CODE_METHOD
1682 A method type, as found in C@t{++}.
1683
1684 @vindex TYPE_CODE_METHODPTR
1685 @item gdb.TYPE_CODE_METHODPTR
1686 A pointer-to-member-function.
1687
1688 @vindex TYPE_CODE_MEMBERPTR
1689 @item gdb.TYPE_CODE_MEMBERPTR
1690 A pointer-to-member.
1691
1692 @vindex TYPE_CODE_REF
1693 @item gdb.TYPE_CODE_REF
1694 A reference type.
1695
1696 @vindex TYPE_CODE_RVALUE_REF
1697 @item gdb.TYPE_CODE_RVALUE_REF
1698 A C@t{++}11 rvalue reference type.
1699
1700 @vindex TYPE_CODE_CHAR
1701 @item gdb.TYPE_CODE_CHAR
1702 A character type.
1703
1704 @vindex TYPE_CODE_BOOL
1705 @item gdb.TYPE_CODE_BOOL
1706 A boolean type.
1707
1708 @vindex TYPE_CODE_COMPLEX
1709 @item gdb.TYPE_CODE_COMPLEX
1710 A complex float type.
1711
1712 @vindex TYPE_CODE_TYPEDEF
1713 @item gdb.TYPE_CODE_TYPEDEF
1714 A typedef to some other type.
1715
1716 @vindex TYPE_CODE_NAMESPACE
1717 @item gdb.TYPE_CODE_NAMESPACE
1718 A C@t{++} namespace.
1719
1720 @vindex TYPE_CODE_DECFLOAT
1721 @item gdb.TYPE_CODE_DECFLOAT
1722 A decimal floating point type.
1723
1724 @vindex TYPE_CODE_INTERNAL_FUNCTION
1725 @item gdb.TYPE_CODE_INTERNAL_FUNCTION
1726 A function internal to @value{GDBN}. This is the type used to represent
1727 convenience functions.
1728
1729 @vindex TYPE_CODE_XMETHOD
1730 @item gdb.TYPE_CODE_XMETHOD
1731 A method internal to @value{GDBN}. This is the type used to represent
1732 xmethods (@pxref{Writing an Xmethod}).
1733
1734 @vindex TYPE_CODE_FIXED_POINT
1735 @item gdb.TYPE_CODE_FIXED_POINT
1736 A fixed-point number.
1737
1738 @vindex TYPE_CODE_NAMESPACE
1739 @item gdb.TYPE_CODE_NAMESPACE
1740 A Fortran namelist.
1741 @end vtable
1742
1743 Further support for types is provided in the @code{gdb.types}
1744 Python module (@pxref{gdb.types}).
1745
1746 @node Pretty Printing API
1747 @subsubsection Pretty Printing API
1748 @cindex python pretty printing api
1749
1750 A pretty-printer is just an object that holds a value and implements a
1751 specific interface, defined here. An example output is provided
1752 (@pxref{Pretty Printing}).
1753
1754 Because @value{GDBN} did not document extensibility for
1755 pretty-printers, by default @value{GDBN} will assume that only the
1756 basic pretty-printer methods may be available. The basic methods are
1757 marked as such, below.
1758
1759 To allow extensibility, @value{GDBN} provides the
1760 @code{gdb.ValuePrinter} base class. This class does not provide any
1761 attributes or behavior, but instead serves as a tag that can be
1762 recognized by @value{GDBN}. For such printers, @value{GDBN} reserves
1763 all attributes starting with a lower-case letter. That is, in the
1764 future, @value{GDBN} may add a new method or attribute to the
1765 pretty-printer protocol, and @code{gdb.ValuePrinter}-based printers
1766 are expected to handle this gracefully. A simple way to do this would
1767 be to use a leading underscore (or two, following the Python
1768 name-mangling scheme) to any attributes local to the implementation.
1769
1770 @defun pretty_printer.children (self)
1771 @value{GDBN} will call this method on a pretty-printer to compute the
1772 children of the pretty-printer's value.
1773
1774 This method must return an object conforming to the Python iterator
1775 protocol. Each item returned by the iterator must be a tuple holding
1776 two elements. The first element is the ``name'' of the child; the
1777 second element is the child's value. The value can be any Python
1778 object which is convertible to a @value{GDBN} value.
1779
1780 This is a basic method, and is optional. If it does not exist,
1781 @value{GDBN} will act as though the value has no children.
1782
1783 For efficiency, the @code{children} method should lazily compute its
1784 results. This will let @value{GDBN} read as few elements as
1785 necessary, for example when various print settings (@pxref{Print
1786 Settings}) or @code{-var-list-children} (@pxref{GDB/MI Variable
1787 Objects}) limit the number of elements to be displayed.
1788
1789 Children may be hidden from display based on the value of @samp{set
1790 print max-depth} (@pxref{Print Settings}).
1791 @end defun
1792
1793 @defun pretty_printer.display_hint (self)
1794 The CLI may call this method and use its result to change the
1795 formatting of a value. The result will also be supplied to an MI
1796 consumer as a @samp{displayhint} attribute of the variable being
1797 printed.
1798
1799 This is a basic method, and is optional. If it does exist, this
1800 method must return a string or the special value @code{None}.
1801
1802 Some display hints are predefined by @value{GDBN}:
1803
1804 @table @samp
1805 @item array
1806 Indicate that the object being printed is ``array-like''. The CLI
1807 uses this to respect parameters such as @code{set print elements} and
1808 @code{set print array}.
1809
1810 @item map
1811 Indicate that the object being printed is ``map-like'', and that the
1812 children of this value can be assumed to alternate between keys and
1813 values.
1814
1815 @item string
1816 Indicate that the object being printed is ``string-like''. If the
1817 printer's @code{to_string} method returns a Python string of some
1818 kind, then @value{GDBN} will call its internal language-specific
1819 string-printing function to format the string. For the CLI this means
1820 adding quotation marks, possibly escaping some characters, respecting
1821 @code{set print elements}, and the like.
1822 @end table
1823
1824 The special value @code{None} causes @value{GDBN} to apply the default
1825 display rules.
1826 @end defun
1827
1828 @defun pretty_printer.to_string (self)
1829 @value{GDBN} will call this method to display the string
1830 representation of the value passed to the object's constructor.
1831
1832 This is a basic method, and is optional.
1833
1834 When printing from the CLI, if the @code{to_string} method exists,
1835 then @value{GDBN} will prepend its result to the values returned by
1836 @code{children}. Exactly how this formatting is done is dependent on
1837 the display hint, and may change as more hints are added. Also,
1838 depending on the print settings (@pxref{Print Settings}), the CLI may
1839 print just the result of @code{to_string} in a stack trace, omitting
1840 the result of @code{children}.
1841
1842 If this method returns a string, it is printed verbatim.
1843
1844 Otherwise, if this method returns an instance of @code{gdb.Value},
1845 then @value{GDBN} prints this value. This may result in a call to
1846 another pretty-printer.
1847
1848 If instead the method returns a Python value which is convertible to a
1849 @code{gdb.Value}, then @value{GDBN} performs the conversion and prints
1850 the resulting value. Again, this may result in a call to another
1851 pretty-printer. Python scalars (integers, floats, and booleans) and
1852 strings are convertible to @code{gdb.Value}; other types are not.
1853
1854 Finally, if this method returns @code{None} then no further operations
1855 are performed in this method and nothing is printed.
1856
1857 If the result is not one of these types, an exception is raised.
1858 @end defun
1859
1860 @defun pretty_printer.num_children ()
1861 This is not a basic method, so @value{GDBN} will only ever call it for
1862 objects derived from @code{gdb.ValuePrinter}.
1863
1864 If available, this method should return the number of children.
1865 @code{None} may be returned if the number can't readily be computed.
1866 @end defun
1867
1868 @defun pretty_printer.child (n)
1869 This is not a basic method, so @value{GDBN} will only ever call it for
1870 objects derived from @code{gdb.ValuePrinter}.
1871
1872 If available, this method should return the child item (that is, a
1873 tuple holding the name and value of this child) indicated by @var{n}.
1874 Indices start at zero.
1875 @end defun
1876
1877 @value{GDBN} provides a function which can be used to look up the
1878 default pretty-printer for a @code{gdb.Value}:
1879
1880 @defun gdb.default_visualizer (value)
1881 This function takes a @code{gdb.Value} object as an argument. If a
1882 pretty-printer for this value exists, then it is returned. If no such
1883 printer exists, then this returns @code{None}.
1884 @end defun
1885
1886 Normally, a pretty-printer can respect the user's print settings
1887 (including temporarily applied settings, such as @samp{/x}) simply by
1888 calling @code{Value.format_string} (@pxref{Values From Inferior}).
1889 However, these settings can also be queried directly:
1890
1891 @defun gdb.print_options ()
1892 Return a dictionary whose keys are the valid keywords that can be
1893 given to @code{Value.format_string}, and whose values are the user's
1894 settings. During a @code{print} or other operation, the values will
1895 reflect any flags that are temporarily in effect.
1896
1897 @smallexample
1898 (gdb) python print (gdb.print_options ()['max_elements'])
1899 200
1900 @end smallexample
1901 @end defun
1902
1903 @node Selecting Pretty-Printers
1904 @subsubsection Selecting Pretty-Printers
1905 @cindex selecting python pretty-printers
1906
1907 @value{GDBN} provides several ways to register a pretty-printer:
1908 globally, per program space, and per objfile. When choosing how to
1909 register your pretty-printer, a good rule is to register it with the
1910 smallest scope possible: that is prefer a specific objfile first, then
1911 a program space, and only register a printer globally as a last
1912 resort.
1913
1914 @defvar gdb.pretty_printers
1915 The Python list @code{gdb.pretty_printers} contains an array of
1916 functions or callable objects that have been registered via addition
1917 as a pretty-printer. Printers in this list are called @code{global}
1918 printers, they're available when debugging all inferiors.
1919 @end defvar
1920
1921 Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
1922 Each @code{gdb.Objfile} also contains a @code{pretty_printers}
1923 attribute.
1924
1925 Each function on these lists is passed a single @code{gdb.Value}
1926 argument and should return a pretty-printer object conforming to the
1927 interface definition above (@pxref{Pretty Printing API}). If a function
1928 cannot create a pretty-printer for the value, it should return
1929 @code{None}.
1930
1931 @value{GDBN} first checks the @code{pretty_printers} attribute of each
1932 @code{gdb.Objfile} in the current program space and iteratively calls
1933 each enabled lookup routine in the list for that @code{gdb.Objfile}
1934 until it receives a pretty-printer object.
1935 If no pretty-printer is found in the objfile lists, @value{GDBN} then
1936 searches the pretty-printer list of the current program space,
1937 calling each enabled function until an object is returned.
1938 After these lists have been exhausted, it tries the global
1939 @code{gdb.pretty_printers} list, again calling each enabled function until an
1940 object is returned.
1941
1942 The order in which the objfiles are searched is not specified. For a
1943 given list, functions are always invoked from the head of the list,
1944 and iterated over sequentially until the end of the list, or a printer
1945 object is returned.
1946
1947 For various reasons a pretty-printer may not work.
1948 For example, the underlying data structure may have changed and
1949 the pretty-printer is out of date.
1950
1951 The consequences of a broken pretty-printer are severe enough that
1952 @value{GDBN} provides support for enabling and disabling individual
1953 printers. For example, if @code{print frame-arguments} is on,
1954 a backtrace can become highly illegible if any argument is printed
1955 with a broken printer.
1956
1957 Pretty-printers are enabled and disabled by attaching an @code{enabled}
1958 attribute to the registered function or callable object. If this attribute
1959 is present and its value is @code{False}, the printer is disabled, otherwise
1960 the printer is enabled.
1961
1962 @node Writing a Pretty-Printer
1963 @subsubsection Writing a Pretty-Printer
1964 @cindex writing a pretty-printer
1965
1966 A pretty-printer consists of two parts: a lookup function to detect
1967 if the type is supported, and the printer itself.
1968
1969 Here is an example showing how a @code{std::string} printer might be
1970 written. @xref{Pretty Printing API}, for details on the API this class
1971 must provide. Note that this example uses the @code{gdb.ValuePrinter}
1972 base class, and is careful to use a leading underscore for its local
1973 state.
1974
1975 @smallexample
1976 class StdStringPrinter(gdb.ValuePrinter):
1977 "Print a std::string"
1978
1979 def __init__(self, val):
1980 self.__val = val
1981
1982 def to_string(self):
1983 return self.__val['_M_dataplus']['_M_p']
1984
1985 def display_hint(self):
1986 return 'string'
1987 @end smallexample
1988
1989 And here is an example showing how a lookup function for the printer
1990 example above might be written.
1991
1992 @smallexample
1993 def str_lookup_function(val):
1994 lookup_tag = val.type.tag
1995 if lookup_tag is None:
1996 return None
1997 regex = re.compile("^std::basic_string<char,.*>$")
1998 if regex.match(lookup_tag):
1999 return StdStringPrinter(val)
2000 return None
2001 @end smallexample
2002
2003 The example lookup function extracts the value's type, and attempts to
2004 match it to a type that it can pretty-print. If it is a type the
2005 printer can pretty-print, it will return a printer object. If not, it
2006 returns @code{None}.
2007
2008 We recommend that you put your core pretty-printers into a Python
2009 package. If your pretty-printers are for use with a library, we
2010 further recommend embedding a version number into the package name.
2011 This practice will enable @value{GDBN} to load multiple versions of
2012 your pretty-printers at the same time, because they will have
2013 different names.
2014
2015 You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
2016 can be evaluated multiple times without changing its meaning. An
2017 ideal auto-load file will consist solely of @code{import}s of your
2018 printer modules, followed by a call to a register pretty-printers with
2019 the current objfile.
2020
2021 Taken as a whole, this approach will scale nicely to multiple
2022 inferiors, each potentially using a different library version.
2023 Embedding a version number in the Python package name will ensure that
2024 @value{GDBN} is able to load both sets of printers simultaneously.
2025 Then, because the search for pretty-printers is done by objfile, and
2026 because your auto-loaded code took care to register your library's
2027 printers with a specific objfile, @value{GDBN} will find the correct
2028 printers for the specific version of the library used by each
2029 inferior.
2030
2031 To continue the @code{std::string} example (@pxref{Pretty Printing API}),
2032 this code might appear in @code{gdb.libstdcxx.v6}:
2033
2034 @smallexample
2035 def register_printers(objfile):
2036 objfile.pretty_printers.append(str_lookup_function)
2037 @end smallexample
2038
2039 @noindent
2040 And then the corresponding contents of the auto-load file would be:
2041
2042 @smallexample
2043 import gdb.libstdcxx.v6
2044 gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
2045 @end smallexample
2046
2047 The previous example illustrates a basic pretty-printer.
2048 There are a few things that can be improved on.
2049 The printer doesn't have a name, making it hard to identify in a
2050 list of installed printers. The lookup function has a name, but
2051 lookup functions can have arbitrary, even identical, names.
2052
2053 Second, the printer only handles one type, whereas a library typically has
2054 several types. One could install a lookup function for each desired type
2055 in the library, but one could also have a single lookup function recognize
2056 several types. The latter is the conventional way this is handled.
2057 If a pretty-printer can handle multiple data types, then its
2058 @dfn{subprinters} are the printers for the individual data types.
2059
2060 The @code{gdb.printing} module provides a formal way of solving these
2061 problems (@pxref{gdb.printing}).
2062 Here is another example that handles multiple types.
2063
2064 These are the types we are going to pretty-print:
2065
2066 @smallexample
2067 struct foo @{ int a, b; @};
2068 struct bar @{ struct foo x, y; @};
2069 @end smallexample
2070
2071 Here are the printers:
2072
2073 @smallexample
2074 class fooPrinter(gdb.ValuePrinter):
2075 """Print a foo object."""
2076
2077 def __init__(self, val):
2078 self.__val = val
2079
2080 def to_string(self):
2081 return ("a=<" + str(self.__val["a"]) +
2082 "> b=<" + str(self.__val["b"]) + ">")
2083
2084 class barPrinter(gdb.ValuePrinter):
2085 """Print a bar object."""
2086
2087 def __init__(self, val):
2088 self.__val = val
2089
2090 def to_string(self):
2091 return ("x=<" + str(self.__val["x"]) +
2092 "> y=<" + str(self.__val["y"]) + ">")
2093 @end smallexample
2094
2095 This example doesn't need a lookup function, that is handled by the
2096 @code{gdb.printing} module. Instead a function is provided to build up
2097 the object that handles the lookup.
2098
2099 @smallexample
2100 import gdb.printing
2101
2102 def build_pretty_printer():
2103 pp = gdb.printing.RegexpCollectionPrettyPrinter(
2104 "my_library")
2105 pp.add_printer('foo', '^foo$', fooPrinter)
2106 pp.add_printer('bar', '^bar$', barPrinter)
2107 return pp
2108 @end smallexample
2109
2110 And here is the autoload support:
2111
2112 @smallexample
2113 import gdb.printing
2114 import my_library
2115 gdb.printing.register_pretty_printer(
2116 gdb.current_objfile(),
2117 my_library.build_pretty_printer())
2118 @end smallexample
2119
2120 Finally, when this printer is loaded into @value{GDBN}, here is the
2121 corresponding output of @samp{info pretty-printer}:
2122
2123 @smallexample
2124 (gdb) info pretty-printer
2125 my_library.so:
2126 my_library
2127 foo
2128 bar
2129 @end smallexample
2130
2131 @node Type Printing API
2132 @subsubsection Type Printing API
2133 @cindex type printing API for Python
2134
2135 @value{GDBN} provides a way for Python code to customize type display.
2136 This is mainly useful for substituting canonical typedef names for
2137 types.
2138
2139 @cindex type printer
2140 A @dfn{type printer} is just a Python object conforming to a certain
2141 protocol. A simple base class implementing the protocol is provided;
2142 see @ref{gdb.types}. A type printer must supply at least:
2143
2144 @defivar type_printer enabled
2145 A boolean which is True if the printer is enabled, and False
2146 otherwise. This is manipulated by the @code{enable type-printer}
2147 and @code{disable type-printer} commands.
2148 @end defivar
2149
2150 @defivar type_printer name
2151 The name of the type printer. This must be a string. This is used by
2152 the @code{enable type-printer} and @code{disable type-printer}
2153 commands.
2154 @end defivar
2155
2156 @defmethod type_printer instantiate (self)
2157 This is called by @value{GDBN} at the start of type-printing. It is
2158 only called if the type printer is enabled. This method must return a
2159 new object that supplies a @code{recognize} method, as described below.
2160 @end defmethod
2161
2162
2163 When displaying a type, say via the @code{ptype} command, @value{GDBN}
2164 will compute a list of type recognizers. This is done by iterating
2165 first over the per-objfile type printers (@pxref{Objfiles In Python}),
2166 followed by the per-progspace type printers (@pxref{Progspaces In
2167 Python}), and finally the global type printers.
2168
2169 @value{GDBN} will call the @code{instantiate} method of each enabled
2170 type printer. If this method returns @code{None}, then the result is
2171 ignored; otherwise, it is appended to the list of recognizers.
2172
2173 Then, when @value{GDBN} is going to display a type name, it iterates
2174 over the list of recognizers. For each one, it calls the recognition
2175 function, stopping if the function returns a non-@code{None} value.
2176 The recognition function is defined as:
2177
2178 @defmethod type_recognizer recognize (self, type)
2179 If @var{type} is not recognized, return @code{None}. Otherwise,
2180 return a string which is to be printed as the name of @var{type}.
2181 The @var{type} argument will be an instance of @code{gdb.Type}
2182 (@pxref{Types In Python}).
2183 @end defmethod
2184
2185 @value{GDBN} uses this two-pass approach so that type printers can
2186 efficiently cache information without holding on to it too long. For
2187 example, it can be convenient to look up type information in a type
2188 printer and hold it for a recognizer's lifetime; if a single pass were
2189 done then type printers would have to make use of the event system in
2190 order to avoid holding information that could become stale as the
2191 inferior changed.
2192
2193 @node Frame Filter API
2194 @subsubsection Filtering Frames
2195 @cindex frame filters api
2196
2197 Frame filters are Python objects that manipulate the visibility of a
2198 frame or frames when a backtrace (@pxref{Backtrace}) is printed by
2199 @value{GDBN}.
2200
2201 Only commands that print a backtrace, or, in the case of @sc{gdb/mi}
2202 commands (@pxref{GDB/MI}), those that return a collection of frames
2203 are affected. The commands that work with frame filters are:
2204
2205 @code{backtrace} (@pxref{backtrace-command,, The backtrace command}),
2206 @code{-stack-list-frames}
2207 (@pxref{-stack-list-frames,, The -stack-list-frames command}),
2208 @code{-stack-list-variables} (@pxref{-stack-list-variables,, The
2209 -stack-list-variables command}), @code{-stack-list-arguments}
2210 @pxref{-stack-list-arguments,, The -stack-list-arguments command}) and
2211 @code{-stack-list-locals} (@pxref{-stack-list-locals,, The
2212 -stack-list-locals command}).
2213
2214 A frame filter works by taking an iterator as an argument, applying
2215 actions to the contents of that iterator, and returning another
2216 iterator (or, possibly, the same iterator it was provided in the case
2217 where the filter does not perform any operations). Typically, frame
2218 filters utilize tools such as the Python's @code{itertools} module to
2219 work with and create new iterators from the source iterator.
2220 Regardless of how a filter chooses to apply actions, it must not alter
2221 the underlying @value{GDBN} frame or frames, or attempt to alter the
2222 call-stack within @value{GDBN}. This preserves data integrity within
2223 @value{GDBN}. Frame filters are executed on a priority basis and care
2224 should be taken that some frame filters may have been executed before,
2225 and that some frame filters will be executed after.
2226
2227 An important consideration when designing frame filters, and well
2228 worth reflecting upon, is that frame filters should avoid unwinding
2229 the call stack if possible. Some stacks can run very deep, into the
2230 tens of thousands in some cases. To search every frame when a frame
2231 filter executes may be too expensive at that step. The frame filter
2232 cannot know how many frames it has to iterate over, and it may have to
2233 iterate through them all. This ends up duplicating effort as
2234 @value{GDBN} performs this iteration when it prints the frames. If
2235 the filter can defer unwinding frames until frame decorators are
2236 executed, after the last filter has executed, it should. @xref{Frame
2237 Decorator API}, for more information on decorators. Also, there are
2238 examples for both frame decorators and filters in later chapters.
2239 @xref{Writing a Frame Filter}, for more information.
2240
2241 The Python dictionary @code{gdb.frame_filters} contains key/object
2242 pairings that comprise a frame filter. Frame filters in this
2243 dictionary are called @code{global} frame filters, and they are
2244 available when debugging all inferiors. These frame filters must
2245 register with the dictionary directly. In addition to the
2246 @code{global} dictionary, there are other dictionaries that are loaded
2247 with different inferiors via auto-loading (@pxref{Python
2248 Auto-loading}). The two other areas where frame filter dictionaries
2249 can be found are: @code{gdb.Progspace} which contains a
2250 @code{frame_filters} dictionary attribute, and each @code{gdb.Objfile}
2251 object which also contains a @code{frame_filters} dictionary
2252 attribute.
2253
2254 When a command is executed from @value{GDBN} that is compatible with
2255 frame filters, @value{GDBN} combines the @code{global},
2256 @code{gdb.Progspace} and all @code{gdb.Objfile} dictionaries currently
2257 loaded. All of the @code{gdb.Objfile} dictionaries are combined, as
2258 several frames, and thus several object files, might be in use.
2259 @value{GDBN} then prunes any frame filter whose @code{enabled}
2260 attribute is @code{False}. This pruned list is then sorted according
2261 to the @code{priority} attribute in each filter.
2262
2263 Once the dictionaries are combined, pruned and sorted, @value{GDBN}
2264 creates an iterator which wraps each frame in the call stack in a
2265 @code{FrameDecorator} object, and calls each filter in order. The
2266 output from the previous filter will always be the input to the next
2267 filter, and so on.
2268
2269 Frame filters have a mandatory interface which each frame filter must
2270 implement, defined here:
2271
2272 @defun FrameFilter.filter (iterator)
2273 @value{GDBN} will call this method on a frame filter when it has
2274 reached the order in the priority list for that filter.
2275
2276 For example, if there are four frame filters:
2277
2278 @smallexample
2279 Name Priority
2280
2281 Filter1 5
2282 Filter2 10
2283 Filter3 100
2284 Filter4 1
2285 @end smallexample
2286
2287 The order that the frame filters will be called is:
2288
2289 @smallexample
2290 Filter3 -> Filter2 -> Filter1 -> Filter4
2291 @end smallexample
2292
2293 Note that the output from @code{Filter3} is passed to the input of
2294 @code{Filter2}, and so on.
2295
2296 This @code{filter} method is passed a Python iterator. This iterator
2297 contains a sequence of frame decorators that wrap each
2298 @code{gdb.Frame}, or a frame decorator that wraps another frame
2299 decorator. The first filter that is executed in the sequence of frame
2300 filters will receive an iterator entirely comprised of default
2301 @code{FrameDecorator} objects. However, after each frame filter is
2302 executed, the previous frame filter may have wrapped some or all of
2303 the frame decorators with their own frame decorator. As frame
2304 decorators must also conform to a mandatory interface, these
2305 decorators can be assumed to act in a uniform manner (@pxref{Frame
2306 Decorator API}).
2307
2308 This method must return an object conforming to the Python iterator
2309 protocol. Each item in the iterator must be an object conforming to
2310 the frame decorator interface. If a frame filter does not wish to
2311 perform any operations on this iterator, it should return that
2312 iterator untouched.
2313
2314 This method is not optional. If it does not exist, @value{GDBN} will
2315 raise and print an error.
2316 @end defun
2317
2318 @defvar FrameFilter.name
2319 The @code{name} attribute must be Python string which contains the
2320 name of the filter displayed by @value{GDBN} (@pxref{Frame Filter
2321 Management}). This attribute may contain any combination of letters
2322 or numbers. Care should be taken to ensure that it is unique. This
2323 attribute is mandatory.
2324 @end defvar
2325
2326 @defvar FrameFilter.enabled
2327 The @code{enabled} attribute must be Python boolean. This attribute
2328 indicates to @value{GDBN} whether the frame filter is enabled, and
2329 should be considered when frame filters are executed. If
2330 @code{enabled} is @code{True}, then the frame filter will be executed
2331 when any of the backtrace commands detailed earlier in this chapter
2332 are executed. If @code{enabled} is @code{False}, then the frame
2333 filter will not be executed. This attribute is mandatory.
2334 @end defvar
2335
2336 @defvar FrameFilter.priority
2337 The @code{priority} attribute must be Python integer. This attribute
2338 controls the order of execution in relation to other frame filters.
2339 There are no imposed limits on the range of @code{priority} other than
2340 it must be a valid integer. The higher the @code{priority} attribute,
2341 the sooner the frame filter will be executed in relation to other
2342 frame filters. Although @code{priority} can be negative, it is
2343 recommended practice to assume zero is the lowest priority that a
2344 frame filter can be assigned. Frame filters that have the same
2345 priority are executed in unsorted order in that priority slot. This
2346 attribute is mandatory. 100 is a good default priority.
2347 @end defvar
2348
2349 @node Frame Decorator API
2350 @subsubsection Decorating Frames
2351 @cindex frame decorator api
2352
2353 Frame decorators are sister objects to frame filters (@pxref{Frame
2354 Filter API}). Frame decorators are applied by a frame filter and can
2355 only be used in conjunction with frame filters.
2356
2357 The purpose of a frame decorator is to customize the printed content
2358 of each @code{gdb.Frame} in commands where frame filters are executed.
2359 This concept is called decorating a frame. Frame decorators decorate
2360 a @code{gdb.Frame} with Python code contained within each API call.
2361 This separates the actual data contained in a @code{gdb.Frame} from
2362 the decorated data produced by a frame decorator. This abstraction is
2363 necessary to maintain integrity of the data contained in each
2364 @code{gdb.Frame}.
2365
2366 Frame decorators have a mandatory interface, defined below.
2367
2368 @value{GDBN} already contains a frame decorator called
2369 @code{FrameDecorator}. This contains substantial amounts of
2370 boilerplate code to decorate the content of a @code{gdb.Frame}. It is
2371 recommended that other frame decorators inherit and extend this
2372 object, and only to override the methods needed.
2373
2374 @tindex gdb.FrameDecorator
2375 @code{FrameDecorator} is defined in the Python module
2376 @code{gdb.FrameDecorator}, so your code can import it like:
2377 @smallexample
2378 from gdb.FrameDecorator import FrameDecorator
2379 @end smallexample
2380
2381 @defun FrameDecorator.elided (self)
2382
2383 The @code{elided} method groups frames together in a hierarchical
2384 system. An example would be an interpreter, where multiple low-level
2385 frames make up a single call in the interpreted language. In this
2386 example, the frame filter would elide the low-level frames and present
2387 a single high-level frame, representing the call in the interpreted
2388 language, to the user.
2389
2390 The @code{elided} function must return an iterable and this iterable
2391 must contain the frames that are being elided wrapped in a suitable
2392 frame decorator. If no frames are being elided this function may
2393 return an empty iterable, or @code{None}. Elided frames are indented
2394 from normal frames in a @code{CLI} backtrace, or in the case of
2395 @sc{gdb/mi}, are placed in the @code{children} field of the eliding
2396 frame.
2397
2398 It is the frame filter's task to also filter out the elided frames from
2399 the source iterator. This will avoid printing the frame twice.
2400 @end defun
2401
2402 @defun FrameDecorator.function (self)
2403
2404 This method returns the name of the function in the frame that is to
2405 be printed.
2406
2407 This method must return a Python string describing the function, or
2408 @code{None}.
2409
2410 If this function returns @code{None}, @value{GDBN} will not print any
2411 data for this field.
2412 @end defun
2413
2414 @defun FrameDecorator.address (self)
2415
2416 This method returns the address of the frame that is to be printed.
2417
2418 This method must return a Python numeric integer type of sufficient
2419 size to describe the address of the frame, or @code{None}.
2420
2421 If this function returns a @code{None}, @value{GDBN} will not print
2422 any data for this field.
2423 @end defun
2424
2425 @defun FrameDecorator.filename (self)
2426
2427 This method returns the filename and path associated with this frame.
2428
2429 This method must return a Python string containing the filename and
2430 the path to the object file backing the frame, or @code{None}.
2431
2432 If this function returns a @code{None}, @value{GDBN} will not print
2433 any data for this field.
2434 @end defun
2435
2436 @defun FrameDecorator.line (self):
2437
2438 This method returns the line number associated with the current
2439 position within the function addressed by this frame.
2440
2441 This method must return a Python integer type, or @code{None}.
2442
2443 If this function returns a @code{None}, @value{GDBN} will not print
2444 any data for this field.
2445 @end defun
2446
2447 @defun FrameDecorator.frame_args (self)
2448 @anchor{frame_args}
2449
2450 This method must return an iterable, or @code{None}. Returning an
2451 empty iterable, or @code{None} means frame arguments will not be
2452 printed for this frame. This iterable must contain objects that
2453 implement two methods, described here.
2454
2455 This object must implement a @code{symbol} method which takes a
2456 single @code{self} parameter and must return a @code{gdb.Symbol}
2457 (@pxref{Symbols In Python}), or a Python string. The object must also
2458 implement a @code{value} method which takes a single @code{self}
2459 parameter and must return a @code{gdb.Value} (@pxref{Values From
2460 Inferior}), a Python value, or @code{None}. If the @code{value}
2461 method returns @code{None}, and the @code{argument} method returns a
2462 @code{gdb.Symbol}, @value{GDBN} will look-up and print the value of
2463 the @code{gdb.Symbol} automatically.
2464
2465 A brief example:
2466
2467 @smallexample
2468 class SymValueWrapper():
2469
2470 def __init__(self, symbol, value):
2471 self.sym = symbol
2472 self.val = value
2473
2474 def value(self):
2475 return self.val
2476
2477 def symbol(self):
2478 return self.sym
2479
2480 class SomeFrameDecorator()
2481 ...
2482 ...
2483 def frame_args(self):
2484 args = []
2485 try:
2486 block = self.inferior_frame.block()
2487 except:
2488 return None
2489
2490 # Iterate over all symbols in a block. Only add
2491 # symbols that are arguments.
2492 for sym in block:
2493 if not sym.is_argument:
2494 continue
2495 args.append(SymValueWrapper(sym,None))
2496
2497 # Add example synthetic argument.
2498 args.append(SymValueWrapper(``foo'', 42))
2499
2500 return args
2501 @end smallexample
2502 @end defun
2503
2504 @defun FrameDecorator.frame_locals (self)
2505
2506 This method must return an iterable or @code{None}. Returning an
2507 empty iterable, or @code{None} means frame local arguments will not be
2508 printed for this frame.
2509
2510 The object interface, the description of the various strategies for
2511 reading frame locals, and the example are largely similar to those
2512 described in the @code{frame_args} function, (@pxref{frame_args,,The
2513 frame filter frame_args function}). Below is a modified example:
2514
2515 @smallexample
2516 class SomeFrameDecorator()
2517 ...
2518 ...
2519 def frame_locals(self):
2520 vars = []
2521 try:
2522 block = self.inferior_frame.block()
2523 except:
2524 return None
2525
2526 # Iterate over all symbols in a block. Add all
2527 # symbols, except arguments.
2528 for sym in block:
2529 if sym.is_argument:
2530 continue
2531 vars.append(SymValueWrapper(sym,None))
2532
2533 # Add an example of a synthetic local variable.
2534 vars.append(SymValueWrapper(``bar'', 99))
2535
2536 return vars
2537 @end smallexample
2538 @end defun
2539
2540 @defun FrameDecorator.inferior_frame (self):
2541
2542 This method must return the underlying @code{gdb.Frame} that this
2543 frame decorator is decorating. @value{GDBN} requires the underlying
2544 frame for internal frame information to determine how to print certain
2545 values when printing a frame.
2546 @end defun
2547
2548 @node Writing a Frame Filter
2549 @subsubsection Writing a Frame Filter
2550 @cindex writing a frame filter
2551
2552 There are three basic elements that a frame filter must implement: it
2553 must correctly implement the documented interface (@pxref{Frame Filter
2554 API}), it must register itself with @value{GDBN}, and finally, it must
2555 decide if it is to work on the data provided by @value{GDBN}. In all
2556 cases, whether it works on the iterator or not, each frame filter must
2557 return an iterator. A bare-bones frame filter follows the pattern in
2558 the following example.
2559
2560 @smallexample
2561 import gdb
2562
2563 class FrameFilter():
2564
2565 def __init__(self):
2566 # Frame filter attribute creation.
2567 #
2568 # 'name' is the name of the filter that GDB will display.
2569 #
2570 # 'priority' is the priority of the filter relative to other
2571 # filters.
2572 #
2573 # 'enabled' is a boolean that indicates whether this filter is
2574 # enabled and should be executed.
2575
2576 self.name = "Foo"
2577 self.priority = 100
2578 self.enabled = True
2579
2580 # Register this frame filter with the global frame_filters
2581 # dictionary.
2582 gdb.frame_filters[self.name] = self
2583
2584 def filter(self, frame_iter):
2585 # Just return the iterator.
2586 return frame_iter
2587 @end smallexample
2588
2589 The frame filter in the example above implements the three
2590 requirements for all frame filters. It implements the API, self
2591 registers, and makes a decision on the iterator (in this case, it just
2592 returns the iterator untouched).
2593
2594 The first step is attribute creation and assignment, and as shown in
2595 the comments the filter assigns the following attributes: @code{name},
2596 @code{priority} and whether the filter should be enabled with the
2597 @code{enabled} attribute.
2598
2599 The second step is registering the frame filter with the dictionary or
2600 dictionaries that the frame filter has interest in. As shown in the
2601 comments, this filter just registers itself with the global dictionary
2602 @code{gdb.frame_filters}. As noted earlier, @code{gdb.frame_filters}
2603 is a dictionary that is initialized in the @code{gdb} module when
2604 @value{GDBN} starts. What dictionary a filter registers with is an
2605 important consideration. Generally, if a filter is specific to a set
2606 of code, it should be registered either in the @code{objfile} or
2607 @code{progspace} dictionaries as they are specific to the program
2608 currently loaded in @value{GDBN}. The global dictionary is always
2609 present in @value{GDBN} and is never unloaded. Any filters registered
2610 with the global dictionary will exist until @value{GDBN} exits. To
2611 avoid filters that may conflict, it is generally better to register
2612 frame filters against the dictionaries that more closely align with
2613 the usage of the filter currently in question. @xref{Python
2614 Auto-loading}, for further information on auto-loading Python scripts.
2615
2616 @value{GDBN} takes a hands-off approach to frame filter registration,
2617 therefore it is the frame filter's responsibility to ensure
2618 registration has occurred, and that any exceptions are handled
2619 appropriately. In particular, you may wish to handle exceptions
2620 relating to Python dictionary key uniqueness. It is mandatory that
2621 the dictionary key is the same as frame filter's @code{name}
2622 attribute. When a user manages frame filters (@pxref{Frame Filter
2623 Management}), the names @value{GDBN} will display are those contained
2624 in the @code{name} attribute.
2625
2626 The final step of this example is the implementation of the
2627 @code{filter} method. As shown in the example comments, we define the
2628 @code{filter} method and note that the method must take an iterator,
2629 and also must return an iterator. In this bare-bones example, the
2630 frame filter is not very useful as it just returns the iterator
2631 untouched. However this is a valid operation for frame filters that
2632 have the @code{enabled} attribute set, but decide not to operate on
2633 any frames.
2634
2635 In the next example, the frame filter operates on all frames and
2636 utilizes a frame decorator to perform some work on the frames.
2637 @xref{Frame Decorator API}, for further information on the frame
2638 decorator interface.
2639
2640 This example works on inlined frames. It highlights frames which are
2641 inlined by tagging them with an ``[inlined]'' tag. By applying a
2642 frame decorator to all frames with the Python @code{itertools imap}
2643 method, the example defers actions to the frame decorator. Frame
2644 decorators are only processed when @value{GDBN} prints the backtrace.
2645
2646 This introduces a new decision making topic: whether to perform
2647 decision making operations at the filtering step, or at the printing
2648 step. In this example's approach, it does not perform any filtering
2649 decisions at the filtering step beyond mapping a frame decorator to
2650 each frame. This allows the actual decision making to be performed
2651 when each frame is printed. This is an important consideration, and
2652 well worth reflecting upon when designing a frame filter. An issue
2653 that frame filters should avoid is unwinding the stack if possible.
2654 Some stacks can run very deep, into the tens of thousands in some
2655 cases. To search every frame to determine if it is inlined ahead of
2656 time may be too expensive at the filtering step. The frame filter
2657 cannot know how many frames it has to iterate over, and it would have
2658 to iterate through them all. This ends up duplicating effort as
2659 @value{GDBN} performs this iteration when it prints the frames.
2660
2661 In this example decision making can be deferred to the printing step.
2662 As each frame is printed, the frame decorator can examine each frame
2663 in turn when @value{GDBN} iterates. From a performance viewpoint,
2664 this is the most appropriate decision to make as it avoids duplicating
2665 the effort that the printing step would undertake anyway. Also, if
2666 there are many frame filters unwinding the stack during filtering, it
2667 can substantially delay the printing of the backtrace which will
2668 result in large memory usage, and a poor user experience.
2669
2670 @smallexample
2671 class InlineFilter():
2672
2673 def __init__(self):
2674 self.name = "InlinedFrameFilter"
2675 self.priority = 100
2676 self.enabled = True
2677 gdb.frame_filters[self.name] = self
2678
2679 def filter(self, frame_iter):
2680 frame_iter = itertools.imap(InlinedFrameDecorator,
2681 frame_iter)
2682 return frame_iter
2683 @end smallexample
2684
2685 This frame filter is somewhat similar to the earlier example, except
2686 that the @code{filter} method applies a frame decorator object called
2687 @code{InlinedFrameDecorator} to each element in the iterator. The
2688 @code{imap} Python method is light-weight. It does not proactively
2689 iterate over the iterator, but rather creates a new iterator which
2690 wraps the existing one.
2691
2692 Below is the frame decorator for this example.
2693
2694 @smallexample
2695 class InlinedFrameDecorator(FrameDecorator):
2696
2697 def __init__(self, fobj):
2698 super(InlinedFrameDecorator, self).__init__(fobj)
2699
2700 def function(self):
2701 frame = self.inferior_frame()
2702 name = str(frame.name())
2703
2704 if frame.type() == gdb.INLINE_FRAME:
2705 name = name + " [inlined]"
2706
2707 return name
2708 @end smallexample
2709
2710 This frame decorator only defines and overrides the @code{function}
2711 method. It lets the supplied @code{FrameDecorator}, which is shipped
2712 with @value{GDBN}, perform the other work associated with printing
2713 this frame.
2714
2715 The combination of these two objects create this output from a
2716 backtrace:
2717
2718 @smallexample
2719 #0 0x004004e0 in bar () at inline.c:11
2720 #1 0x00400566 in max [inlined] (b=6, a=12) at inline.c:21
2721 #2 0x00400566 in main () at inline.c:31
2722 @end smallexample
2723
2724 So in the case of this example, a frame decorator is applied to all
2725 frames, regardless of whether they may be inlined or not. As
2726 @value{GDBN} iterates over the iterator produced by the frame filters,
2727 @value{GDBN} executes each frame decorator which then makes a decision
2728 on what to print in the @code{function} callback. Using a strategy
2729 like this is a way to defer decisions on the frame content to printing
2730 time.
2731
2732 @subheading Eliding Frames
2733
2734 It might be that the above example is not desirable for representing
2735 inlined frames, and a hierarchical approach may be preferred. If we
2736 want to hierarchically represent frames, the @code{elided} frame
2737 decorator interface might be preferable.
2738
2739 This example approaches the issue with the @code{elided} method. This
2740 example is quite long, but very simplistic. It is out-of-scope for
2741 this section to write a complete example that comprehensively covers
2742 all approaches of finding and printing inlined frames. However, this
2743 example illustrates the approach an author might use.
2744
2745 This example comprises of three sections.
2746
2747 @smallexample
2748 class InlineFrameFilter():
2749
2750 def __init__(self):
2751 self.name = "InlinedFrameFilter"
2752 self.priority = 100
2753 self.enabled = True
2754 gdb.frame_filters[self.name] = self
2755
2756 def filter(self, frame_iter):
2757 return ElidingInlineIterator(frame_iter)
2758 @end smallexample
2759
2760 This frame filter is very similar to the other examples. The only
2761 difference is this frame filter is wrapping the iterator provided to
2762 it (@code{frame_iter}) with a custom iterator called
2763 @code{ElidingInlineIterator}. This again defers actions to when
2764 @value{GDBN} prints the backtrace, as the iterator is not traversed
2765 until printing.
2766
2767 The iterator for this example is as follows. It is in this section of
2768 the example where decisions are made on the content of the backtrace.
2769
2770 @smallexample
2771 class ElidingInlineIterator:
2772 def __init__(self, ii):
2773 self.input_iterator = ii
2774
2775 def __iter__(self):
2776 return self
2777
2778 def next(self):
2779 frame = next(self.input_iterator)
2780
2781 if frame.inferior_frame().type() != gdb.INLINE_FRAME:
2782 return frame
2783
2784 try:
2785 eliding_frame = next(self.input_iterator)
2786 except StopIteration:
2787 return frame
2788 return ElidingFrameDecorator(eliding_frame, [frame])
2789 @end smallexample
2790
2791 This iterator implements the Python iterator protocol. When the
2792 @code{next} function is called (when @value{GDBN} prints each frame),
2793 the iterator checks if this frame decorator, @code{frame}, is wrapping
2794 an inlined frame. If it is not, it returns the existing frame decorator
2795 untouched. If it is wrapping an inlined frame, it assumes that the
2796 inlined frame was contained within the next oldest frame,
2797 @code{eliding_frame}, which it fetches. It then creates and returns a
2798 frame decorator, @code{ElidingFrameDecorator}, which contains both the
2799 elided frame, and the eliding frame.
2800
2801 @smallexample
2802 class ElidingInlineDecorator(FrameDecorator):
2803
2804 def __init__(self, frame, elided_frames):
2805 super(ElidingInlineDecorator, self).__init__(frame)
2806 self.frame = frame
2807 self.elided_frames = elided_frames
2808
2809 def elided(self):
2810 return iter(self.elided_frames)
2811 @end smallexample
2812
2813 This frame decorator overrides one function and returns the inlined
2814 frame in the @code{elided} method. As before it lets
2815 @code{FrameDecorator} do the rest of the work involved in printing
2816 this frame. This produces the following output.
2817
2818 @smallexample
2819 #0 0x004004e0 in bar () at inline.c:11
2820 #2 0x00400529 in main () at inline.c:25
2821 #1 0x00400529 in max (b=6, a=12) at inline.c:15
2822 @end smallexample
2823
2824 In that output, @code{max} which has been inlined into @code{main} is
2825 printed hierarchically. Another approach would be to combine the
2826 @code{function} method, and the @code{elided} method to both print a
2827 marker in the inlined frame, and also show the hierarchical
2828 relationship.
2829
2830 @node Unwinding Frames in Python
2831 @subsubsection Unwinding Frames in Python
2832 @cindex unwinding frames in Python
2833
2834 In @value{GDBN} terminology ``unwinding'' is the process of finding
2835 the previous frame (that is, caller's) from the current one. An
2836 unwinder has three methods. The first one checks if it can handle
2837 given frame (``sniff'' it). For the frames it can sniff an unwinder
2838 provides two additional methods: it can return frame's ID, and it can
2839 fetch registers from the previous frame. A running @value{GDBN}
2840 maintains a list of the unwinders and calls each unwinder's sniffer in
2841 turn until it finds the one that recognizes the current frame. There
2842 is an API to register an unwinder.
2843
2844 The unwinders that come with @value{GDBN} handle standard frames.
2845 However, mixed language applications (for example, an application
2846 running Java Virtual Machine) sometimes use frame layouts that cannot
2847 be handled by the @value{GDBN} unwinders. You can write Python code
2848 that can handle such custom frames.
2849
2850 You implement a frame unwinder in Python as a class with which has two
2851 attributes, @code{name} and @code{enabled}, with obvious meanings, and
2852 a single method @code{__call__}, which examines a given frame and
2853 returns an object (an instance of @code{gdb.UnwindInfo class)}
2854 describing it. If an unwinder does not recognize a frame, it should
2855 return @code{None}. The code in @value{GDBN} that enables writing
2856 unwinders in Python uses this object to return frame's ID and previous
2857 frame registers when @value{GDBN} core asks for them.
2858
2859 An unwinder should do as little work as possible. Some otherwise
2860 innocuous operations can cause problems (even crashes, as this code is
2861 not well-hardened yet). For example, making an inferior call from
2862 an unwinder is unadvisable, as an inferior call will reset
2863 @value{GDBN}'s stack unwinding process, potentially causing re-entrant
2864 unwinding.
2865
2866 @subheading Unwinder Input
2867
2868 An object passed to an unwinder (a @code{gdb.PendingFrame} instance)
2869 provides a method to read frame's registers:
2870
2871 @defun PendingFrame.read_register (register)
2872 This method returns the contents of @var{register} in the
2873 frame as a @code{gdb.Value} object. For a description of the
2874 acceptable values of @var{register} see
2875 @ref{gdbpy_frame_read_register,,Frame.read_register}. If @var{register}
2876 does not name a register for the current architecture, this method
2877 will throw an exception.
2878
2879 Note that this method will always return a @code{gdb.Value} for a
2880 valid register name. This does not mean that the value will be valid.
2881 For example, you may request a register that an earlier unwinder could
2882 not unwind---the value will be unavailable. Instead, the
2883 @code{gdb.Value} returned from this method will be lazy; that is, its
2884 underlying bits will not be fetched until it is first used. So,
2885 attempting to use such a value will cause an exception at the point of
2886 use.
2887
2888 The type of the returned @code{gdb.Value} depends on the register and
2889 the architecture. It is common for registers to have a scalar type,
2890 like @code{long long}; but many other types are possible, such as
2891 pointer, pointer-to-function, floating point or vector types.
2892 @end defun
2893
2894 It also provides a factory method to create a @code{gdb.UnwindInfo}
2895 instance to be returned to @value{GDBN}:
2896
2897 @anchor{gdb.PendingFrame.create_unwind_info}
2898 @defun PendingFrame.create_unwind_info (frame_id)
2899 Returns a new @code{gdb.UnwindInfo} instance identified by given
2900 @var{frame_id}. The @var{frame_id} is used internally by @value{GDBN}
2901 to identify the frames within the current thread's stack. The
2902 attributes of @var{frame_id} determine what type of frame is
2903 created within @value{GDBN}:
2904
2905 @table @code
2906 @item sp, pc
2907 The frame is identified by the given stack address and PC. The stack
2908 address must be chosen so that it is constant throughout the lifetime
2909 of the frame, so a typical choice is the value of the stack pointer at
2910 the start of the function---in the DWARF standard, this would be the
2911 ``Call Frame Address''.
2912
2913 This is the most common case by far. The other cases are documented
2914 for completeness but are only useful in specialized situations.
2915
2916 @item sp, pc, special
2917 The frame is identified by the stack address, the PC, and a
2918 ``special'' address. The special address is used on architectures
2919 that can have frames that do not change the stack, but which are still
2920 distinct, for example the IA-64, which has a second stack for
2921 registers. Both @var{sp} and @var{special} must be constant
2922 throughout the lifetime of the frame.
2923
2924 @item sp
2925 The frame is identified by the stack address only. Any other stack
2926 frame with a matching @var{sp} will be considered to match this frame.
2927 Inside gdb, this is called a ``wild frame''. You will never need
2928 this.
2929 @end table
2930
2931 Each attribute value should either be an instance of @code{gdb.Value}
2932 or an integer.
2933
2934 A helper class is provided in the @code{gdb.unwinder} module that can
2935 be used to represent a frame-id
2936 (@pxref{gdb.unwinder.FrameId}).
2937
2938 @end defun
2939
2940 @defun PendingFrame.architecture ()
2941 Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
2942 for this @code{gdb.PendingFrame}. This represents the architecture of
2943 the particular frame being unwound.
2944 @end defun
2945
2946 @defun PendingFrame.level ()
2947 Return an integer, the stack frame level for this frame.
2948 @xref{Frames, ,Stack Frames}.
2949 @end defun
2950
2951 @defun PendingFrame.name ()
2952 Returns the function name of this pending frame, or @code{None} if it
2953 can't be obtained.
2954 @end defun
2955
2956 @defun PendingFrame.is_valid ()
2957 Returns true if the @code{gdb.PendingFrame} object is valid, false if
2958 not. A pending frame object becomes invalid when the call to the
2959 unwinder, for which the pending frame was created, returns.
2960
2961 All @code{gdb.PendingFrame} methods, except this one, will raise an
2962 exception if the pending frame object is invalid at the time the
2963 method is called.
2964 @end defun
2965
2966 @defun PendingFrame.pc ()
2967 Returns the pending frame's resume address.
2968 @end defun
2969
2970 @defun PendingFrame.block ()
2971 Return the pending frame's code block (@pxref{Blocks In Python}). If
2972 the frame does not have a block -- for example, if there is no
2973 debugging information for the code in question -- then this will raise
2974 a @code{RuntimeError} exception.
2975 @end defun
2976
2977 @defun PendingFrame.function ()
2978 Return the symbol for the function corresponding to this pending frame.
2979 @xref{Symbols In Python}.
2980 @end defun
2981
2982 @defun PendingFrame.find_sal ()
2983 Return the pending frame's symtab and line object (@pxref{Symbol
2984 Tables In Python}).
2985 @end defun
2986
2987 @defun PendingFrame.language ()
2988 Return the language of this frame, as a string, or None.
2989 @end defun
2990
2991 @subheading Unwinder Output: UnwindInfo
2992
2993 Use @code{PendingFrame.create_unwind_info} method described above to
2994 create a @code{gdb.UnwindInfo} instance. Use the following method to
2995 specify caller registers that have been saved in this frame:
2996
2997 @defun gdb.UnwindInfo.add_saved_register (register, value)
2998 @var{register} identifies the register, for a description of the acceptable
2999 values see @ref{gdbpy_frame_read_register,,Frame.read_register}.
3000 @var{value} is a register value (a @code{gdb.Value} object).
3001 @end defun
3002
3003 @subheading The @code{gdb.unwinder} Module
3004
3005 @value{GDBN} comes with a @code{gdb.unwinder} module which contains
3006 the following classes:
3007
3008 @deftp {class} gdb.unwinder.Unwinder
3009 The @code{Unwinder} class is a base class from which user created
3010 unwinders can derive, though it is not required that unwinders derive
3011 from this class, so long as any user created unwinder has the required
3012 @code{name} and @code{enabled} attributes.
3013
3014 @defun gdb.unwinder.Unwinder.__init__(name)
3015 The @var{name} is a string used to reference this unwinder within some
3016 @value{GDBN} commands (@pxref{Managing Registered Unwinders}).
3017 @end defun
3018
3019 @defvar gdb.unwinder.name
3020 A read-only attribute which is a string, the name of this unwinder.
3021 @end defvar
3022
3023 @defvar gdb.unwinder.enabled
3024 A modifiable attribute containing a boolean; when @code{True}, the
3025 unwinder is enabled, and will be used by @value{GDBN}. When
3026 @code{False}, the unwinder has been disabled, and will not be used.
3027 @end defvar
3028 @end deftp
3029
3030 @anchor{gdb.unwinder.FrameId}
3031 @deftp {class} gdb.unwinder.FrameId
3032 This is a class suitable for being used as the frame-id when calling
3033 @code{gdb.PendingFrame.create_unwind_info}. It is not required to use
3034 this class, any class with the required attribute
3035 (@pxref{gdb.PendingFrame.create_unwind_info}) will be accepted, but in
3036 most cases this class will be sufficient.
3037
3038 @code{gdb.unwinder.FrameId} has the following method:
3039
3040 @defun gdb.unwinder.FrameId.__init__(sp, pc, special = @code{None})
3041 The @var{sp} and @var{pc} arguments are required and should be either
3042 a @code{gdb.Value} object, or an integer.
3043
3044 The @var{special} argument is optional; if specified, it should be a
3045 @code{gdb.Value} object, or an integer.
3046 @end defun
3047
3048 @code{gdb.unwinder.FrameId} has the following read-only attributes:
3049
3050 @defvar gdb.unwinder.sp
3051 The @var{sp} value passed to the constructor.
3052 @end defvar
3053
3054 @defvar gdb.unwinder.pc
3055 The @var{pc} value passed to the constructor.
3056 @end defvar
3057
3058 @defvar gdb.unwinder.special
3059 The @var{special} value passed to the constructor, or @code{None} if
3060 no such value was passed.
3061 @end defvar
3062 @end deftp
3063
3064 @subheading Registering an Unwinder
3065
3066 Object files and program spaces can have unwinders registered with
3067 them. In addition, you can register unwinders globally.
3068
3069 The @code{gdb.unwinders} module provides the function to register an
3070 unwinder:
3071
3072 @defun gdb.unwinder.register_unwinder (locus, unwinder, replace=False)
3073 @var{locus} specifies to which unwinder list to prepend the
3074 @var{unwinder}. It can be either an object file (@pxref{Objfiles In
3075 Python}), a program space (@pxref{Progspaces In Python}), or
3076 @code{None}, in which case the unwinder is registered globally. The
3077 newly added @var{unwinder} will be called before any other unwinder
3078 from the same locus. Two unwinders in the same locus cannot have the
3079 same name. An attempt to add an unwinder with an already existing
3080 name raises an exception unless @var{replace} is @code{True}, in which
3081 case the old unwinder is deleted and the new unwinder is registered in
3082 its place.
3083
3084 @value{GDBN} first calls the unwinders from all the object files in no
3085 particular order, then the unwinders from the current program space,
3086 then the globally registered unwinders, and finally the unwinders
3087 builtin to @value{GDBN}.
3088 @end defun
3089
3090 @subheading Unwinder Skeleton Code
3091
3092 Here is an example of how to structure a user created unwinder:
3093
3094 @smallexample
3095 from gdb.unwinder import Unwinder, FrameId
3096
3097 class MyUnwinder(Unwinder):
3098 def __init__(self):
3099 super().__init___("MyUnwinder_Name")
3100
3101 def __call__(self, pending_frame):
3102 if not <we recognize frame>:
3103 return None
3104
3105 # Create a FrameID. Usually the frame is identified by a
3106 # stack pointer and the function address.
3107 sp = ... compute a stack address ...
3108 pc = ... compute function address ...
3109 unwind_info = pending_frame.create_unwind_info(FrameId(sp, pc))
3110
3111 # Find the values of the registers in the caller's frame and
3112 # save them in the result:
3113 unwind_info.add_saved_register(<register-number>, <register-value>)
3114 ....
3115
3116 # Return the result:
3117 return unwind_info
3118
3119 gdb.unwinder.register_unwinder(<locus>, MyUnwinder(), <replace>)
3120 @end smallexample
3121
3122 @anchor{Managing Registered Unwinders}
3123 @subheading Managing Registered Unwinders
3124 @value{GDBN} defines 3 commands to manage registered unwinders. These
3125 are:
3126
3127 @table @code
3128 @item info unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
3129 Lists all registered unwinders. Arguments @var{locus} and
3130 @var{name-regexp} are both optional and can be used to filter which
3131 unwinders are listed.
3132
3133 The @var{locus} argument should be either @kbd{global},
3134 @kbd{progspace}, or the name of an object file. Only unwinders
3135 registered for the specified locus will be listed.
3136
3137 The @var{name-regexp} is a regular expression used to match against
3138 unwinder names. When trying to match against unwinder names that
3139 include a string enclose @var{name-regexp} in quotes.
3140 @item disable unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
3141 The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
3142 unwinder} above, but instead of listing the matching unwinders, all of
3143 the matching unwinders are disabled. The @code{enabled} field of each
3144 matching unwinder is set to @code{False}.
3145 @item enable unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
3146 The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
3147 unwinder} above, but instead of listing the matching unwinders, all of
3148 the matching unwinders are enabled. The @code{enabled} field of each
3149 matching unwinder is set to @code{True}.
3150 @end table
3151
3152 @node Xmethods In Python
3153 @subsubsection Xmethods In Python
3154 @cindex xmethods in Python
3155
3156 @dfn{Xmethods} are additional methods or replacements for existing
3157 methods of a C@t{++} class. This feature is useful for those cases
3158 where a method defined in C@t{++} source code could be inlined or
3159 optimized out by the compiler, making it unavailable to @value{GDBN}.
3160 For such cases, one can define an xmethod to serve as a replacement
3161 for the method defined in the C@t{++} source code. @value{GDBN} will
3162 then invoke the xmethod, instead of the C@t{++} method, to
3163 evaluate expressions. One can also use xmethods when debugging
3164 with core files. Moreover, when debugging live programs, invoking an
3165 xmethod need not involve running the inferior (which can potentially
3166 perturb its state). Hence, even if the C@t{++} method is available, it
3167 is better to use its replacement xmethod if one is defined.
3168
3169 The xmethods feature in Python is available via the concepts of an
3170 @dfn{xmethod matcher} and an @dfn{xmethod worker}. To
3171 implement an xmethod, one has to implement a matcher and a
3172 corresponding worker for it (more than one worker can be
3173 implemented, each catering to a different overloaded instance of the
3174 method). Internally, @value{GDBN} invokes the @code{match} method of a
3175 matcher to match the class type and method name. On a match, the
3176 @code{match} method returns a list of matching @emph{worker} objects.
3177 Each worker object typically corresponds to an overloaded instance of
3178 the xmethod. They implement a @code{get_arg_types} method which
3179 returns a sequence of types corresponding to the arguments the xmethod
3180 requires. @value{GDBN} uses this sequence of types to perform
3181 overload resolution and picks a winning xmethod worker. A winner
3182 is also selected from among the methods @value{GDBN} finds in the
3183 C@t{++} source code. Next, the winning xmethod worker and the
3184 winning C@t{++} method are compared to select an overall winner. In
3185 case of a tie between a xmethod worker and a C@t{++} method, the
3186 xmethod worker is selected as the winner. That is, if a winning
3187 xmethod worker is found to be equivalent to the winning C@t{++}
3188 method, then the xmethod worker is treated as a replacement for
3189 the C@t{++} method. @value{GDBN} uses the overall winner to invoke the
3190 method. If the winning xmethod worker is the overall winner, then
3191 the corresponding xmethod is invoked via the @code{__call__} method
3192 of the worker object.
3193
3194 If one wants to implement an xmethod as a replacement for an
3195 existing C@t{++} method, then they have to implement an equivalent
3196 xmethod which has exactly the same name and takes arguments of
3197 exactly the same type as the C@t{++} method. If the user wants to
3198 invoke the C@t{++} method even though a replacement xmethod is
3199 available for that method, then they can disable the xmethod.
3200
3201 @xref{Xmethod API}, for API to implement xmethods in Python.
3202 @xref{Writing an Xmethod}, for implementing xmethods in Python.
3203
3204 @node Xmethod API
3205 @subsubsection Xmethod API
3206 @cindex xmethod API
3207
3208 The @value{GDBN} Python API provides classes, interfaces and functions
3209 to implement, register and manipulate xmethods.
3210 @xref{Xmethods In Python}.
3211
3212 An xmethod matcher should be an instance of a class derived from
3213 @code{XMethodMatcher} defined in the module @code{gdb.xmethod}, or an
3214 object with similar interface and attributes. An instance of
3215 @code{XMethodMatcher} has the following attributes:
3216
3217 @defvar name
3218 The name of the matcher.
3219 @end defvar
3220
3221 @defvar enabled
3222 A boolean value indicating whether the matcher is enabled or disabled.
3223 @end defvar
3224
3225 @defvar methods
3226 A list of named methods managed by the matcher. Each object in the list
3227 is an instance of the class @code{XMethod} defined in the module
3228 @code{gdb.xmethod}, or any object with the following attributes:
3229
3230 @table @code
3231
3232 @item name
3233 Name of the xmethod which should be unique for each xmethod
3234 managed by the matcher.
3235
3236 @item enabled
3237 A boolean value indicating whether the xmethod is enabled or
3238 disabled.
3239
3240 @end table
3241
3242 The class @code{XMethod} is a convenience class with same
3243 attributes as above along with the following constructor:
3244
3245 @defun XMethod.__init__ (self, name)
3246 Constructs an enabled xmethod with name @var{name}.
3247 @end defun
3248 @end defvar
3249
3250 @noindent
3251 The @code{XMethodMatcher} class has the following methods:
3252
3253 @defun XMethodMatcher.__init__ (self, name)
3254 Constructs an enabled xmethod matcher with name @var{name}. The
3255 @code{methods} attribute is initialized to @code{None}.
3256 @end defun
3257
3258 @defun XMethodMatcher.match (self, class_type, method_name)
3259 Derived classes should override this method. It should return a
3260 xmethod worker object (or a sequence of xmethod worker
3261 objects) matching the @var{class_type} and @var{method_name}.
3262 @var{class_type} is a @code{gdb.Type} object, and @var{method_name}
3263 is a string value. If the matcher manages named methods as listed in
3264 its @code{methods} attribute, then only those worker objects whose
3265 corresponding entries in the @code{methods} list are enabled should be
3266 returned.
3267 @end defun
3268
3269 An xmethod worker should be an instance of a class derived from
3270 @code{XMethodWorker} defined in the module @code{gdb.xmethod},
3271 or support the following interface:
3272
3273 @defun XMethodWorker.get_arg_types (self)
3274 This method returns a sequence of @code{gdb.Type} objects corresponding
3275 to the arguments that the xmethod takes. It can return an empty
3276 sequence or @code{None} if the xmethod does not take any arguments.
3277 If the xmethod takes a single argument, then a single
3278 @code{gdb.Type} object corresponding to it can be returned.
3279 @end defun
3280
3281 @defun XMethodWorker.get_result_type (self, *args)
3282 This method returns a @code{gdb.Type} object representing the type
3283 of the result of invoking this xmethod.
3284 The @var{args} argument is the same tuple of arguments that would be
3285 passed to the @code{__call__} method of this worker.
3286 @end defun
3287
3288 @defun XMethodWorker.__call__ (self, *args)
3289 This is the method which does the @emph{work} of the xmethod. The
3290 @var{args} arguments is the tuple of arguments to the xmethod. Each
3291 element in this tuple is a gdb.Value object. The first element is
3292 always the @code{this} pointer value.
3293 @end defun
3294
3295 For @value{GDBN} to lookup xmethods, the xmethod matchers
3296 should be registered using the following function defined in the module
3297 @code{gdb.xmethod}:
3298
3299 @defun register_xmethod_matcher (locus, matcher, replace=False)
3300 The @code{matcher} is registered with @code{locus}, replacing an
3301 existing matcher with the same name as @code{matcher} if
3302 @code{replace} is @code{True}. @code{locus} can be a
3303 @code{gdb.Objfile} object (@pxref{Objfiles In Python}), or a
3304 @code{gdb.Progspace} object (@pxref{Progspaces In Python}), or
3305 @code{None}. If it is @code{None}, then @code{matcher} is registered
3306 globally.
3307 @end defun
3308
3309 @node Writing an Xmethod
3310 @subsubsection Writing an Xmethod
3311 @cindex writing xmethods in Python
3312
3313 Implementing xmethods in Python will require implementing xmethod
3314 matchers and xmethod workers (@pxref{Xmethods In Python}). Consider
3315 the following C@t{++} class:
3316
3317 @smallexample
3318 class MyClass
3319 @{
3320 public:
3321 MyClass (int a) : a_(a) @{ @}
3322
3323 int geta (void) @{ return a_; @}
3324 int operator+ (int b);
3325
3326 private:
3327 int a_;
3328 @};
3329
3330 int
3331 MyClass::operator+ (int b)
3332 @{
3333 return a_ + b;
3334 @}
3335 @end smallexample
3336
3337 @noindent
3338 Let us define two xmethods for the class @code{MyClass}, one
3339 replacing the method @code{geta}, and another adding an overloaded
3340 flavor of @code{operator+} which takes a @code{MyClass} argument (the
3341 C@t{++} code above already has an overloaded @code{operator+}
3342 which takes an @code{int} argument). The xmethod matcher can be
3343 defined as follows:
3344
3345 @smallexample
3346 class MyClass_geta(gdb.xmethod.XMethod):
3347 def __init__(self):
3348 gdb.xmethod.XMethod.__init__(self, 'geta')
3349
3350 def get_worker(self, method_name):
3351 if method_name == 'geta':
3352 return MyClassWorker_geta()
3353
3354
3355 class MyClass_sum(gdb.xmethod.XMethod):
3356 def __init__(self):
3357 gdb.xmethod.XMethod.__init__(self, 'sum')
3358
3359 def get_worker(self, method_name):
3360 if method_name == 'operator+':
3361 return MyClassWorker_plus()
3362
3363
3364 class MyClassMatcher(gdb.xmethod.XMethodMatcher):
3365 def __init__(self):
3366 gdb.xmethod.XMethodMatcher.__init__(self, 'MyClassMatcher')
3367 # List of methods 'managed' by this matcher
3368 self.methods = [MyClass_geta(), MyClass_sum()]
3369
3370 def match(self, class_type, method_name):
3371 if class_type.tag != 'MyClass':
3372 return None
3373 workers = []
3374 for method in self.methods:
3375 if method.enabled:
3376 worker = method.get_worker(method_name)
3377 if worker:
3378 workers.append(worker)
3379
3380 return workers
3381 @end smallexample
3382
3383 @noindent
3384 Notice that the @code{match} method of @code{MyClassMatcher} returns
3385 a worker object of type @code{MyClassWorker_geta} for the @code{geta}
3386 method, and a worker object of type @code{MyClassWorker_plus} for the
3387 @code{operator+} method. This is done indirectly via helper classes
3388 derived from @code{gdb.xmethod.XMethod}. One does not need to use the
3389 @code{methods} attribute in a matcher as it is optional. However, if a
3390 matcher manages more than one xmethod, it is a good practice to list the
3391 xmethods in the @code{methods} attribute of the matcher. This will then
3392 facilitate enabling and disabling individual xmethods via the
3393 @code{enable/disable} commands. Notice also that a worker object is
3394 returned only if the corresponding entry in the @code{methods} attribute
3395 of the matcher is enabled.
3396
3397 The implementation of the worker classes returned by the matcher setup
3398 above is as follows:
3399
3400 @smallexample
3401 class MyClassWorker_geta(gdb.xmethod.XMethodWorker):
3402 def get_arg_types(self):
3403 return None
3404
3405 def get_result_type(self, obj):
3406 return gdb.lookup_type('int')
3407
3408 def __call__(self, obj):
3409 return obj['a_']
3410
3411
3412 class MyClassWorker_plus(gdb.xmethod.XMethodWorker):
3413 def get_arg_types(self):
3414 return gdb.lookup_type('MyClass')
3415
3416 def get_result_type(self, obj):
3417 return gdb.lookup_type('int')
3418
3419 def __call__(self, obj, other):
3420 return obj['a_'] + other['a_']
3421 @end smallexample
3422
3423 For @value{GDBN} to actually lookup a xmethod, it has to be
3424 registered with it. The matcher defined above is registered with
3425 @value{GDBN} globally as follows:
3426
3427 @smallexample
3428 gdb.xmethod.register_xmethod_matcher(None, MyClassMatcher())
3429 @end smallexample
3430
3431 If an object @code{obj} of type @code{MyClass} is initialized in C@t{++}
3432 code as follows:
3433
3434 @smallexample
3435 MyClass obj(5);
3436 @end smallexample
3437
3438 @noindent
3439 then, after loading the Python script defining the xmethod matchers
3440 and workers into @value{GDBN}, invoking the method @code{geta} or using
3441 the operator @code{+} on @code{obj} will invoke the xmethods
3442 defined above:
3443
3444 @smallexample
3445 (gdb) p obj.geta()
3446 $1 = 5
3447
3448 (gdb) p obj + obj
3449 $2 = 10
3450 @end smallexample
3451
3452 Consider another example with a C++ template class:
3453
3454 @smallexample
3455 template <class T>
3456 class MyTemplate
3457 @{
3458 public:
3459 MyTemplate () : dsize_(10), data_ (new T [10]) @{ @}
3460 ~MyTemplate () @{ delete [] data_; @}
3461
3462 int footprint (void)
3463 @{
3464 return sizeof (T) * dsize_ + sizeof (MyTemplate<T>);
3465 @}
3466
3467 private:
3468 int dsize_;
3469 T *data_;
3470 @};
3471 @end smallexample
3472
3473 Let us implement an xmethod for the above class which serves as a
3474 replacement for the @code{footprint} method. The full code listing
3475 of the xmethod workers and xmethod matchers is as follows:
3476
3477 @smallexample
3478 class MyTemplateWorker_footprint(gdb.xmethod.XMethodWorker):
3479 def __init__(self, class_type):
3480 self.class_type = class_type
3481
3482 def get_arg_types(self):
3483 return None
3484
3485 def get_result_type(self):
3486 return gdb.lookup_type('int')
3487
3488 def __call__(self, obj):
3489 return (self.class_type.sizeof +
3490 obj['dsize_'] *
3491 self.class_type.template_argument(0).sizeof)
3492
3493
3494 class MyTemplateMatcher_footprint(gdb.xmethod.XMethodMatcher):
3495 def __init__(self):
3496 gdb.xmethod.XMethodMatcher.__init__(self, 'MyTemplateMatcher')
3497
3498 def match(self, class_type, method_name):
3499 if (re.match('MyTemplate<[ \t\n]*[_a-zA-Z][ _a-zA-Z0-9]*>',
3500 class_type.tag) and
3501 method_name == 'footprint'):
3502 return MyTemplateWorker_footprint(class_type)
3503 @end smallexample
3504
3505 Notice that, in this example, we have not used the @code{methods}
3506 attribute of the matcher as the matcher manages only one xmethod. The
3507 user can enable/disable this xmethod by enabling/disabling the matcher
3508 itself.
3509
3510 @node Inferiors In Python
3511 @subsubsection Inferiors In Python
3512 @cindex inferiors in Python
3513
3514 @findex gdb.Inferior
3515 Programs which are being run under @value{GDBN} are called inferiors
3516 (@pxref{Inferiors Connections and Programs}). Python scripts can access
3517 information about and manipulate inferiors controlled by @value{GDBN}
3518 via objects of the @code{gdb.Inferior} class.
3519
3520 The following inferior-related functions are available in the @code{gdb}
3521 module:
3522
3523 @defun gdb.inferiors ()
3524 Return a tuple containing all inferior objects.
3525 @end defun
3526
3527 @defun gdb.selected_inferior ()
3528 Return an object representing the current inferior.
3529 @end defun
3530
3531 A @code{gdb.Inferior} object has the following attributes:
3532
3533 @defvar Inferior.num
3534 ID of inferior, as assigned by @value{GDBN}. You can use this to make
3535 Python breakpoints inferior-specific, for example
3536 (@pxref{python_breakpoint_inferior,,The Breakpoint.inferior
3537 attribute}).
3538 @end defvar
3539
3540 @anchor{gdbpy_inferior_connection}
3541 @defvar Inferior.connection
3542 The @code{gdb.TargetConnection} for this inferior (@pxref{Connections
3543 In Python}), or @code{None} if this inferior has no connection.
3544 @end defvar
3545
3546 @defvar Inferior.connection_num
3547 ID of inferior's connection as assigned by @value{GDBN}, or None if
3548 the inferior is not connected to a target. @xref{Inferiors Connections
3549 and Programs}. This is equivalent to
3550 @code{gdb.Inferior.connection.num} in the case where
3551 @code{gdb.Inferior.connection} is not @code{None}.
3552 @end defvar
3553
3554 @defvar Inferior.pid
3555 Process ID of the inferior, as assigned by the underlying operating
3556 system.
3557 @end defvar
3558
3559 @defvar Inferior.was_attached
3560 Boolean signaling whether the inferior was created using `attach', or
3561 started by @value{GDBN} itself.
3562 @end defvar
3563
3564 @defvar Inferior.main_name
3565 A string holding the name of this inferior's ``main'' function, if it
3566 can be determined. If the name of main is not known, this is
3567 @code{None}.
3568 @end defvar
3569
3570 @defvar Inferior.progspace
3571 The inferior's program space. @xref{Progspaces In Python}.
3572 @end defvar
3573
3574 @defvar Inferior.arguments
3575 The inferior's command line arguments, if known. This corresponds to
3576 the @code{set args} and @code{show args} commands. @xref{Arguments}.
3577
3578 When accessed, the value is a string holding all the arguments. The
3579 contents are quoted as they would be when passed to the shell. If
3580 there are no arguments, the value is @code{None}.
3581
3582 Either a string or a sequence of strings can be assigned to this
3583 attribute. When a string is assigned, it is assumed to have any
3584 necessary quoting for the shell; when a sequence is assigned, the
3585 quoting is applied by @value{GDBN}.
3586 @end defvar
3587
3588 A @code{gdb.Inferior} object has the following methods:
3589
3590 @defun Inferior.is_valid ()
3591 Returns @code{True} if the @code{gdb.Inferior} object is valid,
3592 @code{False} if not. A @code{gdb.Inferior} object will become invalid
3593 if the inferior no longer exists within @value{GDBN}. All other
3594 @code{gdb.Inferior} methods will throw an exception if it is invalid
3595 at the time the method is called.
3596 @end defun
3597
3598 @defun Inferior.threads ()
3599 This method returns a tuple holding all the threads which are valid
3600 when it is called. If there are no valid threads, the method will
3601 return an empty tuple.
3602 @end defun
3603
3604 @defun Inferior.architecture ()
3605 Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
3606 for this inferior. This represents the architecture of the inferior
3607 as a whole. Some platforms can have multiple architectures in a
3608 single address space, so this may not match the architecture of a
3609 particular frame (@pxref{Frames In Python}).
3610 @end defun
3611
3612 @anchor{gdbpy_inferior_read_memory}
3613 @defun Inferior.read_memory (address, length)
3614 Read @var{length} addressable memory units from the inferior, starting
3615 at @var{address}. Returns a @code{memoryview} object, which behaves
3616 much like an array or a string. It can be modified and given to the
3617 @code{Inferior.write_memory} function.
3618 @end defun
3619
3620 @defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
3621 Write the contents of @var{buffer} to the inferior, starting at
3622 @var{address}. The @var{buffer} parameter must be a Python object
3623 which supports the buffer protocol, i.e., a string, an array or the
3624 object returned from @code{Inferior.read_memory}. If given, @var{length}
3625 determines the number of addressable memory units from @var{buffer} to be
3626 written.
3627 @end defun
3628
3629 @defun Inferior.search_memory (address, length, pattern)
3630 Search a region of the inferior memory starting at @var{address} with
3631 the given @var{length} using the search pattern supplied in
3632 @var{pattern}. The @var{pattern} parameter must be a Python object
3633 which supports the buffer protocol, i.e., a string, an array or the
3634 object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
3635 containing the address where the pattern was found, or @code{None} if
3636 the pattern could not be found.
3637 @end defun
3638
3639 @findex Inferior.thread_from_thread_handle
3640 @defun Inferior.thread_from_handle (handle)
3641 Return the thread object corresponding to @var{handle}, a thread
3642 library specific data structure such as @code{pthread_t} for pthreads
3643 library implementations.
3644
3645 The function @code{Inferior.thread_from_thread_handle} provides
3646 the same functionality, but use of @code{Inferior.thread_from_thread_handle}
3647 is deprecated.
3648 @end defun
3649
3650
3651 The environment that will be passed to the inferior can be changed
3652 from Python by using the following methods. These methods only take
3653 effect when the inferior is started -- they will not affect an
3654 inferior that is already executing.
3655
3656 @defun Inferior.clear_env ()
3657 Clear the current environment variables that will be passed to this
3658 inferior.
3659 @end defun
3660
3661 @defun Inferior.set_env (name, value)
3662 Set the environment variable @var{name} to have the indicated value.
3663 Both parameters must be strings.
3664 @end defun
3665
3666 @defun Inferior.unset_env (name)
3667 Unset the environment variable @var{name}. @var{name} must be a
3668 string.
3669 @end defun
3670
3671 One may add arbitrary attributes to @code{gdb.Inferior} objects in the
3672 usual Python way. This is useful if, for example, one needs to do
3673 some extra record keeping associated with the inferior.
3674
3675 @anchor{choosing attribute names}
3676 When selecting a name for a new attribute, avoid starting the new
3677 attribute name with a lower case letter; future attributes added by
3678 @value{GDBN} will start with a lower case letter. Additionally, avoid
3679 starting attribute names with two underscore characters, as these
3680 could clash with Python builtin attribute names.
3681
3682 In this contrived example we record the time when an inferior last
3683 stopped:
3684
3685 @smallexample
3686 @group
3687 (@value{GDBP}) python
3688 import datetime
3689
3690 def thread_stopped(event):
3691 if event.inferior_thread is not None:
3692 thread = event.inferior_thread
3693 else:
3694 thread = gdb.selected_thread()
3695 inferior = thread.inferior
3696 inferior._last_stop_time = datetime.datetime.today()
3697
3698 gdb.events.stop.connect(thread_stopped)
3699 @end group
3700 @group
3701 (@value{GDBP}) file /tmp/hello
3702 Reading symbols from /tmp/hello...
3703 (@value{GDBP}) start
3704 Temporary breakpoint 1 at 0x401198: file /tmp/hello.c, line 18.
3705 Starting program: /tmp/hello
3706
3707 Temporary breakpoint 1, main () at /tmp/hello.c:18
3708 18 printf ("Hello World\n");
3709 (@value{GDBP}) python print(gdb.selected_inferior()._last_stop_time)
3710 2024-01-04 14:48:41.347036
3711 @end group
3712 @end smallexample
3713
3714 @node Events In Python
3715 @subsubsection Events In Python
3716 @cindex inferior events in Python
3717
3718 @value{GDBN} provides a general event facility so that Python code can be
3719 notified of various state changes, particularly changes that occur in
3720 the inferior.
3721
3722 An @dfn{event} is just an object that describes some state change. The
3723 type of the object and its attributes will vary depending on the details
3724 of the change. All the existing events are described below.
3725
3726 In order to be notified of an event, you must register an event handler
3727 with an @dfn{event registry}. An event registry is an object in the
3728 @code{gdb.events} module which dispatches particular events. A registry
3729 provides methods to register and unregister event handlers:
3730
3731 @defun EventRegistry.connect (object)
3732 Add the given callable @var{object} to the registry. This object will be
3733 called when an event corresponding to this registry occurs.
3734 @end defun
3735
3736 @defun EventRegistry.disconnect (object)
3737 Remove the given @var{object} from the registry. Once removed, the object
3738 will no longer receive notifications of events.
3739 @end defun
3740
3741 Here is an example:
3742
3743 @smallexample
3744 def exit_handler (event):
3745 print ("event type: exit")
3746 if hasattr (event, 'exit_code'):
3747 print ("exit code: %d" % (event.exit_code))
3748 else:
3749 print ("exit code not available")
3750
3751 gdb.events.exited.connect (exit_handler)
3752 @end smallexample
3753
3754 In the above example we connect our handler @code{exit_handler} to the
3755 registry @code{events.exited}. Once connected, @code{exit_handler} gets
3756 called when the inferior exits. The argument @dfn{event} in this example is
3757 of type @code{gdb.ExitedEvent}. As you can see in the example the
3758 @code{ExitedEvent} object has an attribute which indicates the exit code of
3759 the inferior.
3760
3761 Some events can be thread specific when @value{GDBN} is running in
3762 non-stop mode. When represented in Python, these events all extend
3763 @code{gdb.ThreadEvent}. This event is a base class and is never
3764 emitted directly; instead, events which are emitted by this or other
3765 modules might extend this event. Examples of these events are
3766 @code{gdb.BreakpointEvent} and @code{gdb.ContinueEvent}.
3767 @code{gdb.ThreadEvent} holds the following attributes:
3768
3769 @defvar ThreadEvent.inferior_thread
3770 In non-stop mode this attribute will be set to the specific thread which was
3771 involved in the emitted event. Otherwise, it will be set to @code{None}.
3772 @end defvar
3773
3774 The following is a listing of the event registries that are available and
3775 details of the events they emit:
3776
3777 @table @code
3778
3779 @item events.cont
3780 Emits @code{gdb.ContinueEvent}, which extends @code{gdb.ThreadEvent}.
3781 This event indicates that the inferior has been continued after a
3782 stop. For inherited attribute refer to @code{gdb.ThreadEvent} above.
3783
3784 @item events.exited
3785 Emits @code{events.ExitedEvent}, which indicates that the inferior has
3786 exited. @code{events.ExitedEvent} has two attributes:
3787
3788 @defvar ExitedEvent.exit_code
3789 An integer representing the exit code, if available, which the inferior
3790 has returned. (The exit code could be unavailable if, for example,
3791 @value{GDBN} detaches from the inferior.) If the exit code is unavailable,
3792 the attribute does not exist.
3793 @end defvar
3794
3795 @defvar ExitedEvent.inferior
3796 A reference to the inferior which triggered the @code{exited} event.
3797 @end defvar
3798
3799 @item events.stop
3800 Emits @code{gdb.StopEvent}, which extends @code{gdb.ThreadEvent}.
3801
3802 Indicates that the inferior has stopped. All events emitted by this
3803 registry extend @code{gdb.StopEvent}. As a child of
3804 @code{gdb.ThreadEvent}, @code{gdb.StopEvent} will indicate the stopped
3805 thread when @value{GDBN} is running in non-stop mode. Refer to
3806 @code{gdb.ThreadEvent} above for more details.
3807
3808 @code{gdb.StopEvent} has the following additional attributes:
3809
3810 @defvar StopEvent.details
3811 A dictionary holding any details relevant to the stop. The exact keys
3812 and values depend on the type of stop, but are identical to the
3813 corresponding MI output (@pxref{GDB/MI Async Records}).
3814
3815 A dictionary was used for this (rather than adding attributes directly
3816 to the event object) so that the MI keys could be used unchanged.
3817
3818 When a @code{StopEvent} results from a @code{finish} command, it will
3819 also hold the return value from the function, if that is available.
3820 This will be an entry named @samp{return-value} in the @code{details}
3821 dictionary. The value of this entry will be a @code{gdb.Value}
3822 object.
3823 @end defvar
3824
3825 Emits @code{gdb.SignalEvent}, which extends @code{gdb.StopEvent}.
3826
3827 This event indicates that the inferior or one of its threads has
3828 received a signal. @code{gdb.SignalEvent} has the following
3829 attributes:
3830
3831 @defvar SignalEvent.stop_signal
3832 A string representing the signal received by the inferior. A list of possible
3833 signal values can be obtained by running the command @code{info signals} in
3834 the @value{GDBN} command prompt.
3835 @end defvar
3836
3837 Also emits @code{gdb.BreakpointEvent}, which extends
3838 @code{gdb.StopEvent}.
3839
3840 @code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
3841 been hit, and has the following attributes:
3842
3843 @defvar BreakpointEvent.breakpoints
3844 A sequence containing references to all the breakpoints (type
3845 @code{gdb.Breakpoint}) that were hit.
3846 @xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
3847 @end defvar
3848
3849 @defvar BreakpointEvent.breakpoint
3850 A reference to the first breakpoint that was hit. This attribute is
3851 maintained for backward compatibility and is now deprecated in favor
3852 of the @code{gdb.BreakpointEvent.breakpoints} attribute.
3853 @end defvar
3854
3855 @item events.new_objfile
3856 Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
3857 been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
3858
3859 @defvar NewObjFileEvent.new_objfile
3860 A reference to the object file (@code{gdb.Objfile}) which has been loaded.
3861 @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
3862 @end defvar
3863
3864 @item events.free_objfile
3865 Emits @code{gdb.FreeObjFileEvent} which indicates that an object file
3866 is about to be removed from @value{GDBN}. One reason this can happen
3867 is when the inferior calls @code{dlclose}.
3868 @code{gdb.FreeObjFileEvent} has one attribute:
3869
3870 @defvar FreeObjFileEvent.objfile
3871 A reference to the object file (@code{gdb.Objfile}) which will be unloaded.
3872 @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
3873 @end defvar
3874
3875 @item events.clear_objfiles
3876 Emits @code{gdb.ClearObjFilesEvent} which indicates that the list of object
3877 files for a program space has been reset.
3878 @code{gdb.ClearObjFilesEvent} has one attribute:
3879
3880 @defvar ClearObjFilesEvent.progspace
3881 A reference to the program space (@code{gdb.Progspace}) whose objfile list has
3882 been cleared. @xref{Progspaces In Python}.
3883 @end defvar
3884
3885 @item events.inferior_call
3886 Emits events just before and after a function in the inferior is
3887 called by @value{GDBN}. Before an inferior call, this emits an event
3888 of type @code{gdb.InferiorCallPreEvent}, and after an inferior call,
3889 this emits an event of type @code{gdb.InferiorCallPostEvent}.
3890
3891 @table @code
3892 @tindex gdb.InferiorCallPreEvent
3893 @item @code{gdb.InferiorCallPreEvent}
3894 Indicates that a function in the inferior is about to be called.
3895
3896 @defvar InferiorCallPreEvent.ptid
3897 The thread in which the call will be run.
3898 @end defvar
3899
3900 @defvar InferiorCallPreEvent.address
3901 The location of the function to be called.
3902 @end defvar
3903
3904 @tindex gdb.InferiorCallPostEvent
3905 @item @code{gdb.InferiorCallPostEvent}
3906 Indicates that a function in the inferior has just been called.
3907
3908 @defvar InferiorCallPostEvent.ptid
3909 The thread in which the call was run.
3910 @end defvar
3911
3912 @defvar InferiorCallPostEvent.address
3913 The location of the function that was called.
3914 @end defvar
3915 @end table
3916
3917 @item events.memory_changed
3918 Emits @code{gdb.MemoryChangedEvent} which indicates that the memory of the
3919 inferior has been modified by the @value{GDBN} user, for instance via a
3920 command like @w{@code{set *addr = value}}. The event has the following
3921 attributes:
3922
3923 @defvar MemoryChangedEvent.address
3924 The start address of the changed region.
3925 @end defvar
3926
3927 @defvar MemoryChangedEvent.length
3928 Length in bytes of the changed region.
3929 @end defvar
3930
3931 @item events.register_changed
3932 Emits @code{gdb.RegisterChangedEvent} which indicates that a register in the
3933 inferior has been modified by the @value{GDBN} user.
3934
3935 @defvar RegisterChangedEvent.frame
3936 A gdb.Frame object representing the frame in which the register was modified.
3937 @end defvar
3938 @defvar RegisterChangedEvent.regnum
3939 Denotes which register was modified.
3940 @end defvar
3941
3942 @item events.breakpoint_created
3943 This is emitted when a new breakpoint has been created. The argument
3944 that is passed is the new @code{gdb.Breakpoint} object.
3945
3946 @item events.breakpoint_modified
3947 This is emitted when a breakpoint has been modified in some way. The
3948 argument that is passed is the new @code{gdb.Breakpoint} object.
3949
3950 @item events.breakpoint_deleted
3951 This is emitted when a breakpoint has been deleted. The argument that
3952 is passed is the @code{gdb.Breakpoint} object. When this event is
3953 emitted, the @code{gdb.Breakpoint} object will already be in its
3954 invalid state; that is, the @code{is_valid} method will return
3955 @code{False}.
3956
3957 @item events.before_prompt
3958 This event carries no payload. It is emitted each time @value{GDBN}
3959 presents a prompt to the user.
3960
3961 @item events.new_inferior
3962 This is emitted when a new inferior is created. Note that the
3963 inferior is not necessarily running; in fact, it may not even have an
3964 associated executable.
3965
3966 The event is of type @code{gdb.NewInferiorEvent}. This has a single
3967 attribute:
3968
3969 @defvar NewInferiorEvent.inferior
3970 The new inferior, a @code{gdb.Inferior} object.
3971 @end defvar
3972
3973 @item events.inferior_deleted
3974 This is emitted when an inferior has been deleted. Note that this is
3975 not the same as process exit; it is notified when the inferior itself
3976 is removed, say via @code{remove-inferiors}.
3977
3978 The event is of type @code{gdb.InferiorDeletedEvent}. This has a single
3979 attribute:
3980
3981 @defvar InferiorDeletedEvent.inferior
3982 The inferior that is being removed, a @code{gdb.Inferior} object.
3983 @end defvar
3984
3985 @item events.new_thread
3986 This is emitted when @value{GDBN} notices a new thread. The event is of
3987 type @code{gdb.NewThreadEvent}, which extends @code{gdb.ThreadEvent}.
3988 This has a single attribute:
3989
3990 @defvar NewThreadEvent.inferior_thread
3991 The new thread.
3992 @end defvar
3993
3994 @item events.thread_exited
3995 This is emitted when @value{GDBN} notices a thread has exited. The event
3996 is of type @code{gdb.ThreadExitedEvent} which extends @code{gdb.ThreadEvent}.
3997 This has a single attribute:
3998
3999 @defvar ThreadExitedEvent.inferior_thread
4000 The exiting thread.
4001 @end defvar
4002
4003 @item events.gdb_exiting
4004 This is emitted when @value{GDBN} exits. This event is not emitted if
4005 @value{GDBN} exits as a result of an internal error, or after an
4006 unexpected signal. The event is of type @code{gdb.GdbExitingEvent},
4007 which has a single attribute:
4008
4009 @defvar GdbExitingEvent.exit_code
4010 An integer, the value of the exit code @value{GDBN} will return.
4011 @end defvar
4012
4013 @item events.connection_removed
4014 This is emitted when @value{GDBN} removes a connection
4015 (@pxref{Connections In Python}). The event is of type
4016 @code{gdb.ConnectionEvent}. This has a single read-only attribute:
4017
4018 @defvar ConnectionEvent.connection
4019 The @code{gdb.TargetConnection} that is being removed.
4020 @end defvar
4021
4022 @item events.executable_changed
4023 Emits @code{gdb.ExecutableChangedEvent} which indicates that the
4024 @code{gdb.Progspace.executable_filename} has changed.
4025
4026 This event is emitted when either the value of
4027 @code{gdb.Progspace.executable_filename } has changed to name a
4028 different file, or the executable file named by
4029 @code{gdb.Progspace.executable_filename} has changed on disk, and
4030 @value{GDBN} has therefore reloaded it.
4031
4032 @defvar ExecutableChangedEvent.progspace
4033 The @code{gdb.Progspace} in which the current executable has changed.
4034 The file name of the updated executable will be visible in
4035 @code{gdb.Progspace.executable_filename} (@pxref{Progspaces In Python}).
4036 @end defvar
4037 @defvar ExecutableChangedEvent.reload
4038 This attribute will be @code{True} if the value of
4039 @code{gdb.Progspace.executable_filename} didn't change, but the file
4040 it names changed on disk instead, and @value{GDBN} reloaded it.
4041
4042 When this attribute is @code{False}, the value in
4043 @code{gdb.Progspace.executable_filename} was changed to name a
4044 different file.
4045 @end defvar
4046
4047 Remember that @value{GDBN} tracks the executable file and the symbol
4048 file separately, these are visible as
4049 @code{gdb.Progspace.executable_filename} and
4050 @code{gdb.Progspace.filename} respectively. When using the @kbd{file}
4051 command, @value{GDBN} updates both of these fields, but the executable
4052 file is updated first, so when this event is emitted, the executable
4053 filename will have changed, but the symbol filename might still hold
4054 its previous value.
4055
4056 @item events.new_progspace
4057 This is emitted when @value{GDBN} adds a new program space
4058 (@pxref{Progspaces In Python,,Program Spaces In Python}). The event
4059 is of type @code{gdb.NewProgspaceEvent}, and has a single read-only
4060 attribute:
4061
4062 @defvar NewProgspaceEvent.progspace
4063 The @code{gdb.Progspace} that was added to @value{GDBN}.
4064 @end defvar
4065
4066 No @code{NewProgspaceEvent} is emitted for the very first program
4067 space, which is assigned to the first inferior. This first program
4068 space is created within @value{GDBN} before any Python scripts are
4069 sourced.
4070
4071 @item events.free_progspace
4072 This is emitted when @value{GDBN} removes a program space
4073 (@pxref{Progspaces In Python,,Program Spaces In Python}), for example
4074 as a result of the @kbd{remove-inferiors} command
4075 (@pxref{remove_inferiors_cli,,@kbd{remove-inferiors}}). The event is
4076 of type @code{gdb.FreeProgspaceEvent}, and has a single read-only
4077 attribute:
4078
4079 @defvar FreeProgspaceEvent.progspace
4080 The @code{gdb.Progspace} that is about to be removed from
4081 @value{GDBN}.
4082 @end defvar
4083
4084 @end table
4085
4086 @node Threads In Python
4087 @subsubsection Threads In Python
4088 @cindex threads in python
4089
4090 @findex gdb.InferiorThread
4091 Python scripts can access information about, and manipulate inferior threads
4092 controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
4093
4094 The following thread-related functions are available in the @code{gdb}
4095 module:
4096
4097 @defun gdb.selected_thread ()
4098 This function returns the thread object for the selected thread. If there
4099 is no selected thread, this will return @code{None}.
4100 @end defun
4101
4102 To get the list of threads for an inferior, use the @code{Inferior.threads()}
4103 method. @xref{Inferiors In Python}.
4104
4105 A @code{gdb.InferiorThread} object has the following attributes:
4106
4107 @defvar InferiorThread.name
4108 The name of the thread. If the user specified a name using
4109 @code{thread name}, then this returns that name. Otherwise, if an
4110 OS-supplied name is available, then it is returned. Otherwise, this
4111 returns @code{None}.
4112
4113 This attribute can be assigned to. The new value must be a string
4114 object, which sets the new name, or @code{None}, which removes any
4115 user-specified thread name.
4116 @end defvar
4117
4118 @defvar InferiorThread.num
4119 The per-inferior number of the thread, as assigned by GDB.
4120 @end defvar
4121
4122 @defvar InferiorThread.global_num
4123 The global ID of the thread, as assigned by GDB. You can use this to
4124 make Python breakpoints thread-specific, for example
4125 (@pxref{python_breakpoint_thread,,The Breakpoint.thread attribute}).
4126 @end defvar
4127
4128 @anchor{inferior_thread_ptid}
4129 @defvar InferiorThread.ptid
4130 ID of the thread, as assigned by the operating system. This attribute is a
4131 tuple containing three integers. The first is the Process ID (PID); the second
4132 is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
4133 Either the LWPID or TID may be 0, which indicates that the operating system
4134 does not use that identifier.
4135 @end defvar
4136
4137 @defvar InferiorThread.ptid_string
4138 This read-only attribute contains a string representing
4139 @code{InferiorThread.ptid}. This is the string that @value{GDBN} uses
4140 in the @samp{Target Id} column in the @kbd{info threads} output
4141 (@pxref{info_threads,,@samp{info threads}}).
4142 @end defvar
4143
4144 @defvar InferiorThread.inferior
4145 The inferior this thread belongs to. This attribute is represented as
4146 a @code{gdb.Inferior} object. This attribute is not writable.
4147 @end defvar
4148
4149 @defvar InferiorThread.details
4150 A string containing target specific thread state information. The
4151 format of this string varies by target. If there is no additional
4152 state information for this thread, then this attribute contains
4153 @code{None}.
4154
4155 For example, on a @sc{gnu}/Linux system, a thread that is in the
4156 process of exiting will return the string @samp{Exiting}. For remote
4157 targets the @code{details} string will be obtained with the
4158 @samp{qThreadExtraInfo} remote packet, if the target supports it
4159 (@pxref{qThreadExtraInfo,,@samp{qThreadExtraInfo}}).
4160
4161 @value{GDBN} displays the @code{details} string as part of the
4162 @samp{Target Id} column, in the @code{info threads} output
4163 (@pxref{info_threads,,@samp{info threads}}).
4164 @end defvar
4165
4166 A @code{gdb.InferiorThread} object has the following methods:
4167
4168 @defun InferiorThread.is_valid ()
4169 Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
4170 @code{False} if not. A @code{gdb.InferiorThread} object will become
4171 invalid if the thread exits, or the inferior that the thread belongs
4172 is deleted. All other @code{gdb.InferiorThread} methods will throw an
4173 exception if it is invalid at the time the method is called.
4174 @end defun
4175
4176 @defun InferiorThread.switch ()
4177 This changes @value{GDBN}'s currently selected thread to the one represented
4178 by this object.
4179 @end defun
4180
4181 @defun InferiorThread.is_stopped ()
4182 Return a Boolean indicating whether the thread is stopped.
4183 @end defun
4184
4185 @defun InferiorThread.is_running ()
4186 Return a Boolean indicating whether the thread is running.
4187 @end defun
4188
4189 @defun InferiorThread.is_exited ()
4190 Return a Boolean indicating whether the thread is exited.
4191 @end defun
4192
4193 @defun InferiorThread.handle ()
4194 Return the thread object's handle, represented as a Python @code{bytes}
4195 object. A @code{gdb.Value} representation of the handle may be
4196 constructed via @code{gdb.Value(bufobj, type)} where @var{bufobj} is
4197 the Python @code{bytes} representation of the handle and @var{type} is
4198 a @code{gdb.Type} for the handle type.
4199 @end defun
4200
4201 One may add arbitrary attributes to @code{gdb.InferiorThread} objects
4202 in the usual Python way. This is useful if, for example, one needs to
4203 do some extra record keeping associated with the thread.
4204
4205 @xref{choosing attribute names}, for guidance on selecting a suitable
4206 name for new attributes.
4207
4208 In this contrived example we record the time when a thread last
4209 stopped:
4210
4211 @smallexample
4212 @group
4213 (@value{GDBP}) python
4214 import datetime
4215
4216 def thread_stopped(event):
4217 if event.inferior_thread is not None:
4218 thread = event.inferior_thread
4219 else:
4220 thread = gdb.selected_thread()
4221 thread._last_stop_time = datetime.datetime.today()
4222
4223 gdb.events.stop.connect(thread_stopped)
4224 @end group
4225 @group
4226 (@value{GDBP}) file /tmp/hello
4227 Reading symbols from /tmp/hello...
4228 (@value{GDBP}) start
4229 Temporary breakpoint 1 at 0x401198: file /tmp/hello.c, line 18.
4230 Starting program: /tmp/hello
4231
4232 Temporary breakpoint 1, main () at /tmp/hello.c:18
4233 18 printf ("Hello World\n");
4234 (@value{GDBP}) python print(gdb.selected_thread()._last_stop_time)
4235 2024-01-04 14:48:41.347036
4236 @end group
4237 @end smallexample
4238
4239 @node Recordings In Python
4240 @subsubsection Recordings In Python
4241 @cindex recordings in python
4242
4243 The following recordings-related functions
4244 (@pxref{Process Record and Replay}) are available in the @code{gdb}
4245 module:
4246
4247 @defun gdb.start_recording (@r{[}method@r{]}, @r{[}format@r{]})
4248 Start a recording using the given @var{method} and @var{format}. If
4249 no @var{format} is given, the default format for the recording method
4250 is used. If no @var{method} is given, the default method will be used.
4251 Returns a @code{gdb.Record} object on success. Throw an exception on
4252 failure.
4253
4254 The following strings can be passed as @var{method}:
4255
4256 @itemize @bullet
4257 @item
4258 @code{"full"}
4259 @item
4260 @code{"btrace"}: Possible values for @var{format}: @code{"pt"},
4261 @code{"bts"} or leave out for default format.
4262 @end itemize
4263 @end defun
4264
4265 @defun gdb.current_recording ()
4266 Access a currently running recording. Return a @code{gdb.Record}
4267 object on success. Return @code{None} if no recording is currently
4268 active.
4269 @end defun
4270
4271 @defun gdb.stop_recording ()
4272 Stop the current recording. Throw an exception if no recording is
4273 currently active. All record objects become invalid after this call.
4274 @end defun
4275
4276 A @code{gdb.Record} object has the following attributes:
4277
4278 @defvar Record.method
4279 A string with the current recording method, e.g.@: @code{full} or
4280 @code{btrace}.
4281 @end defvar
4282
4283 @defvar Record.format
4284 A string with the current recording format, e.g.@: @code{bt}, @code{pts} or
4285 @code{None}.
4286 @end defvar
4287
4288 @defvar Record.begin
4289 A method specific instruction object representing the first instruction
4290 in this recording.
4291 @end defvar
4292
4293 @defvar Record.end
4294 A method specific instruction object representing the current
4295 instruction, that is not actually part of the recording.
4296 @end defvar
4297
4298 @defvar Record.replay_position
4299 The instruction representing the current replay position. If there is
4300 no replay active, this will be @code{None}.
4301 @end defvar
4302
4303 @defvar Record.instruction_history
4304 A list with all recorded instructions.
4305 @end defvar
4306
4307 @defvar Record.function_call_history
4308 A list with all recorded function call segments.
4309 @end defvar
4310
4311 A @code{gdb.Record} object has the following methods:
4312
4313 @defun Record.goto (instruction)
4314 Move the replay position to the given @var{instruction}.
4315 @end defun
4316
4317 The common @code{gdb.Instruction} class that recording method specific
4318 instruction objects inherit from, has the following attributes:
4319
4320 @defvar Instruction.pc
4321 An integer representing this instruction's address.
4322 @end defvar
4323
4324 @defvar Instruction.data
4325 A @code{memoryview} object holding the raw instruction data.
4326 @end defvar
4327
4328 @defvar Instruction.decoded
4329 A human readable string with the disassembled instruction.
4330 @end defvar
4331
4332 @defvar Instruction.size
4333 The size of the instruction in bytes.
4334 @end defvar
4335
4336 Additionally @code{gdb.RecordInstruction} has the following attributes:
4337
4338 @defvar RecordInstruction.number
4339 An integer identifying this instruction. @code{number} corresponds to
4340 the numbers seen in @code{record instruction-history}
4341 (@pxref{Process Record and Replay}).
4342 @end defvar
4343
4344 @defvar RecordInstruction.sal
4345 A @code{gdb.Symtab_and_line} object representing the associated symtab
4346 and line of this instruction. May be @code{None} if no debug information is
4347 available.
4348 @end defvar
4349
4350 @defvar RecordInstruction.is_speculative
4351 A boolean indicating whether the instruction was executed speculatively.
4352 @end defvar
4353
4354 If an error occurred during recording or decoding a recording, this error is
4355 represented by a @code{gdb.RecordGap} object in the instruction list. It has
4356 the following attributes:
4357
4358 @defvar RecordGap.number
4359 An integer identifying this gap. @code{number} corresponds to the numbers seen
4360 in @code{record instruction-history} (@pxref{Process Record and Replay}).
4361 @end defvar
4362
4363 @defvar RecordGap.error_code
4364 A numerical representation of the reason for the gap. The value is specific to
4365 the current recording method.
4366 @end defvar
4367
4368 @defvar RecordGap.error_string
4369 A human readable string with the reason for the gap.
4370 @end defvar
4371
4372 A @code{gdb.RecordFunctionSegment} object has the following attributes:
4373
4374 @defvar RecordFunctionSegment.number
4375 An integer identifying this function segment. @code{number} corresponds to
4376 the numbers seen in @code{record function-call-history}
4377 (@pxref{Process Record and Replay}).
4378 @end defvar
4379
4380 @defvar RecordFunctionSegment.symbol
4381 A @code{gdb.Symbol} object representing the associated symbol. May be
4382 @code{None} if no debug information is available.
4383 @end defvar
4384
4385 @defvar RecordFunctionSegment.level
4386 An integer representing the function call's stack level. May be
4387 @code{None} if the function call is a gap.
4388 @end defvar
4389
4390 @defvar RecordFunctionSegment.instructions
4391 A list of @code{gdb.RecordInstruction} or @code{gdb.RecordGap} objects
4392 associated with this function call.
4393 @end defvar
4394
4395 @defvar RecordFunctionSegment.up
4396 A @code{gdb.RecordFunctionSegment} object representing the caller's
4397 function segment. If the call has not been recorded, this will be the
4398 function segment to which control returns. If neither the call nor the
4399 return have been recorded, this will be @code{None}.
4400 @end defvar
4401
4402 @defvar RecordFunctionSegment.prev
4403 A @code{gdb.RecordFunctionSegment} object representing the previous
4404 segment of this function call. May be @code{None}.
4405 @end defvar
4406
4407 @defvar RecordFunctionSegment.next
4408 A @code{gdb.RecordFunctionSegment} object representing the next segment of
4409 this function call. May be @code{None}.
4410 @end defvar
4411
4412 The following example demonstrates the usage of these objects and
4413 functions to create a function that will rewind a record to the last
4414 time a function in a different file was executed. This would typically
4415 be used to track the execution of user provided callback functions in a
4416 library which typically are not visible in a back trace.
4417
4418 @smallexample
4419 def bringback ():
4420 rec = gdb.current_recording ()
4421 if not rec:
4422 return
4423
4424 insn = rec.instruction_history
4425 if len (insn) == 0:
4426 return
4427
4428 try:
4429 position = insn.index (rec.replay_position)
4430 except:
4431 position = -1
4432 try:
4433 filename = insn[position].sal.symtab.fullname ()
4434 except:
4435 filename = None
4436
4437 for i in reversed (insn[:position]):
4438 try:
4439 current = i.sal.symtab.fullname ()
4440 except:
4441 current = None
4442
4443 if filename == current:
4444 continue
4445
4446 rec.goto (i)
4447 return
4448 @end smallexample
4449
4450 Another possible application is to write a function that counts the
4451 number of code executions in a given line range. This line range can
4452 contain parts of functions or span across several functions and is not
4453 limited to be contiguous.
4454
4455 @smallexample
4456 def countrange (filename, linerange):
4457 count = 0
4458
4459 def filter_only (file_name):
4460 for call in gdb.current_recording ().function_call_history:
4461 try:
4462 if file_name in call.symbol.symtab.fullname ():
4463 yield call
4464 except:
4465 pass
4466
4467 for c in filter_only (filename):
4468 for i in c.instructions:
4469 try:
4470 if i.sal.line in linerange:
4471 count += 1
4472 break;
4473 except:
4474 pass
4475
4476 return count
4477 @end smallexample
4478
4479 @node CLI Commands In Python
4480 @subsubsection CLI Commands In Python
4481
4482 @cindex CLI commands in python
4483 @cindex commands in python, CLI
4484 @cindex python commands, CLI
4485 You can implement new @value{GDBN} CLI commands in Python. A CLI
4486 command is implemented using an instance of the @code{gdb.Command}
4487 class, most commonly using a subclass.
4488
4489 @defun Command.__init__ (name, command_class @r{[}, completer_class @r{[}, prefix@r{]]})
4490 The object initializer for @code{Command} registers the new command
4491 with @value{GDBN}. This initializer is normally invoked from the
4492 subclass' own @code{__init__} method.
4493
4494 @var{name} is the name of the command. If @var{name} consists of
4495 multiple words, then the initial words are looked for as prefix
4496 commands. In this case, if one of the prefix commands does not exist,
4497 an exception is raised.
4498
4499 There is no support for multi-line commands.
4500
4501 @var{command_class} should be one of the @samp{COMMAND_} constants
4502 defined below. This argument tells @value{GDBN} how to categorize the
4503 new command in the help system.
4504
4505 @var{completer_class} is an optional argument. If given, it should be
4506 one of the @samp{COMPLETE_} constants defined below. This argument
4507 tells @value{GDBN} how to perform completion for this command. If not
4508 given, @value{GDBN} will attempt to complete using the object's
4509 @code{complete} method (see below); if no such method is found, an
4510 error will occur when completion is attempted.
4511
4512 @var{prefix} is an optional argument. If @code{True}, then the new
4513 command is a prefix command; sub-commands of this command may be
4514 registered.
4515
4516 The help text for the new command is taken from the Python
4517 documentation string for the command's class, if there is one. If no
4518 documentation string is provided, the default value ``This command is
4519 not documented.'' is used.
4520 @end defun
4521
4522 @cindex don't repeat Python command
4523 @defun Command.dont_repeat ()
4524 By default, a @value{GDBN} command is repeated when the user enters a
4525 blank line at the command prompt. A command can suppress this
4526 behavior by invoking the @code{dont_repeat} method at some point in
4527 its @code{invoke} method (normally this is done early in case of
4528 exception). This is similar to the user command @code{dont-repeat},
4529 see @ref{Define, dont-repeat}.
4530 @end defun
4531
4532 @defun Command.invoke (argument, from_tty)
4533 This method is called by @value{GDBN} when this command is invoked.
4534
4535 @var{argument} is a string. It is the argument to the command, after
4536 leading and trailing whitespace has been stripped.
4537
4538 @var{from_tty} is a boolean argument. When true, this means that the
4539 command was entered by the user at the terminal; when false it means
4540 that the command came from elsewhere.
4541
4542 If this method throws an exception, it is turned into a @value{GDBN}
4543 @code{error} call. Otherwise, the return value is ignored.
4544
4545 @findex gdb.string_to_argv
4546 To break @var{argument} up into an argv-like string use
4547 @code{gdb.string_to_argv}. This function behaves identically to
4548 @value{GDBN}'s internal argument lexer @code{buildargv}.
4549 It is recommended to use this for consistency.
4550 Arguments are separated by spaces and may be quoted.
4551 Example:
4552
4553 @smallexample
4554 print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
4555 ['1', '2 "3', '4 "5', "6 '7"]
4556 @end smallexample
4557
4558 @end defun
4559
4560 @cindex completion of Python commands
4561 @defun Command.complete (text, word)
4562 This method is called by @value{GDBN} when the user attempts
4563 completion on this command. All forms of completion are handled by
4564 this method, that is, the @key{TAB} and @key{M-?} key bindings
4565 (@pxref{Completion}), and the @code{complete} command (@pxref{Help,
4566 complete}).
4567
4568 The arguments @var{text} and @var{word} are both strings; @var{text}
4569 holds the complete command line up to the cursor's location, while
4570 @var{word} holds the last word of the command line; this is computed
4571 using a word-breaking heuristic.
4572
4573 The @code{complete} method can return several values:
4574 @itemize @bullet
4575 @item
4576 If the return value is a sequence, the contents of the sequence are
4577 used as the completions. It is up to @code{complete} to ensure that the
4578 contents actually do complete the word. A zero-length sequence is
4579 allowed, it means that there were no completions available. Only
4580 string elements of the sequence are used; other elements in the
4581 sequence are ignored.
4582
4583 @item
4584 If the return value is one of the @samp{COMPLETE_} constants defined
4585 below, then the corresponding @value{GDBN}-internal completion
4586 function is invoked, and its result is used.
4587
4588 @item
4589 All other results are treated as though there were no available
4590 completions.
4591 @end itemize
4592 @end defun
4593
4594 When a new command is registered, it must be declared as a member of
4595 some general class of commands. This is used to classify top-level
4596 commands in the on-line help system; note that prefix commands are not
4597 listed under their own category but rather that of their top-level
4598 command. The available classifications are represented by constants
4599 defined in the @code{gdb} module:
4600
4601 @table @code
4602 @findex COMMAND_NONE
4603 @findex gdb.COMMAND_NONE
4604 @item gdb.COMMAND_NONE
4605 The command does not belong to any particular class. A command in
4606 this category will not be displayed in any of the help categories.
4607
4608 @findex COMMAND_RUNNING
4609 @findex gdb.COMMAND_RUNNING
4610 @item gdb.COMMAND_RUNNING
4611 The command is related to running the inferior. For example,
4612 @code{start}, @code{step}, and @code{continue} are in this category.
4613 Type @kbd{help running} at the @value{GDBN} prompt to see a list of
4614 commands in this category.
4615
4616 @findex COMMAND_DATA
4617 @findex gdb.COMMAND_DATA
4618 @item gdb.COMMAND_DATA
4619 The command is related to data or variables. For example,
4620 @code{call}, @code{find}, and @code{print} are in this category. Type
4621 @kbd{help data} at the @value{GDBN} prompt to see a list of commands
4622 in this category.
4623
4624 @findex COMMAND_STACK
4625 @findex gdb.COMMAND_STACK
4626 @item gdb.COMMAND_STACK
4627 The command has to do with manipulation of the stack. For example,
4628 @code{backtrace}, @code{frame}, and @code{return} are in this
4629 category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
4630 list of commands in this category.
4631
4632 @findex COMMAND_FILES
4633 @findex gdb.COMMAND_FILES
4634 @item gdb.COMMAND_FILES
4635 This class is used for file-related commands. For example,
4636 @code{file}, @code{list} and @code{section} are in this category.
4637 Type @kbd{help files} at the @value{GDBN} prompt to see a list of
4638 commands in this category.
4639
4640 @findex COMMAND_SUPPORT
4641 @findex gdb.COMMAND_SUPPORT
4642 @item gdb.COMMAND_SUPPORT
4643 This should be used for ``support facilities'', generally meaning
4644 things that are useful to the user when interacting with @value{GDBN},
4645 but not related to the state of the inferior. For example,
4646 @code{help}, @code{make}, and @code{shell} are in this category. Type
4647 @kbd{help support} at the @value{GDBN} prompt to see a list of
4648 commands in this category.
4649
4650 @findex COMMAND_STATUS
4651 @findex gdb.COMMAND_STATUS
4652 @item gdb.COMMAND_STATUS
4653 The command is an @samp{info}-related command, that is, related to the
4654 state of @value{GDBN} itself. For example, @code{info}, @code{macro},
4655 and @code{show} are in this category. Type @kbd{help status} at the
4656 @value{GDBN} prompt to see a list of commands in this category.
4657
4658 @findex COMMAND_BREAKPOINTS
4659 @findex gdb.COMMAND_BREAKPOINTS
4660 @item gdb.COMMAND_BREAKPOINTS
4661 The command has to do with breakpoints. For example, @code{break},
4662 @code{clear}, and @code{delete} are in this category. Type @kbd{help
4663 breakpoints} at the @value{GDBN} prompt to see a list of commands in
4664 this category.
4665
4666 @findex COMMAND_TRACEPOINTS
4667 @findex gdb.COMMAND_TRACEPOINTS
4668 @item gdb.COMMAND_TRACEPOINTS
4669 The command has to do with tracepoints. For example, @code{trace},
4670 @code{actions}, and @code{tfind} are in this category. Type
4671 @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
4672 commands in this category.
4673
4674 @findex COMMAND_TUI
4675 @findex gdb.COMMAND_TUI
4676 @item gdb.COMMAND_TUI
4677 The command has to do with the text user interface (@pxref{TUI}).
4678 Type @kbd{help tui} at the @value{GDBN} prompt to see a list of
4679 commands in this category.
4680
4681 @findex COMMAND_USER
4682 @findex gdb.COMMAND_USER
4683 @item gdb.COMMAND_USER
4684 The command is a general purpose command for the user, and typically
4685 does not fit in one of the other categories.
4686 Type @kbd{help user-defined} at the @value{GDBN} prompt to see
4687 a list of commands in this category, as well as the list of gdb macros
4688 (@pxref{Sequences}).
4689
4690 @findex COMMAND_OBSCURE
4691 @findex gdb.COMMAND_OBSCURE
4692 @item gdb.COMMAND_OBSCURE
4693 The command is only used in unusual circumstances, or is not of
4694 general interest to users. For example, @code{checkpoint},
4695 @code{fork}, and @code{stop} are in this category. Type @kbd{help
4696 obscure} at the @value{GDBN} prompt to see a list of commands in this
4697 category.
4698
4699 @findex COMMAND_MAINTENANCE
4700 @findex gdb.COMMAND_MAINTENANCE
4701 @item gdb.COMMAND_MAINTENANCE
4702 The command is only useful to @value{GDBN} maintainers. The
4703 @code{maintenance} and @code{flushregs} commands are in this category.
4704 Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
4705 commands in this category.
4706 @end table
4707
4708 A new command can use a predefined completion function, either by
4709 specifying it via an argument at initialization, or by returning it
4710 from the @code{complete} method. These predefined completion
4711 constants are all defined in the @code{gdb} module:
4712
4713 @vtable @code
4714 @vindex COMPLETE_NONE
4715 @item gdb.COMPLETE_NONE
4716 This constant means that no completion should be done.
4717
4718 @vindex COMPLETE_FILENAME
4719 @item gdb.COMPLETE_FILENAME
4720 This constant means that filename completion should be performed.
4721
4722 @vindex COMPLETE_LOCATION
4723 @item gdb.COMPLETE_LOCATION
4724 This constant means that location completion should be done.
4725 @xref{Location Specifications}.
4726
4727 @vindex COMPLETE_COMMAND
4728 @item gdb.COMPLETE_COMMAND
4729 This constant means that completion should examine @value{GDBN}
4730 command names.
4731
4732 @vindex COMPLETE_SYMBOL
4733 @item gdb.COMPLETE_SYMBOL
4734 This constant means that completion should be done using symbol names
4735 as the source.
4736
4737 @vindex COMPLETE_EXPRESSION
4738 @item gdb.COMPLETE_EXPRESSION
4739 This constant means that completion should be done on expressions.
4740 Often this means completing on symbol names, but some language
4741 parsers also have support for completing on field names.
4742 @end vtable
4743
4744 The following code snippet shows how a trivial CLI command can be
4745 implemented in Python:
4746
4747 @smallexample
4748 class HelloWorld (gdb.Command):
4749 """Greet the whole world."""
4750
4751 def __init__ (self):
4752 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
4753
4754 def invoke (self, arg, from_tty):
4755 print ("Hello, World!")
4756
4757 HelloWorld ()
4758 @end smallexample
4759
4760 The last line instantiates the class, and is necessary to trigger the
4761 registration of the command with @value{GDBN}. Depending on how the
4762 Python code is read into @value{GDBN}, you may need to import the
4763 @code{gdb} module explicitly.
4764
4765 @node GDB/MI Commands In Python
4766 @subsubsection @sc{gdb/mi} Commands In Python
4767
4768 @cindex MI commands in python
4769 @cindex commands in python, GDB/MI
4770 @cindex python commands, GDB/MI
4771 It is possible to add @sc{gdb/mi} (@pxref{GDB/MI}) commands
4772 implemented in Python. A @sc{gdb/mi} command is implemented using an
4773 instance of the @code{gdb.MICommand} class, most commonly using a
4774 subclass.
4775
4776 @defun MICommand.__init__ (name)
4777 The object initializer for @code{MICommand} registers the new command
4778 with @value{GDBN}. This initializer is normally invoked from the
4779 subclass' own @code{__init__} method.
4780
4781 @var{name} is the name of the command. It must be a valid name of a
4782 @sc{gdb/mi} command, and in particular must start with a hyphen
4783 (@code{-}). Reusing the name of a built-in @sc{gdb/mi} is not
4784 allowed, and a @code{RuntimeError} will be raised. Using the name
4785 of an @sc{gdb/mi} command previously defined in Python is allowed, the
4786 previous command will be replaced with the new command.
4787 @end defun
4788
4789 @defun MICommand.invoke (arguments)
4790 This method is called by @value{GDBN} when the new MI command is
4791 invoked.
4792
4793 @var{arguments} is a list of strings. Note, that @code{--thread}
4794 and @code{--frame} arguments are handled by @value{GDBN} itself therefore
4795 they do not show up in @code{arguments}.
4796
4797 If this method raises an exception, then it is turned into a
4798 @sc{gdb/mi} @code{^error} response. Only @code{gdb.GdbError}
4799 exceptions (or its sub-classes) should be used for reporting errors to
4800 users, any other exception type is treated as a failure of the
4801 @code{invoke} method, and the exception will be printed to the error
4802 stream according to the @kbd{set python print-stack} setting
4803 (@pxref{set_python_print_stack,,@kbd{set python print-stack}}).
4804
4805 If this method returns @code{None}, then the @sc{gdb/mi} command will
4806 return a @code{^done} response with no additional values.
4807
4808 Otherwise, the return value must be a dictionary, which is converted
4809 to a @sc{gdb/mi} @var{result-record} (@pxref{GDB/MI Output Syntax}).
4810 The keys of this dictionary must be strings, and are used as
4811 @var{variable} names in the @var{result-record}, these strings must
4812 comply with the naming rules detailed below. The values of this
4813 dictionary are recursively handled as follows:
4814
4815 @itemize
4816 @item
4817 If the value is Python sequence or iterator, it is converted to
4818 @sc{gdb/mi} @var{list} with elements converted recursively.
4819
4820 @item
4821 If the value is Python dictionary, it is converted to
4822 @sc{gdb/mi} @var{tuple}. Keys in that dictionary must be strings,
4823 which comply with the @var{variable} naming rules detailed below.
4824 Values are converted recursively.
4825
4826 @item
4827 Otherwise, value is first converted to a Python string using
4828 @code{str ()} and then converted to @sc{gdb/mi} @var{const}.
4829 @end itemize
4830
4831 The strings used for @var{variable} names in the @sc{gdb/mi} output
4832 must follow the following rules; the string must be at least one
4833 character long, the first character must be in the set
4834 @code{[a-zA-Z]}, while every subsequent character must be in the set
4835 @code{[-_a-zA-Z0-9]}.
4836 @end defun
4837
4838 An instance of @code{MICommand} has the following attributes:
4839
4840 @defvar MICommand.name
4841 A string, the name of this @sc{gdb/mi} command, as was passed to the
4842 @code{__init__} method. This attribute is read-only.
4843 @end defvar
4844
4845 @defvar MICommand.installed
4846 A boolean value indicating if this command is installed ready for a
4847 user to call from the command line. Commands are automatically
4848 installed when they are instantiated, after which this attribute will
4849 be @code{True}.
4850
4851 If later, a new command is created with the same name, then the
4852 original command will become uninstalled, and this attribute will be
4853 @code{False}.
4854
4855 This attribute is read-write, setting this attribute to @code{False}
4856 will uninstall the command, removing it from the set of available
4857 commands. Setting this attribute to @code{True} will install the
4858 command for use. If there is already a Python command with this name
4859 installed, the currently installed command will be uninstalled, and
4860 this command installed in its stead.
4861 @end defvar
4862
4863 The following code snippet shows how some trivial MI commands can be
4864 implemented in Python:
4865
4866 @smallexample
4867 class MIEcho(gdb.MICommand):
4868 """Echo arguments passed to the command."""
4869
4870 def __init__(self, name, mode):
4871 self._mode = mode
4872 super(MIEcho, self).__init__(name)
4873
4874 def invoke(self, argv):
4875 if self._mode == 'dict':
4876 return @{ 'dict': @{ 'argv' : argv @} @}
4877 elif self._mode == 'list':
4878 return @{ 'list': argv @}
4879 else:
4880 return @{ 'string': ", ".join(argv) @}
4881
4882
4883 MIEcho("-echo-dict", "dict")
4884 MIEcho("-echo-list", "list")
4885 MIEcho("-echo-string", "string")
4886 @end smallexample
4887
4888 The last three lines instantiate the class three times, creating three
4889 new @sc{gdb/mi} commands @code{-echo-dict}, @code{-echo-list}, and
4890 @code{-echo-string}. Each time a subclass of @code{gdb.MICommand} is
4891 instantiated, the new command is automatically registered with
4892 @value{GDBN}.
4893
4894 Depending on how the Python code is read into @value{GDBN}, you may
4895 need to import the @code{gdb} module explicitly.
4896
4897 The following example shows a @value{GDBN} session in which the above
4898 commands have been added:
4899
4900 @smallexample
4901 (@value{GDBP})
4902 -echo-dict abc def ghi
4903 ^done,dict=@{argv=["abc","def","ghi"]@}
4904 (@value{GDBP})
4905 -echo-list abc def ghi
4906 ^done,list=["abc","def","ghi"]
4907 (@value{GDBP})
4908 -echo-string abc def ghi
4909 ^done,string="abc, def, ghi"
4910 (@value{GDBP})
4911 @end smallexample
4912
4913 Conversely, it is possible to execute @sc{gdb/mi} commands from
4914 Python, with the results being a Python object and not a
4915 specially-formatted string. This is done with the
4916 @code{gdb.execute_mi} function.
4917
4918 @defun gdb.execute_mi (command @r{[}, arg @r{]}@dots{})
4919 Invoke a @sc{gdb/mi} command. @var{command} is the name of the
4920 command, a string. The arguments, @var{arg}, are passed to the
4921 command. Each argument must also be a string.
4922
4923 This function returns a Python dictionary whose contents reflect the
4924 corresponding @sc{GDB/MI} command's output. Refer to the
4925 documentation for these commands for details. Lists are represented
4926 as Python lists, and tuples are represented as Python dictionaries.
4927
4928 If the command fails, it will raise a Python exception.
4929 @end defun
4930
4931 Here is how this works using the commands from the example above:
4932
4933 @smallexample
4934 (@value{GDBP}) python print(gdb.execute_mi("-echo-dict", "abc", "def", "ghi"))
4935 @{'dict': @{'argv': ['abc', 'def', 'ghi']@}@}
4936 (@value{GDBP}) python print(gdb.execute_mi("-echo-list", "abc", "def", "ghi"))
4937 @{'list': ['abc', 'def', 'ghi']@}
4938 (@value{GDBP}) python print(gdb.execute_mi("-echo-string", "abc", "def", "ghi"))
4939 @{'string': 'abc, def, ghi'@}
4940 @end smallexample
4941
4942 @node GDB/MI Notifications In Python
4943 @subsubsection @sc{gdb/mi} Notifications In Python
4944
4945 @cindex MI notifications in python
4946 @cindex notifications in python, GDB/MI
4947 @cindex python notifications, GDB/MI
4948
4949 It is possible to emit @sc{gdb/mi} notifications from
4950 Python. Use the @code{gdb.notify_mi} function to do that.
4951
4952 @defun gdb.notify_mi (name @r{[}, data@r{]})
4953 Emit a @sc{gdb/mi} asynchronous notification. @var{name} is the name of the
4954 notification, consisting of alphanumeric characters and a hyphen (@code{-}).
4955 @var{data} is any additional data to be emitted with the notification, passed
4956 as a Python dictionary. This argument is optional. The dictionary is converted
4957 to a @sc{gdb/mi} @var{result} records (@pxref{GDB/MI Output Syntax}) the same way
4958 as result of Python MI command (@pxref{GDB/MI Commands In Python}).
4959
4960 If @var{data} is @code{None} then no additional values are emitted.
4961 @end defun
4962
4963 While using existing notification names (@pxref{GDB/MI Async Records}) with
4964 @code{gdb.notify_mi} is allowed, users are encouraged to prefix user-defined
4965 notification with a hyphen (@code{-}) to avoid possible conflict.
4966 @value{GDBN} will never introduce notification starting with hyphen.
4967
4968 Here is how to emit @code{=-connection-removed} whenever a connection to remote
4969 GDB server is closed (@pxref{Connections In Python}):
4970
4971 @smallexample
4972 def notify_connection_removed(event):
4973 data = @{"id": event.connection.num, "type": event.connection.type@}
4974 gdb.notify_mi("-connection-removed", data)
4975
4976
4977 gdb.events.connection_removed.connect(notify_connection_removed)
4978 @end smallexample
4979
4980 Then, each time a connection is closed, there will be a notification on MI channel:
4981
4982 @smallexample
4983 =-connection-removed,id="1",type="remote"
4984 @end smallexample
4985
4986 @node Parameters In Python
4987 @subsubsection Parameters In Python
4988
4989 @cindex parameters in python
4990 @cindex python parameters
4991 @tindex gdb.Parameter
4992 @tindex Parameter
4993 You can implement new @value{GDBN} parameters using Python. A new
4994 parameter is implemented as an instance of the @code{gdb.Parameter}
4995 class.
4996
4997 Parameters are exposed to the user via the @code{set} and
4998 @code{show} commands. @xref{Help}.
4999
5000 There are many parameters that already exist and can be set in
5001 @value{GDBN}. Two examples are: @code{set follow fork} and
5002 @code{set charset}. Setting these parameters influences certain
5003 behavior in @value{GDBN}. Similarly, you can define parameters that
5004 can be used to influence behavior in custom Python scripts and commands.
5005
5006 @defun Parameter.__init__ (name, command_class, parameter_class @r{[}, enum_sequence@r{]})
5007 The object initializer for @code{Parameter} registers the new
5008 parameter with @value{GDBN}. This initializer is normally invoked
5009 from the subclass' own @code{__init__} method.
5010
5011 @var{name} is the name of the new parameter. If @var{name} consists
5012 of multiple words, then the initial words are looked for as prefix
5013 parameters. An example of this can be illustrated with the
5014 @code{set print} set of parameters. If @var{name} is
5015 @code{print foo}, then @code{print} will be searched as the prefix
5016 parameter. In this case the parameter can subsequently be accessed in
5017 @value{GDBN} as @code{set print foo}.
5018
5019 If @var{name} consists of multiple words, and no prefix parameter group
5020 can be found, an exception is raised.
5021
5022 @var{command_class} should be one of the @samp{COMMAND_} constants
5023 (@pxref{CLI Commands In Python}). This argument tells @value{GDBN} how to
5024 categorize the new parameter in the help system.
5025
5026 @var{parameter_class} should be one of the @samp{PARAM_} constants
5027 defined below. This argument tells @value{GDBN} the type of the new
5028 parameter; this information is used for input validation and
5029 completion.
5030
5031 If @var{parameter_class} is @code{PARAM_ENUM}, then
5032 @var{enum_sequence} must be a sequence of strings. These strings
5033 represent the possible values for the parameter.
5034
5035 If @var{parameter_class} is not @code{PARAM_ENUM}, then the presence
5036 of a fourth argument will cause an exception to be thrown.
5037
5038 The help text for the new parameter includes the Python documentation
5039 string from the parameter's class, if there is one. If there is no
5040 documentation string, a default value is used. The documentation
5041 string is included in the output of the parameters @code{help set} and
5042 @code{help show} commands, and should be written taking this into
5043 account.
5044 @end defun
5045
5046 @defvar Parameter.set_doc
5047 If this attribute exists, and is a string, then its value is used as
5048 the first part of the help text for this parameter's @code{set}
5049 command. The second part of the help text is taken from the
5050 documentation string for the parameter's class, if there is one.
5051
5052 The value of @code{set_doc} should give a brief summary specific to
5053 the set action, this text is only displayed when the user runs the
5054 @code{help set} command for this parameter. The class documentation
5055 should be used to give a fuller description of what the parameter
5056 does, this text is displayed for both the @code{help set} and
5057 @code{help show} commands.
5058
5059 The @code{set_doc} value is examined when @code{Parameter.__init__} is
5060 invoked; subsequent changes have no effect.
5061 @end defvar
5062
5063 @defvar Parameter.show_doc
5064 If this attribute exists, and is a string, then its value is used as
5065 the first part of the help text for this parameter's @code{show}
5066 command. The second part of the help text is taken from the
5067 documentation string for the parameter's class, if there is one.
5068
5069 The value of @code{show_doc} should give a brief summary specific to
5070 the show action, this text is only displayed when the user runs the
5071 @code{help show} command for this parameter. The class documentation
5072 should be used to give a fuller description of what the parameter
5073 does, this text is displayed for both the @code{help set} and
5074 @code{help show} commands.
5075
5076 The @code{show_doc} value is examined when @code{Parameter.__init__}
5077 is invoked; subsequent changes have no effect.
5078 @end defvar
5079
5080 @defvar Parameter.value
5081 The @code{value} attribute holds the underlying value of the
5082 parameter. It can be read and assigned to just as any other
5083 attribute. @value{GDBN} does validation when assignments are made.
5084 @end defvar
5085
5086 There are two methods that may be implemented in any @code{Parameter}
5087 class. These are:
5088
5089 @defun Parameter.get_set_string (self)
5090 If this method exists, @value{GDBN} will call it when a
5091 @var{parameter}'s value has been changed via the @code{set} API (for
5092 example, @kbd{set foo off}). The @code{value} attribute has already
5093 been populated with the new value and may be used in output. This
5094 method must return a string. If the returned string is not empty,
5095 @value{GDBN} will present it to the user.
5096
5097 If this method raises the @code{gdb.GdbError} exception
5098 (@pxref{Exception Handling}), then @value{GDBN} will print the
5099 exception's string and the @code{set} command will fail. Note,
5100 however, that the @code{value} attribute will not be reset in this
5101 case. So, if your parameter must validate values, it should store the
5102 old value internally and reset the exposed value, like so:
5103
5104 @smallexample
5105 class ExampleParam (gdb.Parameter):
5106 def __init__ (self, name):
5107 super (ExampleParam, self).__init__ (name,
5108 gdb.COMMAND_DATA,
5109 gdb.PARAM_BOOLEAN)
5110 self.value = True
5111 self.saved_value = True
5112 def validate(self):
5113 return False
5114 def get_set_string (self):
5115 if not self.validate():
5116 self.value = self.saved_value
5117 raise gdb.GdbError('Failed to validate')
5118 self.saved_value = self.value
5119 return ""
5120 @end smallexample
5121 @end defun
5122
5123 @defun Parameter.get_show_string (self, svalue)
5124 @value{GDBN} will call this method when a @var{parameter}'s
5125 @code{show} API has been invoked (for example, @kbd{show foo}). The
5126 argument @code{svalue} receives the string representation of the
5127 current value. This method must return a string.
5128 @end defun
5129
5130 When a new parameter is defined, its type must be specified. The
5131 available types are represented by constants defined in the @code{gdb}
5132 module:
5133
5134 @table @code
5135 @findex PARAM_BOOLEAN
5136 @findex gdb.PARAM_BOOLEAN
5137 @item gdb.PARAM_BOOLEAN
5138 The value is a plain boolean. The Python boolean values, @code{True}
5139 and @code{False} are the only valid values.
5140
5141 @findex PARAM_AUTO_BOOLEAN
5142 @findex gdb.PARAM_AUTO_BOOLEAN
5143 @item gdb.PARAM_AUTO_BOOLEAN
5144 The value has three possible states: true, false, and @samp{auto}. In
5145 Python, true and false are represented using boolean constants, and
5146 @samp{auto} is represented using @code{None}.
5147
5148 @findex PARAM_UINTEGER
5149 @findex gdb.PARAM_UINTEGER
5150 @item gdb.PARAM_UINTEGER
5151 The value is an unsigned integer. The value of @code{None} should be
5152 interpreted to mean ``unlimited'' (literal @code{'unlimited'} can also
5153 be used to set that value), and the value of 0 is reserved and should
5154 not be used.
5155
5156 @findex PARAM_INTEGER
5157 @findex gdb.PARAM_INTEGER
5158 @item gdb.PARAM_INTEGER
5159 The value is a signed integer. The value of @code{None} should be
5160 interpreted to mean ``unlimited'' (literal @code{'unlimited'} can also
5161 be used to set that value), and the value of 0 is reserved and should
5162 not be used.
5163
5164 @findex PARAM_STRING
5165 @findex gdb.PARAM_STRING
5166 @item gdb.PARAM_STRING
5167 The value is a string. When the user modifies the string, any escape
5168 sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
5169 translated into corresponding characters and encoded into the current
5170 host charset.
5171
5172 @findex PARAM_STRING_NOESCAPE
5173 @findex gdb.PARAM_STRING_NOESCAPE
5174 @item gdb.PARAM_STRING_NOESCAPE
5175 The value is a string. When the user modifies the string, escapes are
5176 passed through untranslated.
5177
5178 @findex PARAM_OPTIONAL_FILENAME
5179 @findex gdb.PARAM_OPTIONAL_FILENAME
5180 @item gdb.PARAM_OPTIONAL_FILENAME
5181 The value is a either a filename (a string), or @code{None}.
5182
5183 @findex PARAM_FILENAME
5184 @findex gdb.PARAM_FILENAME
5185 @item gdb.PARAM_FILENAME
5186 The value is a filename. This is just like
5187 @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
5188
5189 @findex PARAM_ZINTEGER
5190 @findex gdb.PARAM_ZINTEGER
5191 @item gdb.PARAM_ZINTEGER
5192 The value is a signed integer. This is like @code{PARAM_INTEGER},
5193 except that 0 is allowed and the value of @code{None} is not supported.
5194
5195 @findex PARAM_ZUINTEGER
5196 @findex gdb.PARAM_ZUINTEGER
5197 @item gdb.PARAM_ZUINTEGER
5198 The value is an unsigned integer. This is like @code{PARAM_UINTEGER},
5199 except that 0 is allowed and the value of @code{None} is not supported.
5200
5201 @findex PARAM_ZUINTEGER_UNLIMITED
5202 @findex gdb.PARAM_ZUINTEGER_UNLIMITED
5203 @item gdb.PARAM_ZUINTEGER_UNLIMITED
5204 The value is a signed integer. This is like @code{PARAM_INTEGER}
5205 including that the value of @code{None} should be interpreted to mean
5206 ``unlimited'' (literal @code{'unlimited'} can also be used to set that
5207 value), except that 0 is allowed, and the value cannot be negative,
5208 except the special value -1 is returned for the setting of ``unlimited''.
5209
5210 @findex PARAM_ENUM
5211 @findex gdb.PARAM_ENUM
5212 @item gdb.PARAM_ENUM
5213 The value is a string, which must be one of a collection string
5214 constants provided when the parameter is created.
5215 @end table
5216
5217 @node Functions In Python
5218 @subsubsection Writing new convenience functions
5219
5220 @cindex writing convenience functions
5221 @cindex convenience functions in python
5222 @cindex python convenience functions
5223 @tindex gdb.Function
5224 @tindex Function
5225 You can implement new convenience functions (@pxref{Convenience Vars})
5226 in Python. A convenience function is an instance of a subclass of the
5227 class @code{gdb.Function}.
5228
5229 @defun Function.__init__ (name)
5230 The initializer for @code{Function} registers the new function with
5231 @value{GDBN}. The argument @var{name} is the name of the function,
5232 a string. The function will be visible to the user as a convenience
5233 variable of type @code{internal function}, whose name is the same as
5234 the given @var{name}.
5235
5236 The documentation for the new function is taken from the documentation
5237 string for the new class.
5238 @end defun
5239
5240 @defun Function.invoke (*args)
5241 When a convenience function is evaluated, its arguments are converted
5242 to instances of @code{gdb.Value}, and then the function's
5243 @code{invoke} method is called. Note that @value{GDBN} does not
5244 predetermine the arity of convenience functions. Instead, all
5245 available arguments are passed to @code{invoke}, following the
5246 standard Python calling convention. In particular, a convenience
5247 function can have default values for parameters without ill effect.
5248
5249 The return value of this method is used as its value in the enclosing
5250 expression. If an ordinary Python value is returned, it is converted
5251 to a @code{gdb.Value} following the usual rules.
5252 @end defun
5253
5254 The following code snippet shows how a trivial convenience function can
5255 be implemented in Python:
5256
5257 @smallexample
5258 class Greet (gdb.Function):
5259 """Return string to greet someone.
5260 Takes a name as argument."""
5261
5262 def __init__ (self):
5263 super (Greet, self).__init__ ("greet")
5264
5265 def invoke (self, name):
5266 return "Hello, %s!" % name.string ()
5267
5268 Greet ()
5269 @end smallexample
5270
5271 The last line instantiates the class, and is necessary to trigger the
5272 registration of the function with @value{GDBN}. Depending on how the
5273 Python code is read into @value{GDBN}, you may need to import the
5274 @code{gdb} module explicitly.
5275
5276 Now you can use the function in an expression:
5277
5278 @smallexample
5279 (gdb) print $greet("Bob")
5280 $1 = "Hello, Bob!"
5281 @end smallexample
5282
5283 @node Progspaces In Python
5284 @subsubsection Program Spaces In Python
5285
5286 @cindex progspaces in python
5287 @tindex gdb.Progspace
5288 @tindex Progspace
5289 A program space, or @dfn{progspace}, represents a symbolic view
5290 of an address space.
5291 It consists of all of the objfiles of the program.
5292 @xref{Objfiles In Python}.
5293 @xref{Inferiors Connections and Programs, program spaces}, for more details
5294 about program spaces.
5295
5296 The following progspace-related functions are available in the
5297 @code{gdb} module:
5298
5299 @defun gdb.current_progspace ()
5300 This function returns the program space of the currently selected inferior.
5301 @xref{Inferiors Connections and Programs}. This is identical to
5302 @code{gdb.selected_inferior().progspace} (@pxref{Inferiors In Python}) and is
5303 included for historical compatibility.
5304 @end defun
5305
5306 @defun gdb.progspaces ()
5307 Return a sequence of all the progspaces currently known to @value{GDBN}.
5308 @end defun
5309
5310 Each progspace is represented by an instance of the @code{gdb.Progspace}
5311 class.
5312
5313 @defvar Progspace.filename
5314 The file name, as a string, of the main symbol file (from which debug
5315 symbols have been loaded) for the progspace, e.g.@: the argument to
5316 the @kbd{symbol-file} or @kbd{file} commands.
5317
5318 If there is no main symbol table currently loaded, then this attribute
5319 will be @code{None}.
5320 @end defvar
5321
5322 @defvar Progspace.symbol_file
5323 The @code{gdb.Objfile} representing the main symbol file (from which
5324 debug symbols have been loaded) for the @code{gdb.Progspace}. This is
5325 the symbol file set by the @kbd{symbol-file} or @kbd{file} commands.
5326
5327 This will be the @code{gdb.Objfile} representing
5328 @code{Progspace.filename} when @code{Progspace.filename} is not
5329 @code{None}.
5330
5331 If there is no main symbol table currently loaded, then this attribute
5332 will be @code{None}.
5333
5334 If the @code{Progspace} is invalid, i.e.@:, when
5335 @code{Progspace.is_valid()} returns @code{False}, then attempting to
5336 access this attribute will raise a @code{RuntimeError} exception.
5337 @end defvar
5338
5339 @defvar Progspace.executable_filename
5340 The file name, as a string, of the executable file in use by this
5341 program space. The executable file is the file that @value{GDBN} will
5342 invoke in order to start an inferior when using a native target. The
5343 file name within this attribute is updated by the @kbd{exec-file} and
5344 @kbd{file} commands.
5345
5346 If no executable is currently set within this @code{Progspace} then
5347 this attribute contains @code{None}.
5348
5349 If the @code{Progspace} is invalid, i.e.@:, when
5350 @code{Progspace.is_valid()} returns @code{False}, then attempting to
5351 access this attribute will raise a @code{RuntimeError} exception.
5352 @end defvar
5353
5354 @defvar Progspace.pretty_printers
5355 The @code{pretty_printers} attribute is a list of functions. It is
5356 used to look up pretty-printers. A @code{Value} is passed to each
5357 function in order; if the function returns @code{None}, then the
5358 search continues. Otherwise, the return value should be an object
5359 which is used to format the value. @xref{Pretty Printing API}, for more
5360 information.
5361 @end defvar
5362
5363 @defvar Progspace.type_printers
5364 The @code{type_printers} attribute is a list of type printer objects.
5365 @xref{Type Printing API}, for more information.
5366 @end defvar
5367
5368 @defvar Progspace.frame_filters
5369 The @code{frame_filters} attribute is a dictionary of frame filter
5370 objects. @xref{Frame Filter API}, for more information.
5371 @end defvar
5372
5373 @defvar Progspace.missing_debug_handlers
5374 The @code{missing_debug_handlers} attribute is a list of the missing
5375 debug handler objects for this program space. @xref{Missing Debug
5376 Info In Python}, for more information.
5377 @end defvar
5378
5379 A program space has the following methods:
5380
5381 @defun Progspace.block_for_pc (pc)
5382 Return the innermost @code{gdb.Block} containing the given @var{pc}
5383 value. If the block cannot be found for the @var{pc} value specified,
5384 the function will return @code{None}.
5385 @end defun
5386
5387 @defun Progspace.find_pc_line (pc)
5388 Return the @code{gdb.Symtab_and_line} object corresponding to the
5389 @var{pc} value. @xref{Symbol Tables In Python}. If an invalid value
5390 of @var{pc} is passed as an argument, then the @code{symtab} and
5391 @code{line} attributes of the returned @code{gdb.Symtab_and_line}
5392 object will be @code{None} and 0 respectively.
5393 @end defun
5394
5395 @defun Progspace.is_valid ()
5396 Returns @code{True} if the @code{gdb.Progspace} object is valid,
5397 @code{False} if not. A @code{gdb.Progspace} object can become invalid
5398 if the program space file it refers to is not referenced by any
5399 inferior. All other @code{gdb.Progspace} methods will throw an
5400 exception if it is invalid at the time the method is called.
5401 @end defun
5402
5403 @defun Progspace.objfiles ()
5404 Return a sequence of all the objfiles referenced by this program
5405 space. @xref{Objfiles In Python}.
5406 @end defun
5407
5408 @defun Progspace.solib_name (address)
5409 Return the name of the shared library holding the given @var{address}
5410 as a string, or @code{None}.
5411 @end defun
5412
5413 @defun Progspace.objfile_for_address (address)
5414 Return the @code{gdb.Objfile} holding the given address, or
5415 @code{None} if no objfile covers it.
5416 @end defun
5417
5418 One may add arbitrary attributes to @code{gdb.Progspace} objects
5419 in the usual Python way.
5420 This is useful if, for example, one needs to do some extra record keeping
5421 associated with the program space.
5422
5423 @xref{choosing attribute names}, for guidance on selecting a suitable
5424 name for new attributes.
5425
5426 In this contrived example, we want to perform some processing when
5427 an objfile with a certain symbol is loaded, but we only want to do
5428 this once because it is expensive. To achieve this we record the results
5429 with the program space because we can't predict when the desired objfile
5430 will be loaded.
5431
5432 @smallexample
5433 (@value{GDBP}) python
5434 @group
5435 def clear_objfiles_handler(event):
5436 event.progspace.expensive_computation = None
5437 def expensive(symbol):
5438 """A mock routine to perform an "expensive" computation on symbol."""
5439 print ("Computing the answer to the ultimate question ...")
5440 return 42
5441 @end group
5442 @group
5443 def new_objfile_handler(event):
5444 objfile = event.new_objfile
5445 progspace = objfile.progspace
5446 if not hasattr(progspace, 'expensive_computation') or \
5447 progspace.expensive_computation is None:
5448 # We use 'main' for the symbol to keep the example simple.
5449 # Note: There's no current way to constrain the lookup
5450 # to one objfile.
5451 symbol = gdb.lookup_global_symbol('main')
5452 if symbol is not None:
5453 progspace.expensive_computation = expensive(symbol)
5454 gdb.events.clear_objfiles.connect(clear_objfiles_handler)
5455 gdb.events.new_objfile.connect(new_objfile_handler)
5456 end
5457 @end group
5458 @group
5459 (@value{GDBP}) file /tmp/hello
5460 Reading symbols from /tmp/hello...
5461 Computing the answer to the ultimate question ...
5462 (@value{GDBP}) python print(gdb.current_progspace().expensive_computation)
5463 42
5464 (@value{GDBP}) run
5465 Starting program: /tmp/hello
5466 Hello.
5467 [Inferior 1 (process 4242) exited normally]
5468 @end group
5469 @end smallexample
5470
5471 @node Objfiles In Python
5472 @subsubsection Objfiles In Python
5473
5474 @cindex objfiles in python
5475 @tindex gdb.Objfile
5476 @tindex Objfile
5477 @value{GDBN} loads symbols for an inferior from various
5478 symbol-containing files (@pxref{Files}). These include the primary
5479 executable file, any shared libraries used by the inferior, and any
5480 separate debug info files (@pxref{Separate Debug Files}).
5481 @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
5482
5483 The following objfile-related functions are available in the
5484 @code{gdb} module:
5485
5486 @defun gdb.current_objfile ()
5487 When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
5488 sets the ``current objfile'' to the corresponding objfile. This
5489 function returns the current objfile. If there is no current objfile,
5490 this function returns @code{None}.
5491 @end defun
5492
5493 @defun gdb.objfiles ()
5494 Return a sequence of objfiles referenced by the current program space.
5495 @xref{Objfiles In Python}, and @ref{Progspaces In Python}. This is identical
5496 to @code{gdb.selected_inferior().progspace.objfiles()} and is included for
5497 historical compatibility.
5498 @end defun
5499
5500 @defun gdb.lookup_objfile (name @r{[}, by_build_id@r{]})
5501 Look up @var{name}, a file name or build ID, in the list of objfiles
5502 for the current program space (@pxref{Progspaces In Python}).
5503 If the objfile is not found throw the Python @code{ValueError} exception.
5504
5505 If @var{name} is a relative file name, then it will match any
5506 source file name with the same trailing components. For example, if
5507 @var{name} is @samp{gcc/expr.c}, then it will match source file
5508 name of @file{/build/trunk/gcc/expr.c}, but not
5509 @file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
5510
5511 If @var{by_build_id} is provided and is @code{True} then @var{name}
5512 is the build ID of the objfile. Otherwise, @var{name} is a file name.
5513 This is supported only on some operating systems, notably those which use
5514 the ELF format for binary files and the @sc{gnu} Binutils. For more details
5515 about this feature, see the description of the @option{--build-id}
5516 command-line option in @ref{Options, , Command Line Options, ld,
5517 The GNU Linker}.
5518 @end defun
5519
5520 Each objfile is represented by an instance of the @code{gdb.Objfile}
5521 class.
5522
5523 @defvar Objfile.filename
5524 The file name of the objfile as a string, with symbolic links resolved.
5525
5526 The value is @code{None} if the objfile is no longer valid.
5527 See the @code{gdb.Objfile.is_valid} method, described below.
5528 @end defvar
5529
5530 @defvar Objfile.username
5531 The file name of the objfile as specified by the user as a string.
5532
5533 The value is @code{None} if the objfile is no longer valid.
5534 See the @code{gdb.Objfile.is_valid} method, described below.
5535 @end defvar
5536
5537 @defvar Objfile.is_file
5538 An objfile often comes from an ordinary file, but in some cases it may
5539 be constructed from the contents of memory. This attribute is
5540 @code{True} for file-backed objfiles, and @code{False} for other
5541 kinds.
5542 @end defvar
5543
5544 @defvar Objfile.owner
5545 For separate debug info objfiles this is the corresponding @code{gdb.Objfile}
5546 object that debug info is being provided for.
5547 Otherwise this is @code{None}.
5548 Separate debug info objfiles are added with the
5549 @code{gdb.Objfile.add_separate_debug_file} method, described below.
5550 @end defvar
5551
5552 @defvar Objfile.build_id
5553 The build ID of the objfile as a string.
5554 If the objfile does not have a build ID then the value is @code{None}.
5555
5556 This is supported only on some operating systems, notably those which use
5557 the ELF format for binary files and the @sc{gnu} Binutils. For more details
5558 about this feature, see the description of the @option{--build-id}
5559 command-line option in @ref{Options, , Command Line Options, ld,
5560 The GNU Linker}.
5561 @end defvar
5562
5563 @defvar Objfile.progspace
5564 The containing program space of the objfile as a @code{gdb.Progspace}
5565 object. @xref{Progspaces In Python}.
5566 @end defvar
5567
5568 @defvar Objfile.pretty_printers
5569 The @code{pretty_printers} attribute is a list of functions. It is
5570 used to look up pretty-printers. A @code{Value} is passed to each
5571 function in order; if the function returns @code{None}, then the
5572 search continues. Otherwise, the return value should be an object
5573 which is used to format the value. @xref{Pretty Printing API}, for more
5574 information.
5575 @end defvar
5576
5577 @defvar Objfile.type_printers
5578 The @code{type_printers} attribute is a list of type printer objects.
5579 @xref{Type Printing API}, for more information.
5580 @end defvar
5581
5582 @defvar Objfile.frame_filters
5583 The @code{frame_filters} attribute is a dictionary of frame filter
5584 objects. @xref{Frame Filter API}, for more information.
5585 @end defvar
5586
5587 One may add arbitrary attributes to @code{gdb.Objfile} objects
5588 in the usual Python way.
5589 This is useful if, for example, one needs to do some extra record keeping
5590 associated with the objfile.
5591
5592 @xref{choosing attribute names}, for guidance on selecting a suitable
5593 name for new attributes.
5594
5595 In this contrived example we record the time when @value{GDBN}
5596 loaded the objfile.
5597
5598 @smallexample
5599 @group
5600 (@value{GDBP}) python
5601 import datetime
5602 def new_objfile_handler(event):
5603 # Set the time_loaded attribute of the new objfile.
5604 event.new_objfile.time_loaded = datetime.datetime.today()
5605 gdb.events.new_objfile.connect(new_objfile_handler)
5606 end
5607 @end group
5608 @group
5609 (@value{GDBP}) file ./hello
5610 Reading symbols from ./hello...
5611 (@value{GDBP}) python print(gdb.objfiles()[0].time_loaded)
5612 2014-10-09 11:41:36.770345
5613 @end group
5614 @end smallexample
5615
5616 A @code{gdb.Objfile} object has the following methods:
5617
5618 @defun Objfile.is_valid ()
5619 Returns @code{True} if the @code{gdb.Objfile} object is valid,
5620 @code{False} if not. A @code{gdb.Objfile} object can become invalid
5621 if the object file it refers to is not loaded in @value{GDBN} any
5622 longer. All other @code{gdb.Objfile} methods will throw an exception
5623 if it is invalid at the time the method is called.
5624 @end defun
5625
5626 @defun Objfile.add_separate_debug_file (file)
5627 Add @var{file} to the list of files that @value{GDBN} will search for
5628 debug information for the objfile.
5629 This is useful when the debug info has been removed from the program
5630 and stored in a separate file. @value{GDBN} has built-in support for
5631 finding separate debug info files (@pxref{Separate Debug Files}), but if
5632 the file doesn't live in one of the standard places that @value{GDBN}
5633 searches then this function can be used to add a debug info file
5634 from a different place.
5635 @end defun
5636
5637 @defun Objfile.lookup_global_symbol (name @r{[}, domain@r{]})
5638 Search for a global symbol named @var{name} in this objfile. Optionally, the
5639 search scope can be restricted with the @var{domain} argument.
5640 The @var{domain} argument must be a domain constant defined in the @code{gdb}
5641 module and described in @ref{Symbols In Python}. This function is similar to
5642 @code{gdb.lookup_global_symbol}, except that the search is limited to this
5643 objfile.
5644
5645 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
5646 is not found.
5647 @end defun
5648
5649 @defun Objfile.lookup_static_symbol (name @r{[}, domain@r{]})
5650 Like @code{Objfile.lookup_global_symbol}, but searches for a global
5651 symbol with static linkage named @var{name} in this objfile.
5652 @end defun
5653
5654 @node Frames In Python
5655 @subsubsection Accessing inferior stack frames from Python
5656
5657 @cindex frames in python
5658 When the debugged program stops, @value{GDBN} is able to analyze its call
5659 stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
5660 represents a frame in the stack. A @code{gdb.Frame} object is only valid
5661 while its corresponding frame exists in the inferior's stack. If you try
5662 to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
5663 exception (@pxref{Exception Handling}).
5664
5665 Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
5666 operator, like:
5667
5668 @smallexample
5669 (@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
5670 True
5671 @end smallexample
5672
5673 The following frame-related functions are available in the @code{gdb} module:
5674
5675 @defun gdb.selected_frame ()
5676 Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
5677 @end defun
5678
5679 @defun gdb.newest_frame ()
5680 Return the newest frame object for the selected thread.
5681 @end defun
5682
5683 @defun gdb.frame_stop_reason_string (reason)
5684 Return a string explaining the reason why @value{GDBN} stopped unwinding
5685 frames, as expressed by the given @var{reason} code (an integer, see the
5686 @code{unwind_stop_reason} method further down in this section).
5687 @end defun
5688
5689 @defun gdb.invalidate_cached_frames
5690 @value{GDBN} internally keeps a cache of the frames that have been
5691 unwound. This function invalidates this cache.
5692
5693 This function should not generally be called by ordinary Python code.
5694 It is documented for the sake of completeness.
5695 @end defun
5696
5697 A @code{gdb.Frame} object has the following methods:
5698
5699 @defun Frame.is_valid ()
5700 Returns true if the @code{gdb.Frame} object is valid, false if not.
5701 A frame object can become invalid if the frame it refers to doesn't
5702 exist anymore in the inferior. All @code{gdb.Frame} methods will throw
5703 an exception if it is invalid at the time the method is called.
5704 @end defun
5705
5706 @defun Frame.name ()
5707 Returns the function name of the frame, or @code{None} if it can't be
5708 obtained.
5709 @end defun
5710
5711 @defun Frame.architecture ()
5712 Returns the @code{gdb.Architecture} object corresponding to the frame's
5713 architecture. @xref{Architectures In Python}.
5714 @end defun
5715
5716 @defun Frame.type ()
5717 Returns the type of the frame. The value can be one of:
5718 @table @code
5719 @item gdb.NORMAL_FRAME
5720 An ordinary stack frame.
5721
5722 @item gdb.DUMMY_FRAME
5723 A fake stack frame that was created by @value{GDBN} when performing an
5724 inferior function call.
5725
5726 @item gdb.INLINE_FRAME
5727 A frame representing an inlined function. The function was inlined
5728 into a @code{gdb.NORMAL_FRAME} that is older than this one.
5729
5730 @item gdb.TAILCALL_FRAME
5731 A frame representing a tail call. @xref{Tail Call Frames}.
5732
5733 @item gdb.SIGTRAMP_FRAME
5734 A signal trampoline frame. This is the frame created by the OS when
5735 it calls into a signal handler.
5736
5737 @item gdb.ARCH_FRAME
5738 A fake stack frame representing a cross-architecture call.
5739
5740 @item gdb.SENTINEL_FRAME
5741 This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
5742 newest frame.
5743 @end table
5744 @end defun
5745
5746 @defun Frame.unwind_stop_reason ()
5747 Return an integer representing the reason why it's not possible to find
5748 more frames toward the outermost frame. Use
5749 @code{gdb.frame_stop_reason_string} to convert the value returned by this
5750 function to a string. The value can be one of:
5751
5752 @table @code
5753 @item gdb.FRAME_UNWIND_NO_REASON
5754 No particular reason (older frames should be available).
5755
5756 @item gdb.FRAME_UNWIND_NULL_ID
5757 The previous frame's analyzer returns an invalid result. This is no
5758 longer used by @value{GDBN}, and is kept only for backward
5759 compatibility.
5760
5761 @item gdb.FRAME_UNWIND_OUTERMOST
5762 This frame is the outermost.
5763
5764 @item gdb.FRAME_UNWIND_UNAVAILABLE
5765 Cannot unwind further, because that would require knowing the
5766 values of registers or memory that have not been collected.
5767
5768 @item gdb.FRAME_UNWIND_INNER_ID
5769 This frame ID looks like it ought to belong to a NEXT frame,
5770 but we got it for a PREV frame. Normally, this is a sign of
5771 unwinder failure. It could also indicate stack corruption.
5772
5773 @item gdb.FRAME_UNWIND_SAME_ID
5774 This frame has the same ID as the previous one. That means
5775 that unwinding further would almost certainly give us another
5776 frame with exactly the same ID, so break the chain. Normally,
5777 this is a sign of unwinder failure. It could also indicate
5778 stack corruption.
5779
5780 @item gdb.FRAME_UNWIND_NO_SAVED_PC
5781 The frame unwinder did not find any saved PC, but we needed
5782 one to unwind further.
5783
5784 @item gdb.FRAME_UNWIND_MEMORY_ERROR
5785 The frame unwinder caused an error while trying to access memory.
5786
5787 @item gdb.FRAME_UNWIND_FIRST_ERROR
5788 Any stop reason greater or equal to this value indicates some kind
5789 of error. This special value facilitates writing code that tests
5790 for errors in unwinding in a way that will work correctly even if
5791 the list of the other values is modified in future @value{GDBN}
5792 versions. Using it, you could write:
5793 @smallexample
5794 reason = gdb.selected_frame().unwind_stop_reason ()
5795 reason_str = gdb.frame_stop_reason_string (reason)
5796 if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
5797 print ("An error occurred: %s" % reason_str)
5798 @end smallexample
5799 @end table
5800
5801 @end defun
5802
5803 @defun Frame.pc ()
5804 Returns the frame's resume address.
5805 @end defun
5806
5807 @defun Frame.block ()
5808 Return the frame's code block. @xref{Blocks In Python}. If the frame
5809 does not have a block -- for example, if there is no debugging
5810 information for the code in question -- then this will throw an
5811 exception.
5812 @end defun
5813
5814 @defun Frame.function ()
5815 Return the symbol for the function corresponding to this frame.
5816 @xref{Symbols In Python}.
5817 @end defun
5818
5819 @defun Frame.older ()
5820 Return the frame that called this frame. If this is the oldest frame,
5821 return @code{None}.
5822 @end defun
5823
5824 @defun Frame.newer ()
5825 Return the frame called by this frame. If this is the newest frame,
5826 return @code{None}.
5827 @end defun
5828
5829 @defun Frame.find_sal ()
5830 Return the frame's symtab and line object.
5831 @xref{Symbol Tables In Python}.
5832 @end defun
5833
5834 @anchor{gdbpy_frame_read_register}
5835 @defun Frame.read_register (register)
5836 Return the value of @var{register} in this frame. Returns a
5837 @code{Gdb.Value} object. Throws an exception if @var{register} does
5838 not exist. The @var{register} argument must be one of the following:
5839 @enumerate
5840 @item
5841 A string that is the name of a valid register (e.g., @code{'sp'} or
5842 @code{'rax'}).
5843 @item
5844 A @code{gdb.RegisterDescriptor} object (@pxref{Registers In Python}).
5845 @item
5846 A @value{GDBN} internal, platform specific number. Using these
5847 numbers is supported for historic reasons, but is not recommended as
5848 future changes to @value{GDBN} could change the mapping between
5849 numbers and the registers they represent, breaking any Python code
5850 that uses the platform-specific numbers. The numbers are usually
5851 found in the corresponding @file{@var{platform}-tdep.h} file in the
5852 @value{GDBN} source tree.
5853 @end enumerate
5854 Using a string to access registers will be slightly slower than the
5855 other two methods as @value{GDBN} must look up the mapping between
5856 name and internal register number. If performance is critical
5857 consider looking up and caching a @code{gdb.RegisterDescriptor}
5858 object.
5859 @end defun
5860
5861 @defun Frame.read_var (variable @r{[}, block@r{]})
5862 Return the value of @var{variable} in this frame. If the optional
5863 argument @var{block} is provided, search for the variable from that
5864 block; otherwise start at the frame's current block (which is
5865 determined by the frame's current program counter). The @var{variable}
5866 argument must be a string or a @code{gdb.Symbol} object; @var{block} must be a
5867 @code{gdb.Block} object.
5868 @end defun
5869
5870 @defun Frame.select ()
5871 Set this frame to be the selected frame. @xref{Stack, ,Examining the
5872 Stack}.
5873 @end defun
5874
5875 @defun Frame.static_link ()
5876 In some languages (e.g., Ada, but also a GNU C extension), a nested
5877 function can access the variables in the outer scope. This is done
5878 via a ``static link'', which is a reference from the nested frame to
5879 the appropriate outer frame.
5880
5881 This method returns this frame's static link frame, if one exists. If
5882 there is no static link, this method returns @code{None}.
5883 @end defun
5884
5885 @defun Frame.level ()
5886 Return an integer, the stack frame level for this frame. @xref{Frames, ,Stack Frames}.
5887 @end defun
5888
5889 @defun Frame.language ()
5890 Return a string, the source language for this frame.
5891 @end defun
5892
5893 @node Blocks In Python
5894 @subsubsection Accessing blocks from Python
5895
5896 @cindex blocks in python
5897 @tindex gdb.Block
5898
5899 In @value{GDBN}, symbols are stored in blocks. A block corresponds
5900 roughly to a scope in the source code. Blocks are organized
5901 hierarchically, and are represented individually in Python as a
5902 @code{gdb.Block}. Blocks rely on debugging information being
5903 available.
5904
5905 A frame has a block. Please see @ref{Frames In Python}, for a more
5906 in-depth discussion of frames.
5907
5908 The outermost block is known as the @dfn{global block}. The global
5909 block typically holds public global variables and functions.
5910
5911 The block nested just inside the global block is the @dfn{static
5912 block}. The static block typically holds file-scoped variables and
5913 functions.
5914
5915 @value{GDBN} provides a method to get a block's superblock, but there
5916 is currently no way to examine the sub-blocks of a block, or to
5917 iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
5918 Python}).
5919
5920 Here is a short example that should help explain blocks:
5921
5922 @smallexample
5923 /* This is in the global block. */
5924 int global;
5925
5926 /* This is in the static block. */
5927 static int file_scope;
5928
5929 /* 'function' is in the global block, and 'argument' is
5930 in a block nested inside of 'function'. */
5931 int function (int argument)
5932 @{
5933 /* 'local' is in a block inside 'function'. It may or may
5934 not be in the same block as 'argument'. */
5935 int local;
5936
5937 @{
5938 /* 'inner' is in a block whose superblock is the one holding
5939 'local'. */
5940 int inner;
5941
5942 /* If this call is expanded by the compiler, you may see
5943 a nested block here whose function is 'inline_function'
5944 and whose superblock is the one holding 'inner'. */
5945 inline_function ();
5946 @}
5947 @}
5948 @end smallexample
5949
5950 A @code{gdb.Block} is iterable. The iterator returns the symbols
5951 (@pxref{Symbols In Python}) local to the block. Python programs
5952 should not assume that a specific block object will always contain a
5953 given symbol, since changes in @value{GDBN} features and
5954 infrastructure may cause symbols move across blocks in a symbol
5955 table. You can also use Python's @dfn{dictionary syntax} to access
5956 variables in this block, e.g.:
5957
5958 @smallexample
5959 symbol = some_block['variable'] # symbol is of type gdb.Symbol
5960 @end smallexample
5961
5962 The following block-related functions are available in the @code{gdb}
5963 module:
5964
5965 @defun gdb.block_for_pc (pc)
5966 Return the innermost @code{gdb.Block} containing the given @var{pc}
5967 value. If the block cannot be found for the @var{pc} value specified,
5968 the function will return @code{None}. This is identical to
5969 @code{gdb.current_progspace().block_for_pc(pc)} and is included for
5970 historical compatibility.
5971 @end defun
5972
5973 A @code{gdb.Block} object has the following methods:
5974
5975 @defun Block.is_valid ()
5976 Returns @code{True} if the @code{gdb.Block} object is valid,
5977 @code{False} if not. A block object can become invalid if the block it
5978 refers to doesn't exist anymore in the inferior. All other
5979 @code{gdb.Block} methods will throw an exception if it is invalid at
5980 the time the method is called. The block's validity is also checked
5981 during iteration over symbols of the block.
5982 @end defun
5983
5984 A @code{gdb.Block} object has the following attributes:
5985
5986 @defvar Block.start
5987 The start address of the block. This attribute is not writable.
5988 @end defvar
5989
5990 @defvar Block.end
5991 One past the last address that appears in the block. This attribute
5992 is not writable.
5993 @end defvar
5994
5995 @defvar Block.function
5996 The name of the block represented as a @code{gdb.Symbol}. If the
5997 block is not named, then this attribute holds @code{None}. This
5998 attribute is not writable.
5999
6000 For ordinary function blocks, the superblock is the static block.
6001 However, you should note that it is possible for a function block to
6002 have a superblock that is not the static block -- for instance this
6003 happens for an inlined function.
6004 @end defvar
6005
6006 @defvar Block.superblock
6007 The block containing this block. If this parent block does not exist,
6008 this attribute holds @code{None}. This attribute is not writable.
6009 @end defvar
6010
6011 @defvar Block.global_block
6012 The global block associated with this block. This attribute is not
6013 writable.
6014 @end defvar
6015
6016 @defvar Block.static_block
6017 The static block associated with this block. This attribute is not
6018 writable.
6019 @end defvar
6020
6021 @defvar Block.is_global
6022 @code{True} if the @code{gdb.Block} object is a global block,
6023 @code{False} if not. This attribute is not
6024 writable.
6025 @end defvar
6026
6027 @defvar Block.is_static
6028 @code{True} if the @code{gdb.Block} object is a static block,
6029 @code{False} if not. This attribute is not writable.
6030 @end defvar
6031
6032 @node Symbols In Python
6033 @subsubsection Python representation of Symbols
6034
6035 @cindex symbols in python
6036 @tindex gdb.Symbol
6037
6038 @value{GDBN} represents every variable, function and type as an
6039 entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
6040 Similarly, Python represents these symbols in @value{GDBN} with the
6041 @code{gdb.Symbol} object.
6042
6043 The following symbol-related functions are available in the @code{gdb}
6044 module:
6045
6046 @defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
6047 This function searches for a symbol by name. The search scope can be
6048 restricted to the parameters defined in the optional domain and block
6049 arguments.
6050
6051 @var{name} is the name of the symbol. It must be a string. The
6052 optional @var{block} argument restricts the search to symbols visible
6053 in that @var{block}. The @var{block} argument must be a
6054 @code{gdb.Block} object. If omitted, the block for the current frame
6055 is used. The optional @var{domain} argument restricts
6056 the search to the domain type. The @var{domain} argument must be a
6057 domain constant defined in the @code{gdb} module and described later
6058 in this chapter.
6059
6060 The result is a tuple of two elements.
6061 The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
6062 is not found.
6063 If the symbol is found, the second element is @code{True} if the symbol
6064 is a field of a method's object (e.g., @code{this} in C@t{++}),
6065 otherwise it is @code{False}.
6066 If the symbol is not found, the second element is @code{False}.
6067 @end defun
6068
6069 @defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
6070 This function searches for a global symbol by name.
6071 The search scope can be restricted to by the domain argument.
6072
6073 @var{name} is the name of the symbol. It must be a string.
6074 The optional @var{domain} argument restricts the search to the domain type.
6075 The @var{domain} argument must be a domain constant defined in the @code{gdb}
6076 module and described later in this chapter.
6077
6078 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
6079 is not found.
6080 @end defun
6081
6082 @defun gdb.lookup_static_symbol (name @r{[}, domain@r{]})
6083 This function searches for a global symbol with static linkage by name.
6084 The search scope can be restricted to by the domain argument.
6085
6086 @var{name} is the name of the symbol. It must be a string.
6087 The optional @var{domain} argument restricts the search to the domain type.
6088 The @var{domain} argument must be a domain constant defined in the @code{gdb}
6089 module and described later in this chapter.
6090
6091 The result is a @code{gdb.Symbol} object or @code{None} if the symbol
6092 is not found.
6093
6094 Note that this function will not find function-scoped static variables. To look
6095 up such variables, iterate over the variables of the function's
6096 @code{gdb.Block} and check that @code{block.addr_class} is
6097 @code{gdb.SYMBOL_LOC_STATIC}.
6098
6099 There can be multiple global symbols with static linkage with the same
6100 name. This function will only return the first matching symbol that
6101 it finds. Which symbol is found depends on where @value{GDBN} is
6102 currently stopped, as @value{GDBN} will first search for matching
6103 symbols in the current object file, and then search all other object
6104 files. If the application is not yet running then @value{GDBN} will
6105 search all object files in the order they appear in the debug
6106 information.
6107 @end defun
6108
6109 @defun gdb.lookup_static_symbols (name @r{[}, domain@r{]})
6110 Similar to @code{gdb.lookup_static_symbol}, this function searches for
6111 global symbols with static linkage by name, and optionally restricted
6112 by the domain argument. However, this function returns a list of all
6113 matching symbols found, not just the first one.
6114
6115 @var{name} is the name of the symbol. It must be a string.
6116 The optional @var{domain} argument restricts the search to the domain type.
6117 The @var{domain} argument must be a domain constant defined in the @code{gdb}
6118 module and described later in this chapter.
6119
6120 The result is a list of @code{gdb.Symbol} objects which could be empty
6121 if no matching symbols were found.
6122
6123 Note that this function will not find function-scoped static variables. To look
6124 up such variables, iterate over the variables of the function's
6125 @code{gdb.Block} and check that @code{block.addr_class} is
6126 @code{gdb.SYMBOL_LOC_STATIC}.
6127 @end defun
6128
6129 A @code{gdb.Symbol} object has the following attributes:
6130
6131 @defvar Symbol.type
6132 The type of the symbol or @code{None} if no type is recorded.
6133 This attribute is represented as a @code{gdb.Type} object.
6134 @xref{Types In Python}. This attribute is not writable.
6135 @end defvar
6136
6137 @defvar Symbol.symtab
6138 The symbol table in which the symbol appears. This attribute is
6139 represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
6140 Python}. This attribute is not writable.
6141 @end defvar
6142
6143 @defvar Symbol.line
6144 The line number in the source code at which the symbol was defined.
6145 This is an integer.
6146 @end defvar
6147
6148 @defvar Symbol.name
6149 The name of the symbol as a string. This attribute is not writable.
6150 @end defvar
6151
6152 @defvar Symbol.linkage_name
6153 The name of the symbol, as used by the linker (i.e., may be mangled).
6154 This attribute is not writable.
6155 @end defvar
6156
6157 @defvar Symbol.print_name
6158 The name of the symbol in a form suitable for output. This is either
6159 @code{name} or @code{linkage_name}, depending on whether the user
6160 asked @value{GDBN} to display demangled or mangled names.
6161 @end defvar
6162
6163 @defvar Symbol.addr_class
6164 The address class of the symbol. This classifies how to find the value
6165 of a symbol. Each address class is a constant defined in the
6166 @code{gdb} module and described later in this chapter.
6167 @end defvar
6168
6169 @defvar Symbol.needs_frame
6170 This is @code{True} if evaluating this symbol's value requires a frame
6171 (@pxref{Frames In Python}) and @code{False} otherwise. Typically,
6172 local variables will require a frame, but other symbols will not.
6173 @end defvar
6174
6175 @defvar Symbol.is_argument
6176 @code{True} if the symbol is an argument of a function.
6177 @end defvar
6178
6179 @defvar Symbol.is_constant
6180 @code{True} if the symbol is a constant.
6181 @end defvar
6182
6183 @defvar Symbol.is_function
6184 @code{True} if the symbol is a function or a method.
6185 @end defvar
6186
6187 @defvar Symbol.is_variable
6188 @code{True} if the symbol is a variable, as opposed to something like
6189 a function or type. Note that this also returns @code{False} for
6190 arguments.
6191 @end defvar
6192
6193 A @code{gdb.Symbol} object has the following methods:
6194
6195 @defun Symbol.is_valid ()
6196 Returns @code{True} if the @code{gdb.Symbol} object is valid,
6197 @code{False} if not. A @code{gdb.Symbol} object can become invalid if
6198 the symbol it refers to does not exist in @value{GDBN} any longer.
6199 All other @code{gdb.Symbol} methods will throw an exception if it is
6200 invalid at the time the method is called.
6201 @end defun
6202
6203 @defun Symbol.value (@r{[}frame@r{]})
6204 Compute the value of the symbol, as a @code{gdb.Value}. For
6205 functions, this computes the address of the function, cast to the
6206 appropriate type. If the symbol requires a frame in order to compute
6207 its value, then @var{frame} must be given. If @var{frame} is not
6208 given, or if @var{frame} is invalid, then this method will throw an
6209 exception.
6210 @end defun
6211
6212 The available domain categories in @code{gdb.Symbol} are represented
6213 as constants in the @code{gdb} module:
6214
6215 @vtable @code
6216 @vindex SYMBOL_UNDEF_DOMAIN
6217 @item gdb.SYMBOL_UNDEF_DOMAIN
6218 This is used when a domain has not been discovered or none of the
6219 following domains apply. This usually indicates an error either
6220 in the symbol information or in @value{GDBN}'s handling of symbols.
6221
6222 @vindex SYMBOL_VAR_DOMAIN
6223 @item gdb.SYMBOL_VAR_DOMAIN
6224 This domain contains variables.
6225
6226 @vindex SYMBOL_FUNCTION_DOMAIN
6227 @item gdb.SYMBOL_FUNCTION_DOMAIN
6228 This domain contains functions.
6229
6230 @vindex SYMBOL_TYPE_DOMAIN
6231 @item gdb.SYMBOL_TYPE_DOMAIN
6232 This domain contains types. In a C-like language, types using a tag
6233 (the name appearing after a @code{struct}, @code{union}, or
6234 @code{enum} keyword) will not appear here; in other languages, all
6235 types are in this domain.
6236
6237 @vindex SYMBOL_STRUCT_DOMAIN
6238 @item gdb.SYMBOL_STRUCT_DOMAIN
6239 This domain holds struct, union and enum tag names. This domain is
6240 only used for C-like languages. For example, in this code:
6241 @smallexample
6242 struct type_one @{ int x; @};
6243 typedef struct type_one type_two;
6244 @end smallexample
6245 Here @code{type_one} will be in @code{SYMBOL_STRUCT_DOMAIN}, but
6246 @code{type_two} will be in @code{SYMBOL_TYPE_DOMAIN}.
6247
6248 @vindex SYMBOL_LABEL_DOMAIN
6249 @item gdb.SYMBOL_LABEL_DOMAIN
6250 This domain contains names of labels (for gotos).
6251
6252 @vindex SYMBOL_MODULE_DOMAIN
6253 @item gdb.SYMBOL_MODULE_DOMAIN
6254 This domain contains names of Fortran module types.
6255
6256 @vindex SYMBOL_COMMON_BLOCK_DOMAIN
6257 @item gdb.SYMBOL_COMMON_BLOCK_DOMAIN
6258 This domain contains names of Fortran common blocks.
6259 @end vtable
6260
6261 When searching for a symbol, the desired domain constant can be passed
6262 verbatim to the lookup function. For example:
6263 @smallexample
6264 symbol = gdb.lookup_symbol ("name", domain=gdb.SYMBOL_VAR_DOMAIN)
6265 @end smallexample
6266
6267 For more complex searches, there is a corresponding set of constants,
6268 each named after one of the preceding constants, but with the
6269 @samp{SEARCH} prefix replacing the @samp{SYMBOL} prefix; for example,
6270 @code{SEARCH_LABEL_DOMAIN}. These may be or'd together to form a
6271 search constant, e.g.:
6272 @smallexample
6273 symbol = gdb.lookup_symbol ("name",
6274 domain=gdb.SEARCH_VAR_DOMAIN | gdb.SEARCH_TYPE_DOMAIN)
6275 @end smallexample
6276
6277 The available address class categories in @code{gdb.Symbol} are represented
6278 as constants in the @code{gdb} module:
6279
6280 @vtable @code
6281 @vindex SYMBOL_LOC_UNDEF
6282 @item gdb.SYMBOL_LOC_UNDEF
6283 If this is returned by address class, it indicates an error either in
6284 the symbol information or in @value{GDBN}'s handling of symbols.
6285
6286 @vindex SYMBOL_LOC_CONST
6287 @item gdb.SYMBOL_LOC_CONST
6288 Value is constant int.
6289
6290 @vindex SYMBOL_LOC_STATIC
6291 @item gdb.SYMBOL_LOC_STATIC
6292 Value is at a fixed address.
6293
6294 @vindex SYMBOL_LOC_REGISTER
6295 @item gdb.SYMBOL_LOC_REGISTER
6296 Value is in a register.
6297
6298 @vindex SYMBOL_LOC_ARG
6299 @item gdb.SYMBOL_LOC_ARG
6300 Value is an argument. This value is at the offset stored within the
6301 symbol inside the frame's argument list.
6302
6303 @vindex SYMBOL_LOC_REF_ARG
6304 @item gdb.SYMBOL_LOC_REF_ARG
6305 Value address is stored in the frame's argument list. Just like
6306 @code{LOC_ARG} except that the value's address is stored at the
6307 offset, not the value itself.
6308
6309 @vindex SYMBOL_LOC_REGPARM_ADDR
6310 @item gdb.SYMBOL_LOC_REGPARM_ADDR
6311 Value is a specified register. Just like @code{LOC_REGISTER} except
6312 the register holds the address of the argument instead of the argument
6313 itself.
6314
6315 @vindex SYMBOL_LOC_LOCAL
6316 @item gdb.SYMBOL_LOC_LOCAL
6317 Value is a local variable.
6318
6319 @vindex SYMBOL_LOC_TYPEDEF
6320 @item gdb.SYMBOL_LOC_TYPEDEF
6321 Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
6322 have this class.
6323
6324 @vindex SYMBOL_LOC_LABEL
6325 @item gdb.SYMBOL_LOC_LABEL
6326 Value is a label.
6327
6328 @vindex SYMBOL_LOC_BLOCK
6329 @item gdb.SYMBOL_LOC_BLOCK
6330 Value is a block.
6331
6332 @vindex SYMBOL_LOC_CONST_BYTES
6333 @item gdb.SYMBOL_LOC_CONST_BYTES
6334 Value is a byte-sequence.
6335
6336 @vindex SYMBOL_LOC_UNRESOLVED
6337 @item gdb.SYMBOL_LOC_UNRESOLVED
6338 Value is at a fixed address, but the address of the variable has to be
6339 determined from the minimal symbol table whenever the variable is
6340 referenced.
6341
6342 @vindex SYMBOL_LOC_OPTIMIZED_OUT
6343 @item gdb.SYMBOL_LOC_OPTIMIZED_OUT
6344 The value does not actually exist in the program.
6345
6346 @vindex SYMBOL_LOC_COMPUTED
6347 @item gdb.SYMBOL_LOC_COMPUTED
6348 The value's address is a computed location.
6349
6350 @vindex SYMBOL_LOC_COMMON_BLOCK
6351 @item gdb.SYMBOL_LOC_COMMON_BLOCK
6352 The value's address is a symbol. This is only used for Fortran common
6353 blocks.
6354 @end vtable
6355
6356 @node Symbol Tables In Python
6357 @subsubsection Symbol table representation in Python
6358
6359 @cindex symbol tables in python
6360 @tindex gdb.Symtab
6361 @tindex gdb.Symtab_and_line
6362
6363 Access to symbol table data maintained by @value{GDBN} on the inferior
6364 is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
6365 @code{gdb.Symtab}. Symbol table and line data for a frame is returned
6366 from the @code{find_sal} method in @code{gdb.Frame} object.
6367 @xref{Frames In Python}.
6368
6369 For more information on @value{GDBN}'s symbol table management, see
6370 @ref{Symbols, ,Examining the Symbol Table}, for more information.
6371
6372 A @code{gdb.Symtab_and_line} object has the following attributes:
6373
6374 @defvar Symtab_and_line.symtab
6375 The symbol table object (@code{gdb.Symtab}) for this frame.
6376 This attribute is not writable.
6377 @end defvar
6378
6379 @defvar Symtab_and_line.pc
6380 Indicates the start of the address range occupied by code for the
6381 current source line. This attribute is not writable.
6382 @end defvar
6383
6384 @defvar Symtab_and_line.last
6385 Indicates the end of the address range occupied by code for the current
6386 source line. This attribute is not writable.
6387 @end defvar
6388
6389 @defvar Symtab_and_line.line
6390 Indicates the current line number for this object. This
6391 attribute is not writable.
6392 @end defvar
6393
6394 A @code{gdb.Symtab_and_line} object has the following methods:
6395
6396 @defun Symtab_and_line.is_valid ()
6397 Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
6398 @code{False} if not. A @code{gdb.Symtab_and_line} object can become
6399 invalid if the Symbol table and line object it refers to does not
6400 exist in @value{GDBN} any longer. All other
6401 @code{gdb.Symtab_and_line} methods will throw an exception if it is
6402 invalid at the time the method is called.
6403 @end defun
6404
6405 A @code{gdb.Symtab} object has the following attributes:
6406
6407 @defvar Symtab.filename
6408 The symbol table's source filename. This attribute is not writable.
6409 @end defvar
6410
6411 @defvar Symtab.objfile
6412 The symbol table's backing object file. @xref{Objfiles In Python}.
6413 This attribute is not writable.
6414 @end defvar
6415
6416 @defvar Symtab.producer
6417 The name and possibly version number of the program that
6418 compiled the code in the symbol table.
6419 The contents of this string is up to the compiler.
6420 If no producer information is available then @code{None} is returned.
6421 This attribute is not writable.
6422 @end defvar
6423
6424 A @code{gdb.Symtab} object has the following methods:
6425
6426 @defun Symtab.is_valid ()
6427 Returns @code{True} if the @code{gdb.Symtab} object is valid,
6428 @code{False} if not. A @code{gdb.Symtab} object can become invalid if
6429 the symbol table it refers to does not exist in @value{GDBN} any
6430 longer. All other @code{gdb.Symtab} methods will throw an exception
6431 if it is invalid at the time the method is called.
6432 @end defun
6433
6434 @defun Symtab.fullname ()
6435 Return the symbol table's source absolute file name.
6436 @end defun
6437
6438 @defun Symtab.global_block ()
6439 Return the global block of the underlying symbol table.
6440 @xref{Blocks In Python}.
6441 @end defun
6442
6443 @defun Symtab.static_block ()
6444 Return the static block of the underlying symbol table.
6445 @xref{Blocks In Python}.
6446 @end defun
6447
6448 @defun Symtab.linetable ()
6449 Return the line table associated with the symbol table.
6450 @xref{Line Tables In Python}.
6451 @end defun
6452
6453 @node Line Tables In Python
6454 @subsubsection Manipulating line tables using Python
6455
6456 @cindex line tables in python
6457 @tindex gdb.LineTable
6458
6459 Python code can request and inspect line table information from a
6460 symbol table that is loaded in @value{GDBN}. A line table is a
6461 mapping of source lines to their executable locations in memory. To
6462 acquire the line table information for a particular symbol table, use
6463 the @code{linetable} function (@pxref{Symbol Tables In Python}).
6464
6465 A @code{gdb.LineTable} is iterable. The iterator returns
6466 @code{LineTableEntry} objects that correspond to the source line and
6467 address for each line table entry. @code{LineTableEntry} objects have
6468 the following attributes:
6469
6470 @defvar LineTableEntry.line
6471 The source line number for this line table entry. This number
6472 corresponds to the actual line of source. This attribute is not
6473 writable.
6474 @end defvar
6475
6476 @defvar LineTableEntry.pc
6477 The address that is associated with the line table entry where the
6478 executable code for that source line resides in memory. This
6479 attribute is not writable.
6480 @end defvar
6481
6482 As there can be multiple addresses for a single source line, you may
6483 receive multiple @code{LineTableEntry} objects with matching
6484 @code{line} attributes, but with different @code{pc} attributes. The
6485 iterator is sorted in ascending @code{pc} order. Here is a small
6486 example illustrating iterating over a line table.
6487
6488 @smallexample
6489 symtab = gdb.selected_frame().find_sal().symtab
6490 linetable = symtab.linetable()
6491 for line in linetable:
6492 print ("Line: "+str(line.line)+" Address: "+hex(line.pc))
6493 @end smallexample
6494
6495 This will have the following output:
6496
6497 @smallexample
6498 Line: 33 Address: 0x4005c8L
6499 Line: 37 Address: 0x4005caL
6500 Line: 39 Address: 0x4005d2L
6501 Line: 40 Address: 0x4005f8L
6502 Line: 42 Address: 0x4005ffL
6503 Line: 44 Address: 0x400608L
6504 Line: 42 Address: 0x40060cL
6505 Line: 45 Address: 0x400615L
6506 @end smallexample
6507
6508 In addition to being able to iterate over a @code{LineTable}, it also
6509 has the following direct access methods:
6510
6511 @defun LineTable.line (line)
6512 Return a Python @code{Tuple} of @code{LineTableEntry} objects for any
6513 entries in the line table for the given @var{line}, which specifies
6514 the source code line. If there are no entries for that source code
6515 @var{line}, the Python @code{None} is returned.
6516 @end defun
6517
6518 @defun LineTable.has_line (line)
6519 Return a Python @code{Boolean} indicating whether there is an entry in
6520 the line table for this source line. Return @code{True} if an entry
6521 is found, or @code{False} if not.
6522 @end defun
6523
6524 @defun LineTable.source_lines ()
6525 Return a Python @code{List} of the source line numbers in the symbol
6526 table. Only lines with executable code locations are returned. The
6527 contents of the @code{List} will just be the source line entries
6528 represented as Python @code{Long} values.
6529 @end defun
6530
6531 @node Breakpoints In Python
6532 @subsubsection Manipulating breakpoints using Python
6533
6534 @cindex breakpoints in python
6535 @tindex gdb.Breakpoint
6536
6537 Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
6538 class.
6539
6540 A breakpoint can be created using one of the two forms of the
6541 @code{gdb.Breakpoint} constructor. The first one accepts a string
6542 like one would pass to the @code{break}
6543 (@pxref{Set Breaks,,Setting Breakpoints}) and @code{watch}
6544 (@pxref{Set Watchpoints, , Setting Watchpoints}) commands, and can be used to
6545 create both breakpoints and watchpoints. The second accepts separate Python
6546 arguments similar to @ref{Explicit Locations}, and can only be used to create
6547 breakpoints.
6548
6549 @defun Breakpoint.__init__ (spec @r{[}, type @r{][}, wp_class @r{][}, internal @r{][}, temporary @r{][}, qualified @r{]})
6550 Create a new breakpoint according to @var{spec}, which is a string naming the
6551 location of a breakpoint, or an expression that defines a watchpoint. The
6552 string should describe a location in a format recognized by the @code{break}
6553 command (@pxref{Set Breaks,,Setting Breakpoints}) or, in the case of a
6554 watchpoint, by the @code{watch} command
6555 (@pxref{Set Watchpoints, , Setting Watchpoints}).
6556
6557 The optional @var{type} argument specifies the type of the breakpoint to create,
6558 as defined below.
6559
6560 The optional @var{wp_class} argument defines the class of watchpoint to create,
6561 if @var{type} is @code{gdb.BP_WATCHPOINT}. If @var{wp_class} is omitted, it
6562 defaults to @code{gdb.WP_WRITE}.
6563
6564 The optional @var{internal} argument allows the breakpoint to become invisible
6565 to the user. The breakpoint will neither be reported when created, nor will it
6566 be listed in the output from @code{info breakpoints} (but will be listed with
6567 the @code{maint info breakpoints} command).
6568
6569 The optional @var{temporary} argument makes the breakpoint a temporary
6570 breakpoint. Temporary breakpoints are deleted after they have been hit. Any
6571 further access to the Python breakpoint after it has been hit will result in a
6572 runtime error (as that breakpoint has now been automatically deleted).
6573
6574 The optional @var{qualified} argument is a boolean that allows interpreting
6575 the function passed in @code{spec} as a fully-qualified name. It is equivalent
6576 to @code{break}'s @code{-qualified} flag (@pxref{Linespec Locations} and
6577 @ref{Explicit Locations}).
6578
6579 @end defun
6580
6581 @defun Breakpoint.__init__ (@r{[} source @r{][}, function @r{][}, label @r{][}, line @r{]}, @r{][} internal @r{][}, temporary @r{][}, qualified @r{]})
6582 This second form of creating a new breakpoint specifies the explicit
6583 location (@pxref{Explicit Locations}) using keywords. The new breakpoint will
6584 be created in the specified source file @var{source}, at the specified
6585 @var{function}, @var{label} and @var{line}.
6586
6587 @var{internal}, @var{temporary} and @var{qualified} have the same usage as
6588 explained previously.
6589 @end defun
6590
6591 The available types are represented by constants defined in the @code{gdb}
6592 module:
6593
6594 @vtable @code
6595 @vindex BP_BREAKPOINT
6596 @item gdb.BP_BREAKPOINT
6597 Normal code breakpoint.
6598
6599 @vindex BP_HARDWARE_BREAKPOINT
6600 @item gdb.BP_HARDWARE_BREAKPOINT
6601 Hardware assisted code breakpoint.
6602
6603 @vindex BP_WATCHPOINT
6604 @item gdb.BP_WATCHPOINT
6605 Watchpoint breakpoint.
6606
6607 @vindex BP_HARDWARE_WATCHPOINT
6608 @item gdb.BP_HARDWARE_WATCHPOINT
6609 Hardware assisted watchpoint.
6610
6611 @vindex BP_READ_WATCHPOINT
6612 @item gdb.BP_READ_WATCHPOINT
6613 Hardware assisted read watchpoint.
6614
6615 @vindex BP_ACCESS_WATCHPOINT
6616 @item gdb.BP_ACCESS_WATCHPOINT
6617 Hardware assisted access watchpoint.
6618
6619 @vindex BP_CATCHPOINT
6620 @item gdb.BP_CATCHPOINT
6621 Catchpoint. Currently, this type can't be used when creating
6622 @code{gdb.Breakpoint} objects, but will be present in
6623 @code{gdb.Breakpoint} objects reported from
6624 @code{gdb.BreakpointEvent}s (@pxref{Events In Python}).
6625 @end vtable
6626
6627 The available watchpoint types are represented by constants defined in the
6628 @code{gdb} module:
6629
6630 @vtable @code
6631 @vindex WP_READ
6632 @item gdb.WP_READ
6633 Read only watchpoint.
6634
6635 @vindex WP_WRITE
6636 @item gdb.WP_WRITE
6637 Write only watchpoint.
6638
6639 @vindex WP_ACCESS
6640 @item gdb.WP_ACCESS
6641 Read/Write watchpoint.
6642 @end vtable
6643
6644 @defun Breakpoint.stop (self)
6645 The @code{gdb.Breakpoint} class can be sub-classed and, in
6646 particular, you may choose to implement the @code{stop} method.
6647 If this method is defined in a sub-class of @code{gdb.Breakpoint},
6648 it will be called when the inferior reaches any location of a
6649 breakpoint which instantiates that sub-class. If the method returns
6650 @code{True}, the inferior will be stopped at the location of the
6651 breakpoint, otherwise the inferior will continue.
6652
6653 If there are multiple breakpoints at the same location with a
6654 @code{stop} method, each one will be called regardless of the
6655 return status of the previous. This ensures that all @code{stop}
6656 methods have a chance to execute at that location. In this scenario
6657 if one of the methods returns @code{True} but the others return
6658 @code{False}, the inferior will still be stopped.
6659
6660 You should not alter the execution state of the inferior (i.e.@:, step,
6661 next, etc.), alter the current frame context (i.e.@:, change the current
6662 active frame), or alter, add or delete any breakpoint. As a general
6663 rule, you should not alter any data within @value{GDBN} or the inferior
6664 at this time.
6665
6666 Example @code{stop} implementation:
6667
6668 @smallexample
6669 class MyBreakpoint (gdb.Breakpoint):
6670 def stop (self):
6671 inf_val = gdb.parse_and_eval("foo")
6672 if inf_val == 3:
6673 return True
6674 return False
6675 @end smallexample
6676 @end defun
6677
6678 @defun Breakpoint.is_valid ()
6679 Return @code{True} if this @code{Breakpoint} object is valid,
6680 @code{False} otherwise. A @code{Breakpoint} object can become invalid
6681 if the user deletes the breakpoint. In this case, the object still
6682 exists, but the underlying breakpoint does not. In the cases of
6683 watchpoint scope, the watchpoint remains valid even if execution of the
6684 inferior leaves the scope of that watchpoint.
6685 @end defun
6686
6687 @defun Breakpoint.delete ()
6688 Permanently deletes the @value{GDBN} breakpoint. This also
6689 invalidates the Python @code{Breakpoint} object. Any further access
6690 to this object's attributes or methods will raise an error.
6691 @end defun
6692
6693 @defvar Breakpoint.enabled
6694 This attribute is @code{True} if the breakpoint is enabled, and
6695 @code{False} otherwise. This attribute is writable. You can use it to enable
6696 or disable the breakpoint.
6697 @end defvar
6698
6699 @defvar Breakpoint.silent
6700 This attribute is @code{True} if the breakpoint is silent, and
6701 @code{False} otherwise. This attribute is writable.
6702
6703 Note that a breakpoint can also be silent if it has commands and the
6704 first command is @code{silent}. This is not reported by the
6705 @code{silent} attribute.
6706 @end defvar
6707
6708 @defvar Breakpoint.pending
6709 This attribute is @code{True} if the breakpoint is pending, and
6710 @code{False} otherwise. @xref{Set Breaks}. This attribute is
6711 read-only.
6712 @end defvar
6713
6714 @anchor{python_breakpoint_thread}
6715 @defvar Breakpoint.thread
6716 If the breakpoint is thread-specific (@pxref{Thread-Specific
6717 Breakpoints}), this attribute holds the thread's global id. If the
6718 breakpoint is not thread-specific, this attribute is @code{None}.
6719 This attribute is writable.
6720
6721 Only one of @code{Breakpoint.thread} or @code{Breakpoint.inferior} can
6722 be set to a valid id at any time, that is, a breakpoint can be thread
6723 specific, or inferior specific, but not both.
6724 @end defvar
6725
6726 @anchor{python_breakpoint_inferior}
6727 @defvar Breakpoint.inferior
6728 If the breakpoint is inferior-specific (@pxref{Inferior-Specific
6729 Breakpoints}), this attribute holds the inferior's id. If the
6730 breakpoint is not inferior-specific, this attribute is @code{None}.
6731
6732 This attribute can be written for breakpoints of type
6733 @code{gdb.BP_BREAKPOINT} and @code{gdb.BP_HARDWARE_BREAKPOINT}.
6734 @end defvar
6735
6736 @defvar Breakpoint.task
6737 If the breakpoint is Ada task-specific, this attribute holds the Ada task
6738 id. If the breakpoint is not task-specific (or the underlying
6739 language is not Ada), this attribute is @code{None}. This attribute
6740 is writable.
6741 @end defvar
6742
6743 @defvar Breakpoint.ignore_count
6744 This attribute holds the ignore count for the breakpoint, an integer.
6745 This attribute is writable.
6746 @end defvar
6747
6748 @defvar Breakpoint.number
6749 This attribute holds the breakpoint's number --- the identifier used by
6750 the user to manipulate the breakpoint. This attribute is not writable.
6751 @end defvar
6752
6753 @defvar Breakpoint.type
6754 This attribute holds the breakpoint's type --- the identifier used to
6755 determine the actual breakpoint type or use-case. This attribute is not
6756 writable.
6757 @end defvar
6758
6759 @defvar Breakpoint.visible
6760 This attribute tells whether the breakpoint is visible to the user
6761 when set, or when the @samp{info breakpoints} command is run. This
6762 attribute is not writable.
6763 @end defvar
6764
6765 @defvar Breakpoint.temporary
6766 This attribute indicates whether the breakpoint was created as a
6767 temporary breakpoint. Temporary breakpoints are automatically deleted
6768 after that breakpoint has been hit. Access to this attribute, and all
6769 other attributes and functions other than the @code{is_valid}
6770 function, will result in an error after the breakpoint has been hit
6771 (as it has been automatically deleted). This attribute is not
6772 writable.
6773 @end defvar
6774
6775 @defvar Breakpoint.hit_count
6776 This attribute holds the hit count for the breakpoint, an integer.
6777 This attribute is writable, but currently it can only be set to zero.
6778 @end defvar
6779
6780 @defvar Breakpoint.location
6781 This attribute holds the location of the breakpoint, as specified by
6782 the user. It is a string. If the breakpoint does not have a location
6783 (that is, it is a watchpoint) the attribute's value is @code{None}. This
6784 attribute is not writable.
6785 @end defvar
6786
6787 @defvar Breakpoint.locations
6788 Get the most current list of breakpoint locations that are inserted for this
6789 breakpoint, with elements of type @code{gdb.BreakpointLocation}
6790 (described below). This functionality matches that of the
6791 @code{info breakpoint} command (@pxref{Set Breaks}), in that it only retrieves
6792 the most current list of locations, thus the list itself when returned is
6793 not updated behind the scenes. This attribute is not writable.
6794 @end defvar
6795
6796 @defvar Breakpoint.expression
6797 This attribute holds a breakpoint expression, as specified by
6798 the user. It is a string. If the breakpoint does not have an
6799 expression (the breakpoint is not a watchpoint) the attribute's value
6800 is @code{None}. This attribute is not writable.
6801 @end defvar
6802
6803 @defvar Breakpoint.condition
6804 This attribute holds the condition of the breakpoint, as specified by
6805 the user. It is a string. If there is no condition, this attribute's
6806 value is @code{None}. This attribute is writable.
6807 @end defvar
6808
6809 @defvar Breakpoint.commands
6810 This attribute holds the commands attached to the breakpoint. If
6811 there are commands, this attribute's value is a string holding all the
6812 commands, separated by newlines. If there are no commands, this
6813 attribute is @code{None}. This attribute is writable.
6814 @end defvar
6815
6816 @subheading Breakpoint Locations
6817
6818 A breakpoint location is one of the actual places where a breakpoint has been
6819 set, represented in the Python API by the @code{gdb.BreakpointLocation}
6820 type. This type is never instantiated by the user directly, but is retrieved
6821 from @code{Breakpoint.locations} which returns a list of breakpoint
6822 locations where it is currently set. Breakpoint locations can become
6823 invalid if new symbol files are loaded or dynamically loaded libraries are
6824 closed. Accessing the attributes of an invalidated breakpoint location will
6825 throw a @code{RuntimeError} exception. Access the @code{Breakpoint.locations}
6826 attribute again to retrieve the new and valid breakpoints location list.
6827
6828 @defvar BreakpointLocation.source
6829 This attribute returns the source file path and line number where this location
6830 was set. The type of the attribute is a tuple of @var{string} and
6831 @var{long}. If the breakpoint location doesn't have a source location,
6832 it returns None, which is the case for watchpoints and catchpoints.
6833 This will throw a @code{RuntimeError} exception if the location
6834 has been invalidated. This attribute is not writable.
6835 @end defvar
6836
6837 @defvar BreakpointLocation.address
6838 This attribute returns the address where this location was set.
6839 This attribute is of type long. This will throw a @code{RuntimeError}
6840 exception if the location has been invalidated. This attribute is
6841 not writable.
6842 @end defvar
6843
6844 @defvar BreakpointLocation.enabled
6845 This attribute holds the value for whether or not this location is enabled.
6846 This attribute is writable (boolean). This will throw a @code{RuntimeError}
6847 exception if the location has been invalidated.
6848 @end defvar
6849
6850 @defvar BreakpointLocation.owner
6851 This attribute holds a reference to the @code{gdb.Breakpoint} owner object,
6852 from which this @code{gdb.BreakpointLocation} was retrieved from.
6853 This will throw a @code{RuntimeError} exception if the location has been
6854 invalidated. This attribute is not writable.
6855 @end defvar
6856
6857 @defvar BreakpointLocation.function
6858 This attribute gets the name of the function where this location was set.
6859 If no function could be found this attribute returns @code{None}.
6860 This will throw a @code{RuntimeError} exception if the location has
6861 been invalidated. This attribute is not writable.
6862 @end defvar
6863
6864 @defvar BreakpointLocation.fullname
6865 This attribute gets the full name of where this location was set. If no
6866 full name could be found, this attribute returns @code{None}.
6867 This will throw a @code{RuntimeError} exception if the location has
6868 been invalidated. This attribute is not writable.
6869 @end defvar
6870
6871 @defvar BreakpointLocation.thread_groups
6872 This attribute gets the thread groups it was set in. It returns a @code{List}
6873 of the thread group ID's. This will throw a @code{RuntimeError}
6874 exception if the location has been invalidated. This attribute
6875 is not writable.
6876 @end defvar
6877
6878 @node Finish Breakpoints in Python
6879 @subsubsection Finish Breakpoints
6880
6881 @cindex python finish breakpoints
6882 @tindex gdb.FinishBreakpoint
6883
6884 A finish breakpoint is a temporary breakpoint set at the return address of
6885 a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
6886 extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
6887 and deleted when the execution will run out of the breakpoint scope (i.e.@:
6888 @code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
6889 Finish breakpoints are thread specific and must be create with the right
6890 thread selected.
6891
6892 @defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
6893 Create a finish breakpoint at the return address of the @code{gdb.Frame}
6894 object @var{frame}. If @var{frame} is not provided, this defaults to the
6895 newest frame. The optional @var{internal} argument allows the breakpoint to
6896 become invisible to the user. @xref{Breakpoints In Python}, for further
6897 details about this argument.
6898 @end defun
6899
6900 @defun FinishBreakpoint.out_of_scope (self)
6901 In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
6902 @code{return} command, @dots{}), a function may not properly terminate, and
6903 thus never hit the finish breakpoint. When @value{GDBN} notices such a
6904 situation, the @code{out_of_scope} callback will be triggered.
6905
6906 You may want to sub-class @code{gdb.FinishBreakpoint} and override this
6907 method:
6908
6909 @smallexample
6910 class MyFinishBreakpoint (gdb.FinishBreakpoint)
6911 def stop (self):
6912 print ("normal finish")
6913 return True
6914
6915 def out_of_scope ():
6916 print ("abnormal finish")
6917 @end smallexample
6918 @end defun
6919
6920 @defvar FinishBreakpoint.return_value
6921 When @value{GDBN} is stopped at a finish breakpoint and the frame
6922 used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
6923 attribute will contain a @code{gdb.Value} object corresponding to the return
6924 value of the function. The value will be @code{None} if the function return
6925 type is @code{void} or if the return value was not computable. This attribute
6926 is not writable.
6927 @end defvar
6928
6929 @node Lazy Strings In Python
6930 @subsubsection Python representation of lazy strings
6931
6932 @cindex lazy strings in python
6933 @tindex gdb.LazyString
6934
6935 A @dfn{lazy string} is a string whose contents is not retrieved or
6936 encoded until it is needed.
6937
6938 A @code{gdb.LazyString} is represented in @value{GDBN} as an
6939 @code{address} that points to a region of memory, an @code{encoding}
6940 that will be used to encode that region of memory, and a @code{length}
6941 to delimit the region of memory that represents the string. The
6942 difference between a @code{gdb.LazyString} and a string wrapped within
6943 a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
6944 differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
6945 retrieved and encoded during printing, while a @code{gdb.Value}
6946 wrapping a string is immediately retrieved and encoded on creation.
6947
6948 A @code{gdb.LazyString} object has the following functions:
6949
6950 @defun LazyString.value ()
6951 Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
6952 will point to the string in memory, but will lose all the delayed
6953 retrieval, encoding and handling that @value{GDBN} applies to a
6954 @code{gdb.LazyString}.
6955 @end defun
6956
6957 @defvar LazyString.address
6958 This attribute holds the address of the string. This attribute is not
6959 writable.
6960 @end defvar
6961
6962 @defvar LazyString.length
6963 This attribute holds the length of the string in characters. If the
6964 length is -1, then the string will be fetched and encoded up to the
6965 first null of appropriate width. This attribute is not writable.
6966 @end defvar
6967
6968 @defvar LazyString.encoding
6969 This attribute holds the encoding that will be applied to the string
6970 when the string is printed by @value{GDBN}. If the encoding is not
6971 set, or contains an empty string, then @value{GDBN} will select the
6972 most appropriate encoding when the string is printed. This attribute
6973 is not writable.
6974 @end defvar
6975
6976 @defvar LazyString.type
6977 This attribute holds the type that is represented by the lazy string's
6978 type. For a lazy string this is a pointer or array type. To
6979 resolve this to the lazy string's character type, use the type's
6980 @code{target} method. @xref{Types In Python}. This attribute is not
6981 writable.
6982 @end defvar
6983
6984 @node Architectures In Python
6985 @subsubsection Python representation of architectures
6986 @cindex Python architectures
6987
6988 @value{GDBN} uses architecture specific parameters and artifacts in a
6989 number of its various computations. An architecture is represented
6990 by an instance of the @code{gdb.Architecture} class.
6991
6992 A @code{gdb.Architecture} class has the following methods:
6993
6994 @anchor{gdbpy_architecture_name}
6995 @defun Architecture.name ()
6996 Return the name (string value) of the architecture.
6997 @end defun
6998
6999 @defun Architecture.disassemble (start_pc @r{[}, end_pc @r{[}, count@r{]]})
7000 Return a list of disassembled instructions starting from the memory
7001 address @var{start_pc}. The optional arguments @var{end_pc} and
7002 @var{count} determine the number of instructions in the returned list.
7003 If both the optional arguments @var{end_pc} and @var{count} are
7004 specified, then a list of at most @var{count} disassembled instructions
7005 whose start address falls in the closed memory address interval from
7006 @var{start_pc} to @var{end_pc} are returned. If @var{end_pc} is not
7007 specified, but @var{count} is specified, then @var{count} number of
7008 instructions starting from the address @var{start_pc} are returned. If
7009 @var{count} is not specified but @var{end_pc} is specified, then all
7010 instructions whose start address falls in the closed memory address
7011 interval from @var{start_pc} to @var{end_pc} are returned. If neither
7012 @var{end_pc} nor @var{count} are specified, then a single instruction at
7013 @var{start_pc} is returned. For all of these cases, each element of the
7014 returned list is a Python @code{dict} with the following string keys:
7015
7016 @table @code
7017
7018 @item addr
7019 The value corresponding to this key is a Python long integer capturing
7020 the memory address of the instruction.
7021
7022 @item asm
7023 The value corresponding to this key is a string value which represents
7024 the instruction with assembly language mnemonics. The assembly
7025 language flavor used is the same as that specified by the current CLI
7026 variable @code{disassembly-flavor}. @xref{Machine Code}.
7027
7028 @item length
7029 The value corresponding to this key is the length (integer value) of the
7030 instruction in bytes.
7031
7032 @end table
7033 @end defun
7034
7035 @defun Architecture.integer_type (size @r{[}, signed@r{]})
7036 This function looks up an integer type by its @var{size}, and
7037 optionally whether or not it is signed.
7038
7039 @var{size} is the size, in bits, of the desired integer type. Only
7040 certain sizes are currently supported: 0, 8, 16, 24, 32, 64, and 128.
7041
7042 If @var{signed} is not specified, it defaults to @code{True}. If
7043 @var{signed} is @code{False}, the returned type will be unsigned.
7044
7045 If the indicated type cannot be found, this function will throw a
7046 @code{ValueError} exception.
7047 @end defun
7048
7049 @anchor{gdbpy_architecture_registers}
7050 @defun Architecture.registers (@r{[} reggroup @r{]})
7051 Return a @code{gdb.RegisterDescriptorIterator} (@pxref{Registers In
7052 Python}) for all of the registers in @var{reggroup}, a string that is
7053 the name of a register group. If @var{reggroup} is omitted, or is the
7054 empty string, then the register group @samp{all} is assumed.
7055 @end defun
7056
7057 @anchor{gdbpy_architecture_reggroups}
7058 @defun Architecture.register_groups ()
7059 Return a @code{gdb.RegisterGroupsIterator} (@pxref{Registers In
7060 Python}) for all of the register groups available for the
7061 @code{gdb.Architecture}.
7062 @end defun
7063
7064 @node Registers In Python
7065 @subsubsection Registers In Python
7066 @cindex Registers In Python
7067
7068 Python code can request from a @code{gdb.Architecture} information
7069 about the set of registers available
7070 (@pxref{gdbpy_architecture_registers,,@code{Architecture.registers}}).
7071 The register information is returned as a
7072 @code{gdb.RegisterDescriptorIterator}, which is an iterator that in
7073 turn returns @code{gdb.RegisterDescriptor} objects.
7074
7075 A @code{gdb.RegisterDescriptor} does not provide the value of a
7076 register (@pxref{gdbpy_frame_read_register,,@code{Frame.read_register}}
7077 for reading a register's value), instead the @code{RegisterDescriptor}
7078 is a way to discover which registers are available for a particular
7079 architecture.
7080
7081 A @code{gdb.RegisterDescriptor} has the following read-only properties:
7082
7083 @defvar RegisterDescriptor.name
7084 The name of this register.
7085 @end defvar
7086
7087 It is also possible to lookup a register descriptor based on its name
7088 using the following @code{gdb.RegisterDescriptorIterator} function:
7089
7090 @defun RegisterDescriptorIterator.find (name)
7091 Takes @var{name} as an argument, which must be a string, and returns a
7092 @code{gdb.RegisterDescriptor} for the register with that name, or
7093 @code{None} if there is no register with that name.
7094 @end defun
7095
7096 Python code can also request from a @code{gdb.Architecture}
7097 information about the set of register groups available on a given
7098 architecture
7099 (@pxref{gdbpy_architecture_reggroups,,@code{Architecture.register_groups}}).
7100
7101 Every register can be a member of zero or more register groups. Some
7102 register groups are used internally within @value{GDBN} to control
7103 things like which registers must be saved when calling into the
7104 program being debugged (@pxref{Calling,,Calling Program Functions}).
7105 Other register groups exist to allow users to easily see related sets
7106 of registers in commands like @code{info registers}
7107 (@pxref{info_registers_reggroup,,@code{info registers
7108 @var{reggroup}}}).
7109
7110 The register groups information is returned as a
7111 @code{gdb.RegisterGroupsIterator}, which is an iterator that in turn
7112 returns @code{gdb.RegisterGroup} objects.
7113
7114 A @code{gdb.RegisterGroup} object has the following read-only
7115 properties:
7116
7117 @defvar RegisterGroup.name
7118 A string that is the name of this register group.
7119 @end defvar
7120
7121 @node Connections In Python
7122 @subsubsection Connections In Python
7123 @cindex connections in python
7124 @value{GDBN} lets you run and debug multiple programs in a single
7125 session. Each program being debugged has a connection, the connection
7126 describes how @value{GDBN} controls the program being debugged.
7127 Examples of different connection types are @samp{native} and
7128 @samp{remote}. @xref{Inferiors Connections and Programs}.
7129
7130 Connections in @value{GDBN} are represented as instances of
7131 @code{gdb.TargetConnection}, or as one of its sub-classes. To get a
7132 list of all connections use @code{gdb.connections}
7133 (@pxref{gdbpy_connections,,gdb.connections}).
7134
7135 To get the connection for a single @code{gdb.Inferior} read its
7136 @code{gdb.Inferior.connection} attribute
7137 (@pxref{gdbpy_inferior_connection,,gdb.Inferior.connection}).
7138
7139 Currently there is only a single sub-class of
7140 @code{gdb.TargetConnection}, @code{gdb.RemoteTargetConnection},
7141 however, additional sub-classes may be added in future releases of
7142 @value{GDBN}. As a result you should avoid writing code like:
7143
7144 @smallexample
7145 conn = gdb.selected_inferior().connection
7146 if type(conn) is gdb.RemoteTargetConnection:
7147 print("This is a remote target connection")
7148 @end smallexample
7149
7150 @noindent
7151 as this may fail when more connection types are added. Instead, you
7152 should write:
7153
7154 @smallexample
7155 conn = gdb.selected_inferior().connection
7156 if isinstance(conn, gdb.RemoteTargetConnection):
7157 print("This is a remote target connection")
7158 @end smallexample
7159
7160 A @code{gdb.TargetConnection} has the following method:
7161
7162 @defun TargetConnection.is_valid ()
7163 Return @code{True} if the @code{gdb.TargetConnection} object is valid,
7164 @code{False} if not. A @code{gdb.TargetConnection} will become
7165 invalid if the connection no longer exists within @value{GDBN}, this
7166 might happen when no inferiors are using the connection, but could be
7167 delayed until the user replaces the current target.
7168
7169 Reading any of the @code{gdb.TargetConnection} properties will throw
7170 an exception if the connection is invalid.
7171 @end defun
7172
7173 A @code{gdb.TargetConnection} has the following read-only properties:
7174
7175 @defvar TargetConnection.num
7176 An integer assigned by @value{GDBN} to uniquely identify this
7177 connection. This is the same value as displayed in the @samp{Num}
7178 column of the @code{info connections} command output (@pxref{Inferiors
7179 Connections and Programs,,info connections}).
7180 @end defvar
7181
7182 @defvar TargetConnection.type
7183 A string that describes what type of connection this is. This string
7184 will be one of the valid names that can be passed to the @code{target}
7185 command (@pxref{Target Commands,,target command}).
7186 @end defvar
7187
7188 @defvar TargetConnection.description
7189 A string that gives a short description of this target type. This is
7190 the same string that is displayed in the @samp{Description} column of
7191 the @code{info connection} command output (@pxref{Inferiors
7192 Connections and Programs,,info connections}).
7193 @end defvar
7194
7195 @defvar TargetConnection.details
7196 An optional string that gives additional information about this
7197 connection. This attribute can be @code{None} if there are no
7198 additional details for this connection.
7199
7200 An example of a connection type that might have additional details is
7201 the @samp{remote} connection, in this case the details string can
7202 contain the @samp{@var{hostname}:@var{port}} that was used to connect
7203 to the remote target.
7204 @end defvar
7205
7206 The @code{gdb.RemoteTargetConnection} class is a sub-class of
7207 @code{gdb.TargetConnection}, and is used to represent @samp{remote}
7208 and @samp{extended-remote} connections. In addition to the attributes
7209 and methods available from the @code{gdb.TargetConnection} base class,
7210 a @code{gdb.RemoteTargetConnection} has the following method:
7211
7212 @kindex maint packet
7213 @defun RemoteTargetConnection.send_packet (packet)
7214 This method sends @var{packet} to the remote target and returns the
7215 response. The @var{packet} should either be a @code{bytes} object, or
7216 a @code{Unicode} string.
7217
7218 If @var{packet} is a @code{Unicode} string, then the string is encoded
7219 to a @code{bytes} object using the @sc{ascii} codec. If the string
7220 can't be encoded then an @code{UnicodeError} is raised.
7221
7222 If @var{packet} is not a @code{bytes} object, or a @code{Unicode}
7223 string, then a @code{TypeError} is raised. If @var{packet} is empty
7224 then a @code{ValueError} is raised.
7225
7226 The response is returned as a @code{bytes} object. If it is known
7227 that the response can be represented as a string then this can be
7228 decoded from the buffer. For example, if it is known that the
7229 response is an @sc{ascii} string:
7230
7231 @smallexample
7232 remote_connection.send_packet("some_packet").decode("ascii")
7233 @end smallexample
7234
7235 The prefix, suffix, and checksum (as required by the remote serial
7236 protocol) are automatically added to the outgoing packet, and removed
7237 from the incoming packet before the contents of the reply are
7238 returned.
7239
7240 This is equivalent to the @code{maintenance packet} command
7241 (@pxref{maint packet}).
7242 @end defun
7243
7244 @node TUI Windows In Python
7245 @subsubsection Implementing new TUI windows
7246 @cindex Python TUI Windows
7247
7248 New TUI (@pxref{TUI}) windows can be implemented in Python.
7249
7250 @defun gdb.register_window_type (name, factory)
7251 Because TUI windows are created and destroyed depending on the layout
7252 the user chooses, new window types are implemented by registering a
7253 factory function with @value{GDBN}.
7254
7255 @var{name} is the name of the new window. It's an error to try to
7256 replace one of the built-in windows, but other window types can be
7257 replaced. The @var{name} should match the regular expression
7258 @code{[a-zA-Z][-_.a-zA-Z0-9]*}, it is an error to try and create a
7259 window with an invalid name.
7260
7261 @var{function} is a factory function that is called to create the TUI
7262 window. This is called with a single argument of type
7263 @code{gdb.TuiWindow}, described below. It should return an object
7264 that implements the TUI window protocol, also described below.
7265 @end defun
7266
7267 As mentioned above, when a factory function is called, it is passed
7268 an object of type @code{gdb.TuiWindow}. This object has these
7269 methods and attributes:
7270
7271 @defun TuiWindow.is_valid ()
7272 This method returns @code{True} when this window is valid. When the
7273 user changes the TUI layout, windows no longer visible in the new
7274 layout will be destroyed. At this point, the @code{gdb.TuiWindow}
7275 will no longer be valid, and methods (and attributes) other than
7276 @code{is_valid} will throw an exception.
7277
7278 When the TUI is disabled using @code{tui disable} (@pxref{TUI
7279 Commands,,tui disable}) the window is hidden rather than destroyed,
7280 but @code{is_valid} will still return @code{False} and other methods
7281 (and attributes) will still throw an exception.
7282 @end defun
7283
7284 @defvar TuiWindow.width
7285 This attribute holds the width of the window. It is not writable.
7286 @end defvar
7287
7288 @defvar TuiWindow.height
7289 This attribute holds the height of the window. It is not writable.
7290 @end defvar
7291
7292 @defvar TuiWindow.title
7293 This attribute holds the window's title, a string. This is normally
7294 displayed above the window. This attribute can be modified.
7295 @end defvar
7296
7297 @defun TuiWindow.erase ()
7298 Remove all the contents of the window.
7299 @end defun
7300
7301 @defun TuiWindow.write (string @r{[}, full_window@r{]})
7302 Write @var{string} to the window. @var{string} can contain ANSI
7303 terminal escape styling sequences; @value{GDBN} will translate these
7304 as appropriate for the terminal.
7305
7306 If the @var{full_window} parameter is @code{True}, then @var{string}
7307 contains the full contents of the window. This is similar to calling
7308 @code{erase} before @code{write}, but avoids the flickering.
7309 @end defun
7310
7311 The factory function that you supply should return an object
7312 conforming to the TUI window protocol. These are the method that can
7313 be called on this object, which is referred to below as the ``window
7314 object''. The methods documented below are optional; if the object
7315 does not implement one of these methods, @value{GDBN} will not attempt
7316 to call it. Additional new methods may be added to the window
7317 protocol in the future. @value{GDBN} guarantees that they will begin
7318 with a lower-case letter, so you can start implementation methods with
7319 upper-case letters or underscore to avoid any future conflicts.
7320
7321 @defun Window.close ()
7322 When the TUI window is closed, the @code{gdb.TuiWindow} object will be
7323 put into an invalid state. At this time, @value{GDBN} will call
7324 @code{close} method on the window object.
7325
7326 After this method is called, @value{GDBN} will discard any references
7327 it holds on this window object, and will no longer call methods on
7328 this object.
7329 @end defun
7330
7331 @defun Window.render ()
7332 In some situations, a TUI window can change size. For example, this
7333 can happen if the user resizes the terminal, or changes the layout.
7334 When this happens, @value{GDBN} will call the @code{render} method on
7335 the window object.
7336
7337 If your window is intended to update in response to changes in the
7338 inferior, you will probably also want to register event listeners and
7339 send output to the @code{gdb.TuiWindow}.
7340 @end defun
7341
7342 @defun Window.hscroll (num)
7343 This is a request to scroll the window horizontally. @var{num} is the
7344 amount by which to scroll, with negative numbers meaning to scroll
7345 right. In the TUI model, it is the viewport that moves, not the
7346 contents. A positive argument should cause the viewport to move
7347 right, and so the content should appear to move to the left.
7348 @end defun
7349
7350 @defun Window.vscroll (num)
7351 This is a request to scroll the window vertically. @var{num} is the
7352 amount by which to scroll, with negative numbers meaning to scroll
7353 backward. In the TUI model, it is the viewport that moves, not the
7354 contents. A positive argument should cause the viewport to move down,
7355 and so the content should appear to move up.
7356 @end defun
7357
7358 @anchor{python-window-click}
7359 @defun Window.click (x, y, button)
7360 This is called on a mouse click in this window. @var{x} and @var{y} are
7361 the mouse coordinates inside the window (0-based, from the top left
7362 corner), and @var{button} specifies which mouse button was used, whose
7363 values can be 1 (left), 2 (middle), or 3 (right).
7364
7365 When TUI mouse events are disabled by turning off the @code{tui mouse-events}
7366 setting (@pxref{tui-mouse-events,,set tui mouse-events}), then @code{click} will
7367 not be called.
7368 @end defun
7369
7370 @node Disassembly In Python
7371 @subsubsection Instruction Disassembly In Python
7372 @cindex python instruction disassembly
7373
7374 @value{GDBN}'s builtin disassembler can be extended, or even replaced,
7375 using the Python API. The disassembler related features are contained
7376 within the @code{gdb.disassembler} module:
7377
7378 @anchor{DisassembleInfo Class}
7379 @deftp {class} gdb.disassembler.DisassembleInfo
7380 Disassembly is driven by instances of this class. Each time
7381 @value{GDBN} needs to disassemble an instruction, an instance of this
7382 class is created and passed to a registered disassembler. The
7383 disassembler is then responsible for disassembling an instruction and
7384 returning a result.
7385
7386 Instances of this type are usually created within @value{GDBN},
7387 however, it is possible to create a copy of an instance of this type,
7388 see the description of @code{__init__} for more details.
7389
7390 This class has the following properties and methods:
7391
7392 @defvar DisassembleInfo.address
7393 A read-only integer containing the address at which @value{GDBN}
7394 wishes to disassemble a single instruction.
7395 @end defvar
7396
7397 @defvar DisassembleInfo.architecture
7398 The @code{gdb.Architecture} (@pxref{Architectures In Python}) for
7399 which @value{GDBN} is currently disassembling, this property is
7400 read-only.
7401 @end defvar
7402
7403 @defvar DisassembleInfo.progspace
7404 The @code{gdb.Progspace} (@pxref{Progspaces In Python,,Program Spaces
7405 In Python}) for which @value{GDBN} is currently disassembling, this
7406 property is read-only.
7407 @end defvar
7408
7409 @defun DisassembleInfo.is_valid ()
7410 Returns @code{True} if the @code{DisassembleInfo} object is valid,
7411 @code{False} if not. A @code{DisassembleInfo} object will become
7412 invalid once the disassembly call for which the @code{DisassembleInfo}
7413 was created, has returned. Calling other @code{DisassembleInfo}
7414 methods, or accessing @code{DisassembleInfo} properties, will raise a
7415 @code{RuntimeError} exception if it is invalid.
7416 @end defun
7417
7418 @defun DisassembleInfo.__init__ (info)
7419 This can be used to create a new @code{DisassembleInfo} object that is
7420 a copy of @var{info}. The copy will have the same @code{address},
7421 @code{architecture}, and @code{progspace} values as @var{info}, and
7422 will become invalid at the same time as @var{info}.
7423
7424 This method exists so that sub-classes of @code{DisassembleInfo} can
7425 be created, these sub-classes must be initialized as copies of an
7426 existing @code{DisassembleInfo} object, but sub-classes might choose
7427 to override the @code{read_memory} method, and so control what
7428 @value{GDBN} sees when reading from memory
7429 (@pxref{builtin_disassemble}).
7430 @end defun
7431
7432 @defun DisassembleInfo.read_memory (length, offset)
7433 This method allows the disassembler to read the bytes of the
7434 instruction to be disassembled. The method reads @var{length} bytes,
7435 starting at @var{offset} from
7436 @code{DisassembleInfo.address}.
7437
7438 It is important that the disassembler read the instruction bytes using
7439 this method, rather than reading inferior memory directly, as in some
7440 cases @value{GDBN} disassembles from an internal buffer rather than
7441 directly from inferior memory, calling this method handles this
7442 detail.
7443
7444 Returns a buffer object, which behaves much like an array or a string,
7445 just as @code{Inferior.read_memory} does
7446 (@pxref{gdbpy_inferior_read_memory,,Inferior.read_memory}). The
7447 length of the returned buffer will always be exactly @var{length}.
7448
7449 If @value{GDBN} is unable to read the required memory then a
7450 @code{gdb.MemoryError} exception is raised (@pxref{Exception
7451 Handling}).
7452
7453 This method can be overridden by a sub-class in order to control what
7454 @value{GDBN} sees when reading from memory
7455 (@pxref{builtin_disassemble}). When overriding this method it is
7456 important to understand how @code{builtin_disassemble} makes use of
7457 this method.
7458
7459 While disassembling a single instruction there could be multiple calls
7460 to this method, and the same bytes might be read multiple times. Any
7461 single call might only read a subset of the total instruction bytes.
7462
7463 If an implementation of @code{read_memory} is unable to read the
7464 requested memory contents, for example, if there's a request to read
7465 from an invalid memory address, then a @code{gdb.MemoryError} should
7466 be raised.
7467
7468 Raising a @code{MemoryError} inside @code{read_memory} does not
7469 automatically mean a @code{MemoryError} will be raised by
7470 @code{builtin_disassemble}. It is possible the @value{GDBN}'s builtin
7471 disassembler is probing to see how many bytes are available. When
7472 @code{read_memory} raises the @code{MemoryError} the builtin
7473 disassembler might be able to perform a complete disassembly with the
7474 bytes it has available, in this case @code{builtin_disassemble} will
7475 not itself raise a @code{MemoryError}.
7476
7477 Any other exception type raised in @code{read_memory} will propagate
7478 back and be re-raised by @code{builtin_disassemble}.
7479 @end defun
7480
7481 @defun DisassembleInfo.text_part (style, string)
7482 Create a new @code{DisassemblerTextPart} representing a piece of a
7483 disassembled instruction. @var{string} should be a non-empty string,
7484 and @var{style} should be an appropriate style constant
7485 (@pxref{Disassembler Style Constants}).
7486
7487 Disassembler parts are used when creating a @code{DisassemblerResult}
7488 in order to represent the styling within an instruction
7489 (@pxref{DisassemblerResult Class}).
7490 @end defun
7491
7492 @defun DisassembleInfo.address_part (address)
7493 Create a new @code{DisassemblerAddressPart}. @var{address} is the
7494 value of the absolute address this part represents. A
7495 @code{DisassemblerAddressPart} is displayed as an absolute address and
7496 an associated symbol, the address and symbol are styled appropriately.
7497 @end defun
7498
7499 @end deftp
7500
7501 @anchor{Disassembler Class}
7502 @deftp {class} gdb.disassembler.Disassembler
7503 This is a base class from which all user implemented disassemblers
7504 must inherit.
7505
7506 @defun Disassembler.__init__ (name)
7507 The constructor takes @var{name}, a string, which should be a short
7508 name for this disassembler.
7509 @end defun
7510
7511 @defun Disassembler.__call__ (info)
7512 The @code{__call__} method must be overridden by sub-classes to
7513 perform disassembly. Calling @code{__call__} on this base class will
7514 raise a @code{NotImplementedError} exception.
7515
7516 The @var{info} argument is an instance of @code{DisassembleInfo}, and
7517 describes the instruction that @value{GDBN} wants disassembling.
7518
7519 If this function returns @code{None}, this indicates to @value{GDBN}
7520 that this sub-class doesn't wish to disassemble the requested
7521 instruction. @value{GDBN} will then use its builtin disassembler to
7522 perform the disassembly.
7523
7524 Alternatively, this function can return a @code{DisassemblerResult}
7525 that represents the disassembled instruction, this type is described
7526 in more detail below.
7527
7528 The @code{__call__} method can raise a @code{gdb.MemoryError}
7529 exception (@pxref{Exception Handling}) to indicate to @value{GDBN}
7530 that there was a problem accessing the required memory, this will then
7531 be displayed by @value{GDBN} within the disassembler output.
7532
7533 Ideally, the only three outcomes from invoking @code{__call__} would
7534 be a return of @code{None}, a successful disassembly returned in a
7535 @code{DisassemblerResult}, or a @code{MemoryError} indicating that
7536 there was a problem reading memory.
7537
7538 However, as an implementation of @code{__call__} could fail due to
7539 other reasons, e.g.@: some external resource required to perform
7540 disassembly is temporarily unavailable, then, if @code{__call__}
7541 raises a @code{GdbError}, the exception will be converted to a string
7542 and printed at the end of the disassembly output, the disassembly
7543 request will then stop.
7544
7545 Any other exception type raised by the @code{__call__} method is
7546 considered an error in the user code, the exception will be printed to
7547 the error stream according to the @kbd{set python print-stack} setting
7548 (@pxref{set_python_print_stack,,@kbd{set python print-stack}}).
7549 @end defun
7550 @end deftp
7551
7552 @anchor{DisassemblerResult Class}
7553 @deftp {class} gdb.disassembler.DisassemblerResult
7554 This class represents the result of disassembling a single
7555 instruction. An instance of this class will be returned from
7556 @code{builtin_disassemble} (@pxref{builtin_disassemble}), and an
7557 instance of this class should be returned from
7558 @w{@code{Disassembler.__call__}} (@pxref{Disassembler Class}) if an
7559 instruction was successfully disassembled.
7560
7561 It is not possible to sub-class the @code{DisassemblerResult} class.
7562
7563 The @code{DisassemblerResult} class has the following properties and
7564 methods:
7565
7566 @defun DisassemblerResult.__init__ (length, string, parts)
7567 Initialize an instance of this class, @var{length} is the length of
7568 the disassembled instruction in bytes, which must be greater than
7569 zero.
7570
7571 Only one of @var{string} or @var{parts} should be used to initialize a
7572 new @code{DisassemblerResult}; the other one should be passed the
7573 value @code{None}. Alternatively, the arguments can be passed by
7574 name, and the unused argument can be ignored.
7575
7576 The @var{string} argument, if not @code{None}, is a non-empty string
7577 that represents the entire disassembled instruction. Building a result
7578 object using the @var{string} argument does not allow for any styling
7579 information to be included in the result. @value{GDBN} will style the
7580 result as a single @code{DisassemblerTextPart} with @code{STYLE_TEXT}
7581 style (@pxref{Disassembler Styling Parts}).
7582
7583 The @var{parts} argument, if not @code{None}, is a non-empty sequence
7584 of @code{DisassemblerPart} objects. Each part represents a small part
7585 of the disassembled instruction along with associated styling
7586 information. A result object built using @var{parts} can be displayed
7587 by @value{GDBN} with full styling information
7588 (@pxref{style_disassembler_enabled,,@kbd{set style disassembler
7589 enabled}}).
7590 @end defun
7591
7592 @defvar DisassemblerResult.length
7593 A read-only property containing the length of the disassembled
7594 instruction in bytes, this will always be greater than zero.
7595 @end defvar
7596
7597 @defvar DisassemblerResult.string
7598 A read-only property containing a non-empty string representing the
7599 disassembled instruction. The @var{string} is a representation of the
7600 disassembled instruction without any styling information. To see how
7601 the instruction will be styled use the @var{parts} property.
7602
7603 If this instance was initialized using separate
7604 @code{DisassemblerPart} objects, the @var{string} property will still
7605 be valid. The @var{string} value is created by concatenating the
7606 @code{DisassemblerPart.string} values of each component part
7607 (@pxref{Disassembler Styling Parts}).
7608 @end defvar
7609
7610 @defvar DisassemblerResult.parts
7611 A read-only property containing a non-empty sequence of
7612 @code{DisassemblerPart} objects. Each @code{DisassemblerPart} object
7613 contains a small part of the instruction along with information about
7614 how that part should be styled. @value{GDBN} uses this information to
7615 create styled disassembler output
7616 (@pxref{style_disassembler_enabled,,@kbd{set style disassembler
7617 enabled}}).
7618
7619 If this instance was initialized using a single string rather than
7620 with a sequence of @code{DisassemblerPart} objects, the @var{parts}
7621 property will still be valid. In this case the @var{parts} property
7622 will hold a sequence containing a single @code{DisassemblerTextPart}
7623 object, the string of which will represent the entire instruction, and
7624 the style of which will be @code{STYLE_TEXT}.
7625 @end defvar
7626 @end deftp
7627
7628 @anchor{Disassembler Styling Parts}
7629 @deftp {class} gdb.disassembler.DisassemblerPart
7630 This is a parent class from which the different part sub-classes
7631 inherit. Only instances of the sub-classes detailed below will be
7632 returned by the Python API.
7633
7634 It is not possible to directly create instances of either this parent
7635 class, or any of the sub-classes listed below. Instances of the
7636 sub-classes listed below are created by calling
7637 @code{builtin_disassemble} (@pxref{builtin_disassemble}) and are
7638 returned within the @code{DisassemblerResult} object, or can be
7639 created by calling the @code{text_part} and @code{address_part}
7640 methods on the @code{DisassembleInfo} class (@pxref{DisassembleInfo
7641 Class}).
7642
7643 The @code{DisassemblerPart} class has a single property:
7644
7645 @defvar DisassemblerPart.string
7646 A read-only property that contains a non-empty string representing
7647 this part of the disassembled instruction. The string within this
7648 property doesn't include any styling information.
7649 @end defvar
7650 @end deftp
7651
7652 @deftp {class} gdb.disassembler.DisassemblerTextPart
7653 The @code{DisassemblerTextPart} class represents a piece of the
7654 disassembled instruction and the associated style for that piece.
7655 Instances of this class can't be created directly, instead call
7656 @code{DisassembleInfo.text_part} to create a new instance of this
7657 class (@pxref{DisassembleInfo Class}).
7658
7659 As well as the properties of its parent class, the
7660 @code{DisassemblerTextPart} has the following additional property:
7661
7662 @defvar DisassemblerTextPart.style
7663 A read-only property that contains one of the defined style constants.
7664 @value{GDBN} will use this style when styling this part of the
7665 disassembled instruction (@pxref{Disassembler Style Constants}).
7666 @end defvar
7667 @end deftp
7668
7669 @deftp {class} gdb.disassembler.DisassemblerAddressPart
7670 The @code{DisassemblerAddressPart} class represents an absolute
7671 address within a disassembled instruction. Using a
7672 @code{DisassemblerAddressPart} instead of a
7673 @code{DisassemblerTextPart} with @code{STYLE_ADDRESS} is preferred,
7674 @value{GDBN} will display the address as both an absolute address, and
7675 will look up a suitable symbol to display next to the address. Using
7676 @code{DisassemblerAddressPart} also ensures that user settings such as
7677 @code{set print max-symbolic-offset} are respected.
7678
7679 Here is an example of an x86-64 instruction:
7680
7681 @smallexample
7682 call 0x401136 <foo>
7683 @end smallexample
7684
7685 @noindent
7686 In this instruction the @code{0x401136 <foo>} was generated from a
7687 single @code{DisassemblerAddressPart}. The @code{0x401136} will be
7688 styled with @code{STYLE_ADDRESS}, and @code{foo} will be styled with
7689 @code{STYLE_SYMBOL}. The @code{<} and @code{>} will be styled as
7690 @code{STYLE_TEXT}.
7691
7692 If the inclusion of the symbol name is not required then a
7693 @code{DisassemblerTextPart} with style @code{STYLE_ADDRESS} can be
7694 used instead.
7695
7696 Instances of this class can't be created directly, instead call
7697 @code{DisassembleInfo.address_part} to create a new instance of this
7698 class (@pxref{DisassembleInfo Class}).
7699
7700 As well as the properties of its parent class, the
7701 @code{DisassemblerAddressPart} has the following additional property:
7702
7703 @defvar DisassemblerAddressPart.address
7704 A read-only property that contains the @var{address} passed to this
7705 object's @code{__init__} method.
7706 @end defvar
7707 @end deftp
7708
7709 @anchor{Disassembler Style Constants}
7710
7711 The following table lists all of the disassembler styles that are
7712 available. @value{GDBN} maps these style constants onto its style
7713 settings (@pxref{Output Styling}). In some cases, several style
7714 constants produce the same style settings, and thus will produce the
7715 same visual effect on the screen. This could change in future
7716 releases of @value{GDBN}, so care should be taken to select the
7717 correct style constant to ensure correct output styling in future
7718 releases of @value{GDBN}.
7719
7720 @vtable @code
7721 @vindex STYLE_TEXT
7722 @item gdb.disassembler.STYLE_TEXT
7723 This is the default style used by @value{GDBN} when styling
7724 disassembler output. This style should be used for any parts of the
7725 instruction that don't fit any of the other styles listed below.
7726 @value{GDBN} styles text with this style using its default style.
7727
7728 @vindex STYLE_MNEMONIC
7729 @item gdb.disassembler.STYLE_MNEMONIC
7730 This style is used for styling the primary instruction mnemonic, which
7731 usually appears at, or near, the start of the disassembled instruction
7732 string.
7733
7734 @value{GDBN} styles text with this style using the @code{disassembler
7735 mnemonic} style setting.
7736
7737 @vindex STYLE_SUB_MNEMONIC
7738 @item gdb.disassembler.STYLE_SUB_MNEMONIC
7739 This style is used for styling any sub-mnemonics within a disassembled
7740 instruction. A sub-mnemonic is any text within the instruction that
7741 controls the function of the instruction, but which is disjoint from
7742 the primary mnemonic (which will have styled @code{STYLE_MNEMONIC}).
7743
7744 As an example, consider this AArch64 instruction:
7745
7746 @smallexample
7747 add w16, w7, w1, lsl #1
7748 @end smallexample
7749
7750 @noindent
7751 The @code{add} is the primary instruction mnemonic, and would be given
7752 style @code{STYLE_MNEMONIC}, while @code{lsl} is the sub-mnemonic, and
7753 would be given the style @code{STYLE_SUB_MNEMONIC}.
7754
7755 @value{GDBN} styles text with this style using the @code{disassembler
7756 mnemonic} style setting.
7757
7758 @vindex STYLE_ASSEMBLER_DIRECTIVE
7759 @item gdb.disassembler.STYLE_ASSEMBLER_DIRECTIVE
7760 Sometimes a series of bytes doesn't decode to a valid instruction. In
7761 this case the disassembler may choose to represent the result of
7762 disassembling using an assembler directive, for example:
7763
7764 @smallexample
7765 .word 0x1234
7766 @end smallexample
7767
7768 @noindent
7769 In this case, the @code{.word} would be give the
7770 @code{STYLE_ASSEMBLER_DIRECTIVE} style. An assembler directive is
7771 similar to a mnemonic in many ways but is something that is not part
7772 of the architecture's instruction set.
7773
7774 @value{GDBN} styles text with this style using the @code{disassembler
7775 mnemonic} style setting.
7776
7777 @vindex STYLE_REGISTER
7778 @item gdb.disassembler.STYLE_REGISTER
7779 This style is used for styling any text that represents a register
7780 name, or register number, within a disassembled instruction.
7781
7782 @value{GDBN} styles text with this style using the @code{disassembler
7783 register} style setting.
7784
7785 @vindex STYLE_ADDRESS
7786 @item gdb.disassembler.STYLE_ADDRESS
7787 This style is used for styling numerical values that represent
7788 absolute addresses within the disassembled instruction.
7789
7790 When creating a @code{DisassemblerTextPart} with this style, you
7791 should consider if a @code{DisassemblerAddressPart} would be more
7792 appropriate. See @ref{Disassembler Styling Parts} for a description
7793 of what each part offers.
7794
7795 @value{GDBN} styles text with this style using the @code{disassembler
7796 address} style setting.
7797
7798 @vindex STYLE_ADDRESS_OFFSET
7799 @item gdb.disassembler.STYLE_ADDRESS_OFFSET
7800 This style is used for styling numerical values that represent offsets
7801 to addresses within the disassembled instruction. A value is
7802 considered an address offset when the instruction itself is going to
7803 access memory, and the value is being used to offset which address is
7804 accessed.
7805
7806 For example, an architecture might have an instruction that loads from
7807 memory using an address within a register. If that instruction also
7808 allowed for an immediate offset to be encoded into the instruction,
7809 this would be an address offset. Similarly, a branch instruction
7810 might jump to an address in a register plus an address offset that is
7811 encoded into the instruction.
7812
7813 @value{GDBN} styles text with this style using the @code{disassembler
7814 immediate} style setting.
7815
7816 @vindex STYLE_IMMEDIATE
7817 @item gdb.disassembler.STYLE_IMMEDIATE
7818 Use @code{STYLE_IMMEDIATE} for any numerical values within a
7819 disassembled instruction when those values are not addresses, address
7820 offsets, or register numbers (The styles @code{STYLE_ADDRESS},
7821 @code{STYLE_ADDRESS_OFFSET}, or @code{STYLE_REGISTER} can be used in
7822 those cases).
7823
7824 @value{GDBN} styles text with this style using the @code{disassembler
7825 immediate} style setting.
7826
7827 @vindex STYLE_SYMBOL
7828 @item gdb.disassembler.STYLE_SYMBOL
7829 This style is used for styling the textual name of a symbol that is
7830 included within a disassembled instruction. A symbol name is often
7831 included next to an absolute address within a disassembled instruction
7832 to make it easier for the user to understand what the address is
7833 referring too. For example:
7834
7835 @smallexample
7836 call 0x401136 <foo>
7837 @end smallexample
7838
7839 @noindent
7840 Here @code{foo} is the name of a symbol, and should be given the
7841 @code{STYLE_SYMBOL} style.
7842
7843 Adding symbols next to absolute addresses like this is handled
7844 automatically by the @code{DisassemblerAddressPart} class
7845 (@pxref{Disassembler Styling Parts}).
7846
7847 @value{GDBN} styles text with this style using the @code{disassembler
7848 symbol} style setting.
7849
7850 @vindex STYLE_COMMENT_START
7851 @item gdb.disassembler.STYLE_COMMENT_START
7852 This style is used to start a line comment in the disassembly output.
7853 Unlike other styles, which only apply to the single
7854 @code{DisassemblerTextPiece} to which they are applied, the comment
7855 style is sticky, and overrides the style of any further pieces within
7856 this instruction.
7857
7858 This means that, after a @code{STYLE_COMMENT_START} piece has been
7859 seen, @value{GDBN} will apply the comment style until the end of the
7860 line, ignoring the specific style within a piece.
7861
7862 @value{GDBN} styles text with this style using the @code{disassembler
7863 comment} style setting.
7864 @end vtable
7865
7866 The following functions are also contained in the
7867 @code{gdb.disassembler} module:
7868
7869 @defun register_disassembler (disassembler, architecture)
7870 The @var{disassembler} must be a sub-class of
7871 @code{gdb.disassembler.Disassembler} or @code{None}.
7872
7873 The optional @var{architecture} is either a string, or the value
7874 @code{None}. If it is a string, then it should be the name of an
7875 architecture known to @value{GDBN}, as returned either from
7876 @code{gdb.Architecture.name}
7877 (@pxref{gdbpy_architecture_name,,gdb.Architecture.name}), or from
7878 @code{gdb.architecture_names}
7879 (@pxref{gdb_architecture_names,,gdb.architecture_names}).
7880
7881 The @var{disassembler} will be installed for the architecture named by
7882 @var{architecture}, or if @var{architecture} is @code{None}, then
7883 @var{disassembler} will be installed as a global disassembler for use
7884 by all architectures.
7885
7886 @cindex disassembler in Python, global vs.@: specific
7887 @cindex search order for disassembler in Python
7888 @cindex look up of disassembler in Python
7889 @value{GDBN} only records a single disassembler for each architecture,
7890 and a single global disassembler. Calling
7891 @code{register_disassembler} for an architecture, or for the global
7892 disassembler, will replace any existing disassembler registered for
7893 that @var{architecture} value. The previous disassembler is returned.
7894
7895 If @var{disassembler} is @code{None} then any disassembler currently
7896 registered for @var{architecture} is deregistered and returned.
7897
7898 When @value{GDBN} is looking for a disassembler to use, @value{GDBN}
7899 first looks for an architecture specific disassembler. If none has
7900 been registered then @value{GDBN} looks for a global disassembler (one
7901 registered with @var{architecture} set to @code{None}). Only one
7902 disassembler is called to perform disassembly, so, if there is both an
7903 architecture specific disassembler, and a global disassembler
7904 registered, it is the architecture specific disassembler that will be
7905 used.
7906
7907 @value{GDBN} tracks the architecture specific, and global
7908 disassemblers separately, so it doesn't matter in which order
7909 disassemblers are created or registered; an architecture specific
7910 disassembler, if present, will always be used in preference to a
7911 global disassembler.
7912
7913 You can use the @kbd{maint info python-disassemblers} command
7914 (@pxref{maint info python-disassemblers}) to see which disassemblers
7915 have been registered.
7916 @end defun
7917
7918 @anchor{builtin_disassemble}
7919 @defun builtin_disassemble (info)
7920 This function calls back into @value{GDBN}'s builtin disassembler to
7921 disassemble the instruction identified by @var{info}, an instance, or
7922 sub-class, of @code{DisassembleInfo}.
7923
7924 When the builtin disassembler needs to read memory the
7925 @code{read_memory} method on @var{info} will be called. By
7926 sub-classing @code{DisassembleInfo} and overriding the
7927 @code{read_memory} method, it is possible to intercept calls to
7928 @code{read_memory} from the builtin disassembler, and to modify the
7929 values returned.
7930
7931 It is important to understand that, even when
7932 @code{DisassembleInfo.read_memory} raises a @code{gdb.MemoryError}, it
7933 is the internal disassembler itself that reports the memory error to
7934 @value{GDBN}. The reason for this is that the disassembler might
7935 probe memory to see if a byte is readable or not; if the byte can't be
7936 read then the disassembler may choose not to report an error, but
7937 instead to disassemble the bytes that it does have available.
7938
7939 If the builtin disassembler is successful then an instance of
7940 @code{DisassemblerResult} is returned from @code{builtin_disassemble},
7941 alternatively, if something goes wrong, an exception will be raised.
7942
7943 A @code{MemoryError} will be raised if @code{builtin_disassemble} is
7944 unable to read some memory that is required in order to perform
7945 disassembly correctly.
7946
7947 Any exception that is not a @code{MemoryError}, that is raised in a
7948 call to @code{read_memory}, will pass through
7949 @code{builtin_disassemble}, and be visible to the caller.
7950
7951 Finally, there are a few cases where @value{GDBN}'s builtin
7952 disassembler can fail for reasons that are not covered by
7953 @code{MemoryError}. In these cases, a @code{GdbError} will be raised.
7954 The contents of the exception will be a string describing the problem
7955 the disassembler encountered.
7956 @end defun
7957
7958 Here is an example that registers a global disassembler. The new
7959 disassembler invokes the builtin disassembler, and then adds a
7960 comment, @code{## Comment}, to each line of disassembly output:
7961
7962 @smallexample
7963 class ExampleDisassembler(gdb.disassembler.Disassembler):
7964 def __init__(self):
7965 super().__init__("ExampleDisassembler")
7966
7967 def __call__(self, info):
7968 result = gdb.disassembler.builtin_disassemble(info)
7969 length = result.length
7970 text = result.string + "\t## Comment"
7971 return gdb.disassembler.DisassemblerResult(length, text)
7972
7973 gdb.disassembler.register_disassembler(ExampleDisassembler())
7974 @end smallexample
7975
7976 The following example creates a sub-class of @code{DisassembleInfo} in
7977 order to intercept the @code{read_memory} calls, within
7978 @code{read_memory} any bytes read from memory have the two 4-bit
7979 nibbles swapped around. This isn't a very useful adjustment, but
7980 serves as an example.
7981
7982 @smallexample
7983 class MyInfo(gdb.disassembler.DisassembleInfo):
7984 def __init__(self, info):
7985 super().__init__(info)
7986
7987 def read_memory(self, length, offset):
7988 buffer = super().read_memory(length, offset)
7989 result = bytearray()
7990 for b in buffer:
7991 v = int.from_bytes(b, 'little')
7992 v = (v << 4) & 0xf0 | (v >> 4)
7993 result.append(v)
7994 return memoryview(result)
7995
7996 class NibbleSwapDisassembler(gdb.disassembler.Disassembler):
7997 def __init__(self):
7998 super().__init__("NibbleSwapDisassembler")
7999
8000 def __call__(self, info):
8001 info = MyInfo(info)
8002 return gdb.disassembler.builtin_disassemble(info)
8003
8004 gdb.disassembler.register_disassembler(NibbleSwapDisassembler())
8005 @end smallexample
8006
8007 @node Missing Debug Info In Python
8008 @subsubsection Missing Debug Info In Python
8009 @cindex python, handle missing debug information
8010
8011 When @value{GDBN} encounters a new objfile (@pxref{Objfiles In
8012 Python}), e.g.@: the primary executable, or any shared libraries used
8013 by the inferior, @value{GDBN} will attempt to load the corresponding
8014 debug information for that objfile. The debug information might be
8015 found within the objfile itself, or within a separate objfile which
8016 @value{GDBN} will automatically locate and load.
8017
8018 Sometimes though, @value{GDBN} might not find any debug information
8019 for an objfile, in this case the debugging experience will be
8020 restricted.
8021
8022 If @value{GDBN} fails to locate any debug information for a particular
8023 objfile, there is an opportunity for a Python extension to step in. A
8024 Python extension can potentially locate the missing debug information
8025 using some platform- or project-specific steps, and inform
8026 @value{GDBN} of its location. Or a Python extension might provide
8027 some platform- or project-specific advice to the user about how to
8028 obtain the missing debug information.
8029
8030 A missing debug information Python extension consists of a handler
8031 object which has the @code{name} and @code{enabled} attributes, and
8032 implements the @code{__call__} method. When @value{GDBN} encounters
8033 an objfile for which it is unable to find any debug information, it
8034 invokes the @code{__call__} method. Full details of how handlers are
8035 written can be found below.
8036
8037 @subheading The @code{gdb.missing_debug} Module
8038
8039 @value{GDBN} comes with a @code{gdb.missing_debug} module which
8040 contains the following class and global function:
8041
8042 @deftp{class} gdb.missing_debug.MissingDebugHandler
8043
8044 @code{MissingDebugHandler} is a base class from which user-created
8045 handlers can derive, though it is not required that handlers derive
8046 from this class, so long as any user created handler has the
8047 @code{name} and @code{enabled} attributes, and implements the
8048 @code{__call__} method.
8049
8050 @defun MissingDebugHandler.__init__ (name)
8051 The @var{name} is a string used to reference this missing debug
8052 handler within some @value{GDBN} commands. Valid names consist of the
8053 characters @code{[-_a-zA-Z0-9]}, creating a handler with an invalid
8054 name raises a @code{ValueError} exception.
8055 @end defun
8056
8057 @defun MissingDebugHandler.__call__ (objfile)
8058 Sub-classes must override the @code{__call__} method. The
8059 @var{objfile} argument will be a @code{gdb.Objfile}, this is the
8060 objfile for which @value{GDBN} was unable to find any debug
8061 information.
8062
8063 The return value from the @code{__call__} method indicates what
8064 @value{GDBN} should do next. The possible return values are:
8065
8066 @itemize @bullet
8067 @item @code{None}
8068
8069 This indicates that this handler could not help with @var{objfile},
8070 @value{GDBN} should call any other registered handlers.
8071
8072 @item @code{True}
8073
8074 This indicates that this handler has installed the debug information
8075 into a location where @value{GDBN} would normally expect to find it
8076 when looking for separate debug information files (@pxref{Separate
8077 Debug Files}). @value{GDBN} will repeat the normal lookup process,
8078 which should now find the separate debug file.
8079
8080 If @value{GDBN} still doesn't find the separate debug information file
8081 after this second attempt, then the Python missing debug information
8082 handlers are not invoked a second time, this prevents a badly behaved
8083 handler causing @value{GDBN} to get stuck in a loop. @value{GDBN}
8084 will continue without any debug information for @var{objfile}.
8085
8086 @item @code{False}
8087
8088 This indicates that this handler has done everything that it intends
8089 to do with @var{objfile}, but no separate debug information can be
8090 found. @value{GDBN} will not call any other registered handlers for
8091 @var{objfile}. @value{GDBN} will continue without debugging
8092 information for @var{objfile}.
8093
8094 @item A string
8095
8096 The returned string should contain a filename. @value{GDBN} will not
8097 call any further registered handlers, and will instead load the debug
8098 information from the file identified by the returned filename.
8099 @end itemize
8100
8101 Invoking the @code{__call__} method from this base class will raise a
8102 @code{NotImplementedError} exception.
8103 @end defun
8104
8105 @defvar MissingDebugHandler.name
8106 A read-only attribute which is a string, the name of this handler
8107 passed to the @code{__init__} method.
8108 @end defvar
8109
8110 @defvar MissingDebugHandler.enabled
8111 A modifiable attribute containing a boolean; when @code{True}, the
8112 handler is enabled, and will be used by @value{GDBN}. When
8113 @code{False}, the handler has been disabled, and will not be used.
8114 @end defvar
8115 @end deftp
8116
8117 @defun gdb.missing_debug.register_handler (locus, handler, replace=@code{False})
8118 Register a new missing debug handler with @value{GDBN}.
8119
8120 @var{handler} is an instance of a sub-class of
8121 @code{MissingDebugHandler}, or at least an instance of an object that
8122 has the same attributes and methods as @code{MissingDebugHandler}.
8123
8124 @var{locus} specifies to which handler list to prepend @var{handler}.
8125 It can be either a @code{gdb.Progspace} (@pxref{Progspaces In Python})
8126 or @code{None}, in which case the handler is registered globally. The
8127 newly registered @var{handler} will be called before any other handler
8128 from the same locus. Two handlers in the same locus cannot have the
8129 same name, an attempt to add a handler with an already existing name
8130 raises an exception unless @var{replace} is @code{True}, in which case
8131 the old handler is deleted and the new handler is prepended to the
8132 selected handler list.
8133
8134 @value{GDBN} first calls the handlers for the current program space,
8135 and then the globally registered handlers. As soon as a handler
8136 returns a value other than @code{None}, no further handlers are called
8137 for this objfile.
8138 @end defun
8139
8140 @node Python Auto-loading
8141 @subsection Python Auto-loading
8142 @cindex Python auto-loading
8143
8144 When a new object file is read (for example, due to the @code{file}
8145 command, or because the inferior has loaded a shared library),
8146 @value{GDBN} will look for Python support scripts in several ways:
8147 @file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section.
8148 @xref{Auto-loading extensions}.
8149
8150 The auto-loading feature is useful for supplying application-specific
8151 debugging commands and scripts.
8152
8153 Auto-loading can be enabled or disabled,
8154 and the list of auto-loaded scripts can be printed.
8155
8156 @table @code
8157 @anchor{set auto-load python-scripts}
8158 @kindex set auto-load python-scripts
8159 @item set auto-load python-scripts [on|off]
8160 Enable or disable the auto-loading of Python scripts.
8161
8162 @anchor{show auto-load python-scripts}
8163 @kindex show auto-load python-scripts
8164 @item show auto-load python-scripts
8165 Show whether auto-loading of Python scripts is enabled or disabled.
8166
8167 @anchor{info auto-load python-scripts}
8168 @kindex info auto-load python-scripts
8169 @cindex print list of auto-loaded Python scripts
8170 @item info auto-load python-scripts [@var{regexp}]
8171 Print the list of all Python scripts that @value{GDBN} auto-loaded.
8172
8173 Also printed is the list of Python scripts that were mentioned in
8174 the @code{.debug_gdb_scripts} section and were either not found
8175 (@pxref{dotdebug_gdb_scripts section}) or were not auto-loaded due to
8176 @code{auto-load safe-path} rejection (@pxref{Auto-loading}).
8177 This is useful because their names are not printed when @value{GDBN}
8178 tries to load them and fails. There may be many of them, and printing
8179 an error message for each one is problematic.
8180
8181 If @var{regexp} is supplied only Python scripts with matching names are printed.
8182
8183 Example:
8184
8185 @smallexample
8186 (gdb) info auto-load python-scripts
8187 Loaded Script
8188 Yes py-section-script.py
8189 full name: /tmp/py-section-script.py
8190 No my-foo-pretty-printers.py
8191 @end smallexample
8192 @end table
8193
8194 When reading an auto-loaded file or script, @value{GDBN} sets the
8195 @dfn{current objfile}. This is available via the @code{gdb.current_objfile}
8196 function (@pxref{Objfiles In Python}). This can be useful for
8197 registering objfile-specific pretty-printers and frame-filters.
8198
8199 @node Python modules
8200 @subsection Python modules
8201 @cindex python modules
8202
8203 @value{GDBN} comes with several modules to assist writing Python code.
8204
8205 @menu
8206 * gdb.printing:: Building and registering pretty-printers.
8207 * gdb.types:: Utilities for working with types.
8208 * gdb.prompt:: Utilities for prompt value substitution.
8209 @end menu
8210
8211 @node gdb.printing
8212 @subsubsection gdb.printing
8213 @cindex gdb.printing
8214
8215 This module provides a collection of utilities for working with
8216 pretty-printers.
8217
8218 @table @code
8219 @item PrettyPrinter (@var{name}, @var{subprinters}=None)
8220 This class specifies the API that makes @samp{info pretty-printer},
8221 @samp{enable pretty-printer} and @samp{disable pretty-printer} work.
8222 Pretty-printers should generally inherit from this class.
8223
8224 @item SubPrettyPrinter (@var{name})
8225 For printers that handle multiple types, this class specifies the
8226 corresponding API for the subprinters.
8227
8228 @item RegexpCollectionPrettyPrinter (@var{name})
8229 Utility class for handling multiple printers, all recognized via
8230 regular expressions.
8231 @xref{Writing a Pretty-Printer}, for an example.
8232
8233 @item FlagEnumerationPrinter (@var{name})
8234 A pretty-printer which handles printing of @code{enum} values. Unlike
8235 @value{GDBN}'s built-in @code{enum} printing, this printer attempts to
8236 work properly when there is some overlap between the enumeration
8237 constants. The argument @var{name} is the name of the printer and
8238 also the name of the @code{enum} type to look up.
8239
8240 @item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
8241 Register @var{printer} with the pretty-printer list of @var{obj}.
8242 If @var{replace} is @code{True} then any existing copy of the printer
8243 is replaced. Otherwise a @code{RuntimeError} exception is raised
8244 if a printer with the same name already exists.
8245 @end table
8246
8247 @node gdb.types
8248 @subsubsection gdb.types
8249 @cindex gdb.types
8250
8251 This module provides a collection of utilities for working with
8252 @code{gdb.Type} objects.
8253
8254 @table @code
8255 @item get_basic_type (@var{type})
8256 Return @var{type} with const and volatile qualifiers stripped,
8257 and with typedefs and C@t{++} references converted to the underlying type.
8258
8259 C@t{++} example:
8260
8261 @smallexample
8262 typedef const int const_int;
8263 const_int foo (3);
8264 const_int& foo_ref (foo);
8265 int main () @{ return 0; @}
8266 @end smallexample
8267
8268 Then in gdb:
8269
8270 @smallexample
8271 (gdb) start
8272 (gdb) python import gdb.types
8273 (gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
8274 (gdb) python print gdb.types.get_basic_type(foo_ref.type)
8275 int
8276 @end smallexample
8277
8278 @item has_field (@var{type}, @var{field})
8279 Return @code{True} if @var{type}, assumed to be a type with fields
8280 (e.g., a structure or union), has field @var{field}.
8281
8282 @item make_enum_dict (@var{enum_type})
8283 Return a Python @code{dictionary} type produced from @var{enum_type}.
8284
8285 @item deep_items (@var{type})
8286 Returns a Python iterator similar to the standard
8287 @code{gdb.Type.iteritems} method, except that the iterator returned
8288 by @code{deep_items} will recursively traverse anonymous struct or
8289 union fields. For example:
8290
8291 @smallexample
8292 struct A
8293 @{
8294 int a;
8295 union @{
8296 int b0;
8297 int b1;
8298 @};
8299 @};
8300 @end smallexample
8301
8302 @noindent
8303 Then in @value{GDBN}:
8304 @smallexample
8305 (@value{GDBP}) python import gdb.types
8306 (@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
8307 (@value{GDBP}) python print struct_a.keys ()
8308 @{['a', '']@}
8309 (@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
8310 @{['a', 'b0', 'b1']@}
8311 @end smallexample
8312
8313 @item get_type_recognizers ()
8314 Return a list of the enabled type recognizers for the current context.
8315 This is called by @value{GDBN} during the type-printing process
8316 (@pxref{Type Printing API}).
8317
8318 @item apply_type_recognizers (recognizers, type_obj)
8319 Apply the type recognizers, @var{recognizers}, to the type object
8320 @var{type_obj}. If any recognizer returns a string, return that
8321 string. Otherwise, return @code{None}. This is called by
8322 @value{GDBN} during the type-printing process (@pxref{Type Printing
8323 API}).
8324
8325 @item register_type_printer (locus, printer)
8326 This is a convenience function to register a type printer
8327 @var{printer}. The printer must implement the type printer protocol.
8328 The @var{locus} argument is either a @code{gdb.Objfile}, in which case
8329 the printer is registered with that objfile; a @code{gdb.Progspace},
8330 in which case the printer is registered with that progspace; or
8331 @code{None}, in which case the printer is registered globally.
8332
8333 @item TypePrinter
8334 This is a base class that implements the type printer protocol. Type
8335 printers are encouraged, but not required, to derive from this class.
8336 It defines a constructor:
8337
8338 @defmethod TypePrinter __init__ (self, name)
8339 Initialize the type printer with the given name. The new printer
8340 starts in the enabled state.
8341 @end defmethod
8342
8343 @end table
8344
8345 @node gdb.prompt
8346 @subsubsection gdb.prompt
8347 @cindex gdb.prompt
8348
8349 This module provides a method for prompt value-substitution.
8350
8351 @table @code
8352 @item substitute_prompt (@var{string})
8353 Return @var{string} with escape sequences substituted by values. Some
8354 escape sequences take arguments. You can specify arguments inside
8355 ``@{@}'' immediately following the escape sequence.
8356
8357 The escape sequences you can pass to this function are:
8358
8359 @table @code
8360 @item \\
8361 Substitute a backslash.
8362 @item \e
8363 Substitute an ESC character.
8364 @item \f
8365 Substitute the selected frame; an argument names a frame parameter.
8366 @item \n
8367 Substitute a newline.
8368 @item \p
8369 Substitute a parameter's value; the argument names the parameter.
8370 @item \r
8371 Substitute a carriage return.
8372 @item \t
8373 Substitute the selected thread; an argument names a thread parameter.
8374 @item \v
8375 Substitute the version of GDB.
8376 @item \w
8377 Substitute the current working directory.
8378 @item \[
8379 Begin a sequence of non-printing characters. These sequences are
8380 typically used with the ESC character, and are not counted in the string
8381 length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
8382 blue-colored ``(gdb)'' prompt where the length is five.
8383 @item \]
8384 End a sequence of non-printing characters.
8385 @end table
8386
8387 For example:
8388
8389 @smallexample
8390 substitute_prompt ("frame: \f, args: \p@{print frame-arguments@}")
8391 @end smallexample
8392
8393 @exdent will return the string:
8394
8395 @smallexample
8396 "frame: main, args: scalars"
8397 @end smallexample
8398 @end table
8399