Home | History | Annotate | Line # | Download | only in doc
      1   1.9  christos @c Copyright (C) 2008--2024 Free Software Foundation, Inc.
      2   1.1  christos @c Permission is granted to copy, distribute and/or modify this document
      3   1.1  christos @c under the terms of the GNU Free Documentation License, Version 1.3 or
      4   1.1  christos @c any later version published by the Free Software Foundation; with the
      5   1.1  christos @c Invariant Sections being ``Free Software'' and ``Free Software Needs
      6   1.1  christos @c Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
      7   1.1  christos @c and with the Back-Cover Texts as in (a) below.
      8   1.1  christos @c 
      9   1.1  christos @c (a) The FSF's Back-Cover Text is: ``You are free to copy and modify
     10   1.1  christos @c this GNU Manual.  Buying copies from GNU Press supports the FSF in
     11   1.1  christos @c developing GNU and promoting software freedom.''
     12   1.1  christos 
     13   1.1  christos @node Python
     14   1.1  christos @section Extending @value{GDBN} using Python
     15   1.1  christos @cindex python scripting
     16   1.1  christos @cindex scripting with python
     17   1.1  christos 
     18   1.1  christos You can extend @value{GDBN} using the @uref{http://www.python.org/,
     19   1.1  christos Python programming language}.  This feature is available only if
     20   1.1  christos @value{GDBN} was configured using @option{--with-python}.
     21   1.1  christos 
     22   1.1  christos @cindex python directory
     23   1.1  christos Python scripts used by @value{GDBN} should be installed in
     24   1.1  christos @file{@var{data-directory}/python}, where @var{data-directory} is
     25   1.1  christos the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
     26   1.1  christos This directory, known as the @dfn{python directory},
     27   1.1  christos is automatically added to the Python Search Path in order to allow
     28   1.1  christos the Python interpreter to locate all scripts installed at this location.
     29   1.1  christos 
     30   1.1  christos Additionally, @value{GDBN} commands and convenience functions which
     31   1.1  christos are written in Python and are located in the
     32   1.1  christos @file{@var{data-directory}/python/gdb/command} or
     33   1.1  christos @file{@var{data-directory}/python/gdb/function} directories are
     34   1.1  christos automatically imported when @value{GDBN} starts.
     35   1.1  christos 
     36   1.1  christos @menu
     37   1.1  christos * Python Commands::             Accessing Python from @value{GDBN}.
     38   1.1  christos * Python API::                  Accessing @value{GDBN} from Python.
     39   1.1  christos * Python Auto-loading::         Automatically loading Python code.
     40   1.1  christos * Python modules::              Python modules provided by @value{GDBN}.
     41   1.1  christos @end menu
     42   1.1  christos 
     43   1.1  christos @node Python Commands
     44   1.1  christos @subsection Python Commands
     45   1.1  christos @cindex python commands
     46   1.1  christos @cindex commands to access python
     47   1.1  christos 
     48   1.1  christos @value{GDBN} provides two commands for accessing the Python interpreter,
     49   1.1  christos and one related setting:
     50   1.1  christos 
     51   1.1  christos @table @code
     52   1.1  christos @kindex python-interactive
     53   1.1  christos @kindex pi
     54   1.1  christos @item python-interactive @r{[}@var{command}@r{]}
     55   1.1  christos @itemx pi @r{[}@var{command}@r{]}
     56   1.1  christos Without an argument, the @code{python-interactive} command can be used
     57   1.1  christos to start an interactive Python prompt.  To return to @value{GDBN},
     58   1.1  christos type the @code{EOF} character (e.g., @kbd{Ctrl-D} on an empty prompt).
     59   1.1  christos 
     60   1.1  christos Alternatively, a single-line Python command can be given as an
     61   1.1  christos argument and evaluated.  If the command is an expression, the result
     62   1.1  christos will be printed; otherwise, nothing will be printed.  For example:
     63   1.1  christos 
     64   1.1  christos @smallexample
     65   1.1  christos (@value{GDBP}) python-interactive 2 + 3
     66   1.1  christos 5
     67   1.1  christos @end smallexample
     68   1.1  christos 
     69   1.1  christos @kindex python
     70   1.1  christos @kindex py
     71   1.1  christos @item python @r{[}@var{command}@r{]}
     72   1.1  christos @itemx py @r{[}@var{command}@r{]}
     73   1.1  christos The @code{python} command can be used to evaluate Python code.
     74   1.1  christos 
     75   1.1  christos If given an argument, the @code{python} command will evaluate the
     76   1.1  christos argument as a Python command.  For example:
     77   1.1  christos 
     78   1.1  christos @smallexample
     79   1.1  christos (@value{GDBP}) python print 23
     80   1.1  christos 23
     81   1.1  christos @end smallexample
     82   1.1  christos 
     83   1.1  christos If you do not provide an argument to @code{python}, it will act as a
     84   1.1  christos multi-line command, like @code{define}.  In this case, the Python
     85   1.1  christos script is made up of subsequent command lines, given after the
     86   1.1  christos @code{python} command.  This command list is terminated using a line
     87   1.1  christos containing @code{end}.  For example:
     88   1.1  christos 
     89   1.1  christos @smallexample
     90   1.1  christos (@value{GDBP}) python
     91   1.1  christos >print 23
     92   1.1  christos >end
     93   1.1  christos 23
     94   1.1  christos @end smallexample
     95   1.1  christos 
     96   1.8  christos @anchor{set_python_print_stack}
     97   1.1  christos @kindex set python print-stack
     98   1.1  christos @item set python print-stack
     99   1.1  christos By default, @value{GDBN} will print only the message component of a
    100   1.1  christos Python exception when an error occurs in a Python script.  This can be
    101   1.1  christos controlled using @code{set python print-stack}: if @code{full}, then
    102   1.1  christos full Python stack printing is enabled; if @code{none}, then Python stack
    103   1.1  christos and message printing is disabled; if @code{message}, the default, only
    104   1.1  christos the message component of the error is printed.
    105   1.8  christos 
    106   1.8  christos @kindex set python ignore-environment
    107   1.8  christos @item set python ignore-environment @r{[}on@r{|}off@r{]}
    108   1.8  christos By default this option is @samp{off}, and, when @value{GDBN}
    109   1.8  christos initializes its internal Python interpreter, the Python interpreter
    110   1.8  christos will check the environment for variables that will effect how it
    111   1.8  christos behaves, for example @env{PYTHONHOME}, and
    112   1.8  christos @env{PYTHONPATH}@footnote{See the ENVIRONMENT VARIABLES section of
    113   1.8  christos @command{man 1 python} for a comprehensive list.}.
    114   1.8  christos 
    115   1.8  christos If this option is set to @samp{on} before Python is initialized then
    116   1.8  christos Python will ignore all such environment variables.  As Python is
    117   1.8  christos initialized early during @value{GDBN}'s startup process, then this
    118   1.8  christos option must be placed into the early initialization file
    119   1.8  christos (@pxref{Initialization Files}) to have the desired effect.
    120   1.8  christos 
    121   1.8  christos This option is equivalent to passing @option{-E} to the real
    122   1.8  christos @command{python} executable.
    123   1.8  christos 
    124   1.8  christos @kindex set python dont-write-bytecode
    125   1.8  christos @item set python dont-write-bytecode @r{[}auto@r{|}on@r{|}off@r{]}
    126   1.8  christos When this option is @samp{off}, then, once @value{GDBN} has
    127   1.8  christos initialized the Python interpreter, the interpreter will byte-compile
    128   1.8  christos any Python modules that it imports and write the byte code to disk in
    129   1.8  christos @file{.pyc} files.
    130   1.8  christos 
    131   1.8  christos If this option is set to @samp{on} before Python is initialized then
    132   1.8  christos Python will no longer write the byte code to disk.  As Python is
    133   1.8  christos initialized early during @value{GDBN}'s startup process, then this
    134   1.8  christos option must be placed into the early initialization file
    135   1.8  christos (@pxref{Initialization Files}) to have the desired effect.
    136   1.8  christos 
    137   1.8  christos By default this option is set to @samp{auto}.  In this mode, provided
    138   1.8  christos the @code{python ignore-environment} setting is @samp{off}, the
    139   1.8  christos environment variable @env{PYTHONDONTWRITEBYTECODE} is examined to see
    140   1.8  christos if it should write out byte-code or not.
    141   1.8  christos @env{PYTHONDONTWRITEBYTECODE} is considered to be off/disabled either
    142   1.8  christos when set to the empty string or when the environment variable doesn't
    143   1.8  christos exist.  All other settings, including those which don't seem to make
    144   1.8  christos sense, indicate that it's on/enabled.
    145   1.8  christos 
    146   1.8  christos This option is equivalent to passing @option{-B} to the real
    147   1.8  christos @command{python} executable.
    148   1.1  christos @end table
    149   1.1  christos 
    150   1.1  christos It is also possible to execute a Python script from the @value{GDBN}
    151   1.1  christos interpreter:
    152   1.1  christos 
    153   1.1  christos @table @code
    154   1.1  christos @item source @file{script-name}
    155   1.1  christos The script name must end with @samp{.py} and @value{GDBN} must be configured
    156   1.1  christos to recognize the script language based on filename extension using
    157   1.1  christos the @code{script-extension} setting.  @xref{Extending GDB, ,Extending GDB}.
    158   1.1  christos @end table
    159   1.1  christos 
    160   1.8  christos The following commands are intended to help debug @value{GDBN} itself:
    161   1.8  christos 
    162   1.8  christos @table @code
    163   1.8  christos @kindex set debug py-breakpoint
    164   1.8  christos @kindex show debug py-breakpoint
    165   1.8  christos @item set debug py-breakpoint on@r{|}off
    166   1.8  christos @itemx show debug py-breakpoint
    167   1.8  christos When @samp{on}, @value{GDBN} prints debug messages related to the
    168   1.8  christos Python breakpoint API.  This is @samp{off} by default.
    169   1.8  christos 
    170   1.8  christos @kindex set debug py-unwind
    171   1.8  christos @kindex show debug py-unwind
    172   1.8  christos @item set debug py-unwind on@r{|}off
    173   1.8  christos @itemx show debug py-unwind
    174   1.8  christos When @samp{on}, @value{GDBN} prints debug messages related to the
    175   1.8  christos Python unwinder API.  This is @samp{off} by default.
    176   1.8  christos @end table
    177   1.8  christos 
    178   1.1  christos @node Python API
    179   1.1  christos @subsection Python API
    180   1.1  christos @cindex python api
    181   1.1  christos @cindex programming in python
    182   1.1  christos 
    183   1.1  christos You can get quick online help for @value{GDBN}'s Python API by issuing
    184   1.1  christos the command @w{@kbd{python help (gdb)}}.
    185   1.1  christos 
    186   1.1  christos Functions and methods which have two or more optional arguments allow
    187   1.1  christos them to be specified using keyword syntax.  This allows passing some
    188   1.1  christos optional arguments while skipping others.  Example:
    189   1.1  christos @w{@code{gdb.some_function ('foo', bar = 1, baz = 2)}}.
    190   1.1  christos 
    191   1.1  christos @menu
    192   1.1  christos * Basic Python::                Basic Python Functions.
    193   1.9  christos * Threading in GDB::		Using Python threads in GDB.
    194   1.1  christos * Exception Handling::          How Python exceptions are translated.
    195   1.1  christos * Values From Inferior::        Python representation of values.
    196   1.1  christos * Types In Python::             Python representation of types.
    197   1.1  christos * Pretty Printing API::         Pretty-printing values.
    198   1.1  christos * Selecting Pretty-Printers::   How GDB chooses a pretty-printer.
    199   1.1  christos * Writing a Pretty-Printer::    Writing a Pretty-Printer.
    200   1.9  christos * Type Printing API::           Pretty-printing types.
    201   1.1  christos * Frame Filter API::            Filtering Frames.
    202   1.1  christos * Frame Decorator API::         Decorating Frames.
    203   1.1  christos * Writing a Frame Filter::      Writing a Frame Filter.
    204   1.3  christos * Unwinding Frames in Python::  Writing frame unwinder.
    205   1.1  christos * Xmethods In Python::          Adding and replacing methods of C++ classes.
    206   1.1  christos * Xmethod API::                 Xmethod types.
    207   1.1  christos * Writing an Xmethod::          Writing an xmethod.
    208   1.1  christos * Inferiors In Python::         Python representation of inferiors (processes)
    209   1.1  christos * Events In Python::            Listening for events from @value{GDBN}.
    210   1.1  christos * Threads In Python::           Accessing inferior threads from Python.
    211   1.5  christos * Recordings In Python::        Accessing recordings from Python.
    212   1.8  christos * CLI Commands In Python::      Implementing new CLI commands in Python.
    213   1.9  christos * GDB/MI Commands In Python::   Implementing new @sc{gdb/mi} commands in Python.
    214   1.9  christos * GDB/MI Notifications In Python:: Implementing new @sc{gdb/mi} notifications in Python.
    215   1.1  christos * Parameters In Python::        Adding new @value{GDBN} parameters.
    216   1.1  christos * Functions In Python::         Writing new convenience functions.
    217   1.1  christos * Progspaces In Python::        Program spaces.
    218   1.1  christos * Objfiles In Python::          Object files.
    219   1.1  christos * Frames In Python::            Accessing inferior stack frames from Python.
    220   1.1  christos * Blocks In Python::            Accessing blocks from Python.
    221   1.1  christos * Symbols In Python::           Python representation of symbols.
    222   1.1  christos * Symbol Tables In Python::     Python representation of symbol tables.
    223   1.1  christos * Line Tables In Python::       Python representation of line tables.
    224   1.1  christos * Breakpoints In Python::       Manipulating breakpoints using Python.
    225   1.1  christos * Finish Breakpoints in Python:: Setting Breakpoints on function return
    226   1.1  christos                                 using Python.
    227   1.1  christos * Lazy Strings In Python::      Python representation of lazy strings.
    228   1.1  christos * Architectures In Python::     Python representation of architectures.
    229   1.7  christos * Registers In Python::         Python representation of registers.
    230   1.9  christos * Connections In Python::       Python representation of connections.
    231   1.7  christos * TUI Windows In Python::       Implementing new TUI windows.
    232   1.8  christos * Disassembly In Python::       Instruction Disassembly In Python
    233   1.9  christos * Missing Debug Info In Python:: Handle missing debug info from Python.
    234  1.10  christos * Missing Objfiles In Python::  Handle objfiles from Python.
    235   1.1  christos @end menu
    236   1.1  christos 
    237   1.1  christos @node Basic Python
    238   1.1  christos @subsubsection Basic Python
    239   1.1  christos 
    240   1.1  christos @cindex python stdout
    241   1.1  christos @cindex python pagination
    242   1.1  christos At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
    243   1.1  christos @code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
    244   1.1  christos A Python program which outputs to one of these streams may have its
    245   1.1  christos output interrupted by the user (@pxref{Screen Size}).  In this
    246   1.1  christos situation, a Python @code{KeyboardInterrupt} exception is thrown.
    247   1.1  christos 
    248   1.1  christos Some care must be taken when writing Python code to run in
    249   1.1  christos @value{GDBN}.  Two things worth noting in particular:
    250   1.1  christos 
    251   1.1  christos @itemize @bullet
    252   1.1  christos @item
    253   1.9  christos @value{GDBN} installs handlers for @code{SIGCHLD} and @code{SIGINT}.
    254   1.1  christos Python code must not override these, or even change the options using
    255   1.1  christos @code{sigaction}.  If your program changes the handling of these
    256   1.1  christos signals, @value{GDBN} will most likely stop working correctly.  Note
    257   1.1  christos that it is unfortunately common for GUI toolkits to install a
    258   1.9  christos @code{SIGCHLD} handler.  When creating a new Python thread, you can
    259   1.9  christos use @code{gdb.block_signals} or @code{gdb.Thread} to handle this
    260   1.9  christos correctly; see @ref{Threading in GDB}.
    261   1.1  christos 
    262   1.1  christos @item
    263   1.1  christos @value{GDBN} takes care to mark its internal file descriptors as
    264   1.1  christos close-on-exec.  However, this cannot be done in a thread-safe way on
    265   1.1  christos all platforms.  Your Python programs should be aware of this and
    266   1.1  christos should both create new file descriptors with the close-on-exec flag
    267   1.1  christos set and arrange to close unneeded file descriptors before starting a
    268   1.1  christos child process.
    269   1.1  christos @end itemize
    270   1.1  christos 
    271   1.1  christos @cindex python functions
    272   1.1  christos @cindex python module
    273   1.1  christos @cindex gdb module
    274   1.1  christos @value{GDBN} introduces a new Python module, named @code{gdb}.  All
    275   1.1  christos methods and classes added by @value{GDBN} are placed in this module.
    276   1.1  christos @value{GDBN} automatically @code{import}s the @code{gdb} module for
    277   1.1  christos use in all scripts evaluated by the @code{python} command.
    278   1.1  christos 
    279   1.6  christos Some types of the @code{gdb} module come with a textual representation
    280   1.6  christos (accessible through the @code{repr} or @code{str} functions).  These are
    281   1.6  christos offered for debugging purposes only, expect them to change over time.
    282   1.6  christos 
    283   1.1  christos @defvar gdb.PYTHONDIR
    284   1.1  christos A string containing the python directory (@pxref{Python}).
    285   1.1  christos @end defvar
    286   1.1  christos 
    287   1.1  christos @defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
    288   1.1  christos Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
    289   1.1  christos If a GDB exception happens while @var{command} runs, it is
    290   1.1  christos translated as described in @ref{Exception Handling,,Exception Handling}.
    291   1.1  christos 
    292   1.1  christos The @var{from_tty} flag specifies whether @value{GDBN} ought to consider this
    293   1.1  christos command as having originated from the user invoking it interactively.
    294   1.1  christos It must be a boolean value.  If omitted, it defaults to @code{False}.
    295   1.1  christos 
    296   1.1  christos By default, any output produced by @var{command} is sent to
    297   1.1  christos @value{GDBN}'s standard output (and to the log output if logging is
    298   1.1  christos turned on).  If the @var{to_string} parameter is
    299   1.1  christos @code{True}, then output will be collected by @code{gdb.execute} and
    300   1.1  christos returned as a string.  The default is @code{False}, in which case the
    301   1.1  christos return value is @code{None}.  If @var{to_string} is @code{True}, the
    302   1.1  christos @value{GDBN} virtual terminal will be temporarily set to unlimited width
    303   1.1  christos and height, and its pagination will be disabled; @pxref{Screen Size}.
    304   1.1  christos @end defun
    305   1.1  christos 
    306   1.1  christos @defun gdb.breakpoints ()
    307   1.1  christos Return a sequence holding all of @value{GDBN}'s breakpoints.
    308   1.4  christos @xref{Breakpoints In Python}, for more information.  In @value{GDBN}
    309   1.4  christos version 7.11 and earlier, this function returned @code{None} if there
    310   1.4  christos were no breakpoints.  This peculiarity was subsequently fixed, and now
    311   1.4  christos @code{gdb.breakpoints} returns an empty sequence in this case.
    312   1.1  christos @end defun
    313   1.1  christos 
    314   1.6  christos @defun gdb.rbreak (regex @r{[}, minsyms @r{[}, throttle, @r{[}, symtabs @r{]]]})
    315   1.6  christos Return a Python list holding a collection of newly set
    316   1.6  christos @code{gdb.Breakpoint} objects matching function names defined by the
    317   1.6  christos @var{regex} pattern.  If the @var{minsyms} keyword is @code{True}, all
    318   1.6  christos system functions (those not explicitly defined in the inferior) will
    319   1.6  christos also be included in the match.  The @var{throttle} keyword takes an
    320   1.6  christos integer that defines the maximum number of pattern matches for
    321   1.6  christos functions matched by the @var{regex} pattern.  If the number of
    322   1.6  christos matches exceeds the integer value of @var{throttle}, a
    323   1.6  christos @code{RuntimeError} will be raised and no breakpoints will be created.
    324   1.6  christos If @var{throttle} is not defined then there is no imposed limit on the
    325   1.6  christos maximum number of matches and breakpoints to be created.  The
    326   1.6  christos @var{symtabs} keyword takes a Python iterable that yields a collection
    327   1.6  christos of @code{gdb.Symtab} objects and will restrict the search to those
    328   1.6  christos functions only contained within the @code{gdb.Symtab} objects.
    329   1.6  christos @end defun
    330   1.6  christos 
    331   1.1  christos @defun gdb.parameter (parameter)
    332   1.1  christos Return the value of a @value{GDBN} @var{parameter} given by its name,
    333   1.1  christos a string; the parameter name string may contain spaces if the parameter has a
    334   1.1  christos multi-part name.  For example, @samp{print object} is a valid
    335   1.1  christos parameter name.
    336   1.1  christos 
    337   1.1  christos If the named parameter does not exist, this function throws a
    338   1.1  christos @code{gdb.error} (@pxref{Exception Handling}).  Otherwise, the
    339   1.1  christos parameter's value is converted to a Python value of the appropriate
    340   1.1  christos type, and returned.
    341   1.1  christos @end defun
    342   1.1  christos 
    343   1.8  christos @defun gdb.set_parameter (name, value)
    344   1.8  christos Sets the gdb parameter @var{name} to @var{value}.  As with
    345   1.8  christos @code{gdb.parameter}, the parameter name string may contain spaces if
    346   1.8  christos the parameter has a multi-part name.
    347   1.8  christos @end defun
    348   1.8  christos 
    349   1.8  christos @defun gdb.with_parameter (name, value)
    350   1.8  christos Create a Python context manager (for use with the Python
    351   1.8  christos @command{with} statement) that temporarily sets the gdb parameter
    352   1.8  christos @var{name} to @var{value}.  On exit from the context, the previous
    353   1.8  christos value will be restored.
    354   1.8  christos 
    355   1.8  christos This uses @code{gdb.parameter} in its implementation, so it can throw
    356   1.8  christos the same exceptions as that function.
    357   1.8  christos 
    358   1.8  christos For example, it's sometimes useful to evaluate some Python code with a
    359   1.8  christos particular gdb language:
    360   1.8  christos 
    361   1.8  christos @smallexample
    362   1.8  christos with gdb.with_parameter('language', 'pascal'):
    363   1.8  christos   ... language-specific operations
    364   1.8  christos @end smallexample
    365   1.8  christos @end defun
    366   1.8  christos 
    367   1.1  christos @defun gdb.history (number)
    368   1.1  christos Return a value from @value{GDBN}'s value history (@pxref{Value
    369   1.1  christos History}).  The @var{number} argument indicates which history element to return.
    370   1.1  christos If @var{number} is negative, then @value{GDBN} will take its absolute value
    371   1.1  christos and count backward from the last element (i.e., the most recent element) to
    372   1.1  christos find the value to return.  If @var{number} is zero, then @value{GDBN} will
    373   1.1  christos return the most recent element.  If the element specified by @var{number}
    374   1.1  christos doesn't exist in the value history, a @code{gdb.error} exception will be
    375   1.1  christos raised.
    376   1.1  christos 
    377   1.1  christos If no exception is raised, the return value is always an instance of
    378   1.1  christos @code{gdb.Value} (@pxref{Values From Inferior}).
    379   1.1  christos @end defun
    380   1.1  christos 
    381   1.8  christos @defun gdb.add_history (value)
    382   1.8  christos Takes @var{value}, an instance of @code{gdb.Value} (@pxref{Values From
    383   1.8  christos Inferior}), and appends the value this object represents to
    384   1.8  christos @value{GDBN}'s value history (@pxref{Value History}), and return an
    385   1.8  christos integer, its history number.  If @var{value} is not a
    386   1.8  christos @code{gdb.Value}, it is is converted using the @code{gdb.Value}
    387   1.8  christos constructor.  If @var{value} can't be converted to a @code{gdb.Value}
    388   1.8  christos then a @code{TypeError} is raised.
    389   1.8  christos 
    390   1.8  christos When a command implemented in Python prints a single @code{gdb.Value}
    391   1.8  christos as its result, then placing the value into the history will allow the
    392   1.8  christos user convenient access to those values via CLI history facilities.
    393   1.8  christos @end defun
    394   1.8  christos 
    395   1.8  christos @defun gdb.history_count ()
    396   1.8  christos Return an integer indicating the number of values in @value{GDBN}'s
    397   1.8  christos value history (@pxref{Value History}).
    398   1.8  christos @end defun
    399   1.8  christos 
    400   1.6  christos @defun gdb.convenience_variable (name)
    401   1.6  christos Return the value of the convenience variable (@pxref{Convenience
    402   1.6  christos Vars}) named @var{name}.  @var{name} must be a string.  The name
    403   1.6  christos should not include the @samp{$} that is used to mark a convenience
    404   1.6  christos variable in an expression.  If the convenience variable does not
    405   1.6  christos exist, then @code{None} is returned.
    406   1.6  christos @end defun
    407   1.6  christos 
    408   1.6  christos @defun gdb.set_convenience_variable (name, value)
    409   1.6  christos Set the value of the convenience variable (@pxref{Convenience Vars})
    410   1.6  christos named @var{name}.  @var{name} must be a string.  The name should not
    411   1.6  christos include the @samp{$} that is used to mark a convenience variable in an
    412   1.6  christos expression.  If @var{value} is @code{None}, then the convenience
    413   1.6  christos variable is removed.  Otherwise, if @var{value} is not a
    414   1.6  christos @code{gdb.Value} (@pxref{Values From Inferior}), it is is converted
    415   1.6  christos using the @code{gdb.Value} constructor.
    416   1.6  christos @end defun
    417   1.6  christos 
    418   1.9  christos @defun gdb.parse_and_eval (expression @r{[}, global_context@r{]})
    419   1.1  christos Parse @var{expression}, which must be a string, as an expression in
    420   1.1  christos the current language, evaluate it, and return the result as a
    421   1.1  christos @code{gdb.Value}.
    422   1.1  christos 
    423   1.9  christos @var{global_context}, if provided, is a boolean indicating whether the
    424   1.9  christos parsing should be done in the global context.  The default is
    425   1.9  christos @samp{False}, meaning that the current frame or current static context
    426   1.9  christos should be used.
    427   1.9  christos 
    428   1.1  christos This function can be useful when implementing a new command
    429   1.8  christos (@pxref{CLI Commands In Python}, @pxref{GDB/MI Commands In Python}),
    430   1.8  christos as it provides a way to parse the
    431   1.1  christos command's argument as an expression.  It is also useful simply to
    432   1.6  christos compute values.
    433   1.1  christos @end defun
    434   1.1  christos 
    435   1.1  christos @defun gdb.find_pc_line (pc)
    436   1.1  christos Return the @code{gdb.Symtab_and_line} object corresponding to the
    437   1.1  christos @var{pc} value.  @xref{Symbol Tables In Python}.  If an invalid
    438   1.1  christos value of @var{pc} is passed as an argument, then the @code{symtab} and
    439   1.1  christos @code{line} attributes of the returned @code{gdb.Symtab_and_line} object
    440   1.6  christos will be @code{None} and 0 respectively.  This is identical to
    441   1.6  christos @code{gdb.current_progspace().find_pc_line(pc)} and is included for
    442   1.6  christos historical compatibility.
    443   1.1  christos @end defun
    444   1.1  christos 
    445   1.8  christos @defun gdb.write (string @r{[}, stream@r{]})
    446   1.1  christos Print a string to @value{GDBN}'s paginated output stream.  The
    447   1.1  christos optional @var{stream} determines the stream to print to.  The default
    448   1.1  christos stream is @value{GDBN}'s standard output stream.  Possible stream
    449   1.1  christos values are:
    450   1.1  christos 
    451   1.1  christos @table @code
    452   1.1  christos @findex STDOUT
    453   1.1  christos @findex gdb.STDOUT
    454   1.1  christos @item gdb.STDOUT
    455   1.1  christos @value{GDBN}'s standard output stream.
    456   1.1  christos 
    457   1.1  christos @findex STDERR
    458   1.1  christos @findex gdb.STDERR
    459   1.1  christos @item gdb.STDERR
    460   1.1  christos @value{GDBN}'s standard error stream.
    461   1.1  christos 
    462   1.1  christos @findex STDLOG
    463   1.1  christos @findex gdb.STDLOG
    464   1.1  christos @item gdb.STDLOG
    465   1.1  christos @value{GDBN}'s log stream (@pxref{Logging Output}).
    466   1.1  christos @end table
    467   1.1  christos 
    468   1.1  christos Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
    469   1.1  christos call this function and will automatically direct the output to the
    470   1.1  christos relevant stream.
    471   1.1  christos @end defun
    472   1.1  christos 
    473   1.8  christos @defun gdb.flush (@r{[}, stream@r{]})
    474   1.1  christos Flush the buffer of a @value{GDBN} paginated stream so that the
    475   1.1  christos contents are displayed immediately.  @value{GDBN} will flush the
    476   1.1  christos contents of a stream automatically when it encounters a newline in the
    477   1.1  christos buffer.  The optional @var{stream} determines the stream to flush.  The
    478   1.1  christos default stream is @value{GDBN}'s standard output stream.  Possible
    479   1.1  christos stream values are: 
    480   1.1  christos 
    481   1.1  christos @table @code
    482   1.1  christos @findex STDOUT
    483   1.1  christos @findex gdb.STDOUT
    484   1.1  christos @item gdb.STDOUT
    485   1.1  christos @value{GDBN}'s standard output stream.
    486   1.1  christos 
    487   1.1  christos @findex STDERR
    488   1.1  christos @findex gdb.STDERR
    489   1.1  christos @item gdb.STDERR
    490   1.1  christos @value{GDBN}'s standard error stream.
    491   1.1  christos 
    492   1.1  christos @findex STDLOG
    493   1.1  christos @findex gdb.STDLOG
    494   1.1  christos @item gdb.STDLOG
    495   1.1  christos @value{GDBN}'s log stream (@pxref{Logging Output}).
    496   1.1  christos 
    497   1.1  christos @end table
    498   1.1  christos 
    499   1.1  christos Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
    500   1.1  christos call this function for the relevant stream.
    501   1.1  christos @end defun
    502   1.1  christos 
    503   1.1  christos @defun gdb.target_charset ()
    504   1.1  christos Return the name of the current target character set (@pxref{Character
    505   1.1  christos Sets}).  This differs from @code{gdb.parameter('target-charset')} in
    506   1.1  christos that @samp{auto} is never returned.
    507   1.1  christos @end defun
    508   1.1  christos 
    509   1.1  christos @defun gdb.target_wide_charset ()
    510   1.1  christos Return the name of the current target wide character set
    511   1.1  christos (@pxref{Character Sets}).  This differs from
    512   1.1  christos @code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
    513   1.1  christos never returned.
    514   1.1  christos @end defun
    515   1.1  christos 
    516   1.8  christos @defun gdb.host_charset ()
    517   1.8  christos Return a string, the name of the current host character set
    518   1.8  christos (@pxref{Character Sets}).  This differs from
    519   1.8  christos @code{gdb.parameter('host-charset')} in that @samp{auto} is never
    520   1.8  christos returned.
    521   1.8  christos @end defun
    522   1.8  christos 
    523   1.1  christos @defun gdb.solib_name (address)
    524   1.1  christos Return the name of the shared library holding the given @var{address}
    525   1.6  christos as a string, or @code{None}.  This is identical to
    526   1.6  christos @code{gdb.current_progspace().solib_name(address)} and is included for
    527   1.6  christos historical compatibility.
    528   1.1  christos @end defun
    529   1.1  christos 
    530   1.6  christos @defun gdb.decode_line (@r{[}expression@r{]})
    531   1.1  christos Return locations of the line specified by @var{expression}, or of the
    532   1.1  christos current line if no argument was given.  This function returns a Python
    533   1.1  christos tuple containing two elements.  The first element contains a string
    534   1.1  christos holding any unparsed section of @var{expression} (or @code{None} if
    535   1.1  christos the expression has been fully parsed).  The second element contains
    536   1.1  christos either @code{None} or another tuple that contains all the locations
    537   1.1  christos that match the expression represented as @code{gdb.Symtab_and_line}
    538   1.1  christos objects (@pxref{Symbol Tables In Python}).  If @var{expression} is
    539   1.1  christos provided, it is decoded the way that @value{GDBN}'s inbuilt
    540   1.8  christos @code{break} or @code{edit} commands do (@pxref{Location
    541   1.8  christos Specifications}).
    542   1.1  christos @end defun
    543   1.1  christos 
    544   1.1  christos @defun gdb.prompt_hook (current_prompt)
    545   1.1  christos @anchor{prompt_hook}
    546   1.1  christos 
    547   1.1  christos If @var{prompt_hook} is callable, @value{GDBN} will call the method
    548   1.1  christos assigned to this operation before a prompt is displayed by
    549   1.1  christos @value{GDBN}.
    550   1.1  christos 
    551   1.1  christos The parameter @code{current_prompt} contains the current @value{GDBN} 
    552   1.1  christos prompt.  This method must return a Python string, or @code{None}.  If
    553   1.1  christos a string is returned, the @value{GDBN} prompt will be set to that
    554   1.1  christos string.  If @code{None} is returned, @value{GDBN} will continue to use
    555   1.1  christos the current prompt.
    556   1.1  christos 
    557   1.1  christos Some prompts cannot be substituted in @value{GDBN}.  Secondary prompts
    558   1.1  christos such as those used by readline for command input, and annotation
    559   1.1  christos related prompts are prohibited from being changed.
    560   1.1  christos @end defun
    561   1.1  christos 
    562   1.8  christos @anchor{gdb_architecture_names}
    563   1.8  christos @defun gdb.architecture_names ()
    564   1.8  christos Return a list containing all of the architecture names that the
    565   1.8  christos current build of @value{GDBN} supports.  Each architecture name is a
    566   1.8  christos string.  The names returned in this list are the same names as are
    567   1.8  christos returned from @code{gdb.Architecture.name}
    568   1.8  christos (@pxref{gdbpy_architecture_name,,Architecture.name}).
    569   1.8  christos @end defun
    570   1.8  christos 
    571   1.8  christos @anchor{gdbpy_connections}
    572   1.8  christos @defun gdb.connections
    573   1.8  christos Return a list of @code{gdb.TargetConnection} objects, one for each
    574   1.8  christos currently active connection (@pxref{Connections In Python}).  The
    575   1.8  christos connection objects are in no particular order in the returned list.
    576   1.8  christos @end defun
    577   1.8  christos 
    578   1.9  christos @defun gdb.format_address (address @r{[}, progspace, architecture@r{]})
    579   1.8  christos Return a string in the format @samp{@var{addr}
    580   1.8  christos <@var{symbol}+@var{offset}>}, where @var{addr} is @var{address}
    581   1.8  christos formatted in hexadecimal, @var{symbol} is the symbol whose address is
    582   1.8  christos the nearest to @var{address} and below it in memory, and @var{offset}
    583   1.8  christos is the offset from @var{symbol} to @var{address} in decimal.
    584   1.8  christos 
    585   1.8  christos If no suitable @var{symbol} was found, then the
    586   1.8  christos <@var{symbol}+@var{offset}> part is not included in the returned
    587   1.8  christos string, instead the returned string will just contain the
    588   1.8  christos @var{address} formatted as hexadecimal.  How far @value{GDBN} looks
    589   1.8  christos back for a suitable symbol can be controlled with @kbd{set print
    590   1.8  christos max-symbolic-offset} (@pxref{Print Settings}).
    591   1.8  christos 
    592   1.8  christos Additionally, the returned string can include file name and line
    593   1.8  christos number information when @kbd{set print symbol-filename on}
    594   1.8  christos (@pxref{Print Settings}), in this case the format of the returned
    595   1.8  christos string is @samp{@var{addr} <@var{symbol}+@var{offset}> at
    596   1.8  christos @var{filename}:@var{line-number}}.
    597   1.8  christos 
    598   1.8  christos 
    599   1.8  christos The @var{progspace} is the gdb.Progspace in which @var{symbol} is
    600   1.8  christos looked up, and @var{architecture} is used when formatting @var{addr},
    601   1.8  christos e.g.@: in order to determine the size of an address in bytes.
    602   1.8  christos 
    603   1.8  christos If neither @var{progspace} or @var{architecture} are passed, then by
    604   1.8  christos default @value{GDBN} will use the program space and architecture of
    605   1.8  christos the currently selected inferior, thus, the following two calls are
    606   1.8  christos equivalent:
    607   1.8  christos 
    608   1.8  christos @smallexample
    609   1.8  christos gdb.format_address(address)
    610   1.8  christos gdb.format_address(address,
    611   1.8  christos                    gdb.selected_inferior().progspace,
    612   1.8  christos                    gdb.selected_inferior().architecture())
    613   1.8  christos @end smallexample
    614   1.8  christos 
    615   1.8  christos It is not valid to only pass one of @var{progspace} or
    616   1.8  christos @var{architecture}, either they must both be provided, or neither must
    617   1.8  christos be provided (and the defaults will be used).
    618   1.8  christos 
    619   1.8  christos This method uses the same mechanism for formatting address, symbol,
    620   1.8  christos and offset information as core @value{GDBN} does in commands such as
    621   1.8  christos @kbd{disassemble}.
    622   1.8  christos 
    623   1.8  christos Here are some examples of the possible string formats:
    624   1.8  christos 
    625   1.8  christos @smallexample
    626   1.8  christos 0x00001042
    627   1.8  christos 0x00001042 <symbol+16>
    628   1.8  christos 0x00001042 <symbol+16 at file.c:123>
    629   1.8  christos @end smallexample
    630   1.8  christos @end defun
    631   1.8  christos 
    632   1.8  christos @defun gdb.current_language ()
    633   1.8  christos Return the name of the current language as a string.  Unlike
    634   1.8  christos @code{gdb.parameter('language')}, this function will never return
    635   1.8  christos @samp{auto}.  If a @code{gdb.Frame} object is available (@pxref{Frames
    636   1.8  christos In Python}), the @code{language} method might be preferable in some
    637   1.8  christos cases, as that is not affected by the user's language setting.
    638   1.8  christos @end defun
    639   1.8  christos 
    640   1.9  christos @node Threading in GDB
    641   1.9  christos @subsubsection Threading in GDB
    642   1.9  christos 
    643   1.9  christos @value{GDBN} is not thread-safe.  If your Python program uses multiple
    644   1.9  christos threads, you must be careful to only call @value{GDBN}-specific
    645   1.9  christos functions in the @value{GDBN} thread.  @value{GDBN} provides some
    646   1.9  christos functions to help with this.
    647   1.9  christos 
    648   1.9  christos @defun gdb.block_signals ()
    649   1.9  christos As mentioned earlier (@pxref{Basic Python}), certain signals must be
    650   1.9  christos delivered to the @value{GDBN} main thread.  The @code{block_signals}
    651   1.9  christos function returns a context manager that will block these signals on
    652   1.9  christos entry.  This can be used when starting a new thread to ensure that the
    653   1.9  christos signals are blocked there, like:
    654   1.9  christos 
    655   1.9  christos @smallexample
    656   1.9  christos with gdb.block_signals():
    657   1.9  christos    start_new_thread()
    658   1.9  christos @end smallexample
    659   1.9  christos @end defun
    660   1.9  christos 
    661   1.9  christos @deftp {class} gdb.Thread
    662   1.9  christos This is a subclass of Python's @code{threading.Thread} class.  It
    663   1.9  christos overrides the @code{start} method to call @code{block_signals}, making
    664   1.9  christos this an easy-to-use drop-in replacement for creating threads that will
    665   1.9  christos work well in @value{GDBN}.
    666   1.9  christos @end deftp
    667   1.9  christos 
    668   1.9  christos @defun gdb.interrupt ()
    669   1.9  christos This causes @value{GDBN} to react as if the user had typed a control-C
    670   1.9  christos character at the terminal.  That is, if the inferior is running, it is
    671   1.9  christos interrupted; if a @value{GDBN} command is executing, it is stopped;
    672   1.9  christos and if a Python command is running, @code{KeyboardInterrupt} will be
    673   1.9  christos raised.
    674   1.9  christos 
    675   1.9  christos Unlike most Python APIs in @value{GDBN}, @code{interrupt} is
    676   1.9  christos thread-safe.
    677   1.9  christos @end defun
    678   1.9  christos 
    679   1.9  christos @defun gdb.post_event (event)
    680   1.9  christos Put @var{event}, a callable object taking no arguments, into
    681   1.9  christos @value{GDBN}'s internal event queue.  This callable will be invoked at
    682   1.9  christos some later point, during @value{GDBN}'s event processing.  Events
    683   1.9  christos posted using @code{post_event} will be run in the order in which they
    684   1.9  christos were posted; however, there is no way to know when they will be
    685   1.9  christos processed relative to other events inside @value{GDBN}.
    686   1.9  christos 
    687   1.9  christos Unlike most Python APIs in @value{GDBN}, @code{post_event} is
    688   1.9  christos thread-safe.  For example:
    689   1.9  christos 
    690   1.9  christos @smallexample
    691   1.9  christos (@value{GDBP}) python
    692   1.9  christos >import threading
    693   1.9  christos >
    694   1.9  christos >class Writer():
    695   1.9  christos > def __init__(self, message):
    696   1.9  christos >        self.message = message;
    697   1.9  christos > def __call__(self):
    698   1.9  christos >        gdb.write(self.message)
    699   1.9  christos >
    700   1.9  christos >class MyThread1 (threading.Thread):
    701   1.9  christos > def run (self):
    702   1.9  christos >        gdb.post_event(Writer("Hello "))
    703   1.9  christos >
    704   1.9  christos >class MyThread2 (threading.Thread):
    705   1.9  christos > def run (self):
    706   1.9  christos >        gdb.post_event(Writer("World\n"))
    707   1.9  christos >
    708   1.9  christos >MyThread1().start()
    709   1.9  christos >MyThread2().start()
    710   1.9  christos >end
    711   1.9  christos (@value{GDBP}) Hello World
    712   1.9  christos @end smallexample
    713   1.9  christos @end defun
    714   1.9  christos 
    715   1.9  christos 
    716   1.1  christos @node Exception Handling
    717   1.1  christos @subsubsection Exception Handling
    718   1.1  christos @cindex python exceptions
    719   1.1  christos @cindex exceptions, python
    720   1.1  christos 
    721   1.1  christos When executing the @code{python} command, Python exceptions
    722   1.1  christos uncaught within the Python code are translated to calls to
    723   1.1  christos @value{GDBN} error-reporting mechanism.  If the command that called
    724   1.1  christos @code{python} does not handle the error, @value{GDBN} will
    725   1.9  christos terminate it and print an error message.  Exactly what will be printed
    726   1.9  christos depends on @code{set python print-stack} (@pxref{Python Commands}).
    727   1.9  christos Example:
    728   1.1  christos 
    729   1.1  christos @smallexample
    730   1.1  christos (@value{GDBP}) python print foo
    731   1.1  christos Traceback (most recent call last):
    732   1.1  christos   File "<string>", line 1, in <module>
    733   1.1  christos NameError: name 'foo' is not defined
    734   1.1  christos @end smallexample
    735   1.1  christos 
    736   1.1  christos @value{GDBN} errors that happen in @value{GDBN} commands invoked by
    737   1.1  christos Python code are converted to Python exceptions.  The type of the
    738   1.1  christos Python exception depends on the error.
    739   1.1  christos 
    740   1.1  christos @ftable @code
    741   1.1  christos @item gdb.error
    742   1.1  christos This is the base class for most exceptions generated by @value{GDBN}.
    743   1.1  christos It is derived from @code{RuntimeError}, for compatibility with earlier
    744   1.1  christos versions of @value{GDBN}.
    745   1.1  christos 
    746   1.1  christos If an error occurring in @value{GDBN} does not fit into some more
    747   1.1  christos specific category, then the generated exception will have this type.
    748   1.1  christos 
    749   1.1  christos @item gdb.MemoryError
    750   1.1  christos This is a subclass of @code{gdb.error} which is thrown when an
    751   1.1  christos operation tried to access invalid memory in the inferior.
    752   1.1  christos 
    753   1.1  christos @item KeyboardInterrupt
    754   1.1  christos User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
    755   1.1  christos prompt) is translated to a Python @code{KeyboardInterrupt} exception.
    756   1.1  christos @end ftable
    757   1.1  christos 
    758   1.1  christos In all cases, your exception handler will see the @value{GDBN} error
    759   1.1  christos message as its value and the Python call stack backtrace at the Python
    760   1.9  christos statement closest to where the @value{GDBN} error occurred as the
    761   1.1  christos traceback.
    762   1.1  christos 
    763   1.6  christos 
    764   1.6  christos When implementing @value{GDBN} commands in Python via
    765   1.6  christos @code{gdb.Command}, or functions via @code{gdb.Function}, it is useful
    766   1.6  christos to be able to throw an exception that doesn't cause a traceback to be
    767   1.6  christos printed.  For example, the user may have invoked the command
    768   1.6  christos incorrectly.  @value{GDBN} provides a special exception class that can
    769   1.6  christos be used for this purpose.
    770   1.6  christos 
    771   1.6  christos @ftable @code
    772   1.6  christos @item gdb.GdbError
    773   1.6  christos When thrown from a command or function, this exception will cause the
    774   1.6  christos command or function to fail, but the Python stack will not be
    775   1.6  christos displayed.  @value{GDBN} does not throw this exception itself, but
    776   1.6  christos rather recognizes it when thrown from user Python code.  Example:
    777   1.1  christos 
    778   1.1  christos @smallexample
    779   1.1  christos (gdb) python
    780   1.1  christos >class HelloWorld (gdb.Command):
    781   1.1  christos >  """Greet the whole world."""
    782   1.1  christos >  def __init__ (self):
    783   1.1  christos >    super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
    784   1.1  christos >  def invoke (self, args, from_tty):
    785   1.1  christos >    argv = gdb.string_to_argv (args)
    786   1.1  christos >    if len (argv) != 0:
    787   1.1  christos >      raise gdb.GdbError ("hello-world takes no arguments")
    788   1.8  christos >    print ("Hello, World!")
    789   1.1  christos >HelloWorld ()
    790   1.1  christos >end
    791   1.1  christos (gdb) hello-world 42
    792   1.1  christos hello-world takes no arguments
    793   1.1  christos @end smallexample
    794   1.6  christos @end ftable
    795   1.1  christos 
    796   1.1  christos @node Values From Inferior
    797   1.1  christos @subsubsection Values From Inferior
    798   1.1  christos @cindex values from inferior, with Python
    799   1.1  christos @cindex python, working with values from inferior
    800   1.1  christos 
    801   1.1  christos @cindex @code{gdb.Value}
    802   1.1  christos @value{GDBN} provides values it obtains from the inferior program in
    803   1.1  christos an object of type @code{gdb.Value}.  @value{GDBN} uses this object
    804   1.1  christos for its internal bookkeeping of the inferior's values, and for
    805   1.1  christos fetching values when necessary.
    806   1.1  christos 
    807   1.1  christos Inferior values that are simple scalars can be used directly in
    808   1.1  christos Python expressions that are valid for the value's data type.  Here's
    809   1.1  christos an example for an integer or floating-point value @code{some_val}:
    810   1.1  christos 
    811   1.1  christos @smallexample
    812   1.1  christos bar = some_val + 2
    813   1.1  christos @end smallexample
    814   1.1  christos 
    815   1.1  christos @noindent
    816   1.1  christos As result of this, @code{bar} will also be a @code{gdb.Value} object
    817   1.1  christos whose values are of the same type as those of @code{some_val}.  Valid
    818   1.1  christos Python operations can also be performed on @code{gdb.Value} objects
    819   1.1  christos representing a @code{struct} or @code{class} object.  For such cases,
    820   1.1  christos the overloaded operator (if present), is used to perform the operation.
    821   1.1  christos For example, if @code{val1} and @code{val2} are @code{gdb.Value} objects
    822   1.1  christos representing instances of a @code{class} which overloads the @code{+}
    823   1.1  christos operator, then one can use the @code{+} operator in their Python script
    824   1.1  christos as follows:
    825   1.1  christos 
    826   1.1  christos @smallexample
    827   1.1  christos val3 = val1 + val2
    828   1.1  christos @end smallexample
    829   1.1  christos 
    830   1.1  christos @noindent
    831   1.1  christos The result of the operation @code{val3} is also a @code{gdb.Value}
    832   1.1  christos object corresponding to the value returned by the overloaded @code{+}
    833   1.1  christos operator.  In general, overloaded operators are invoked for the
    834   1.1  christos following operations: @code{+} (binary addition), @code{-} (binary
    835   1.1  christos subtraction), @code{*} (multiplication), @code{/}, @code{%}, @code{<<},
    836   1.1  christos @code{>>}, @code{|}, @code{&}, @code{^}.
    837   1.1  christos 
    838   1.1  christos Inferior values that are structures or instances of some class can
    839   1.1  christos be accessed using the Python @dfn{dictionary syntax}.  For example, if
    840   1.1  christos @code{some_val} is a @code{gdb.Value} instance holding a structure, you
    841   1.1  christos can access its @code{foo} element with:
    842   1.1  christos 
    843   1.1  christos @smallexample
    844   1.1  christos bar = some_val['foo']
    845   1.1  christos @end smallexample
    846   1.1  christos 
    847   1.1  christos @cindex getting structure elements using gdb.Field objects as subscripts
    848   1.1  christos Again, @code{bar} will also be a @code{gdb.Value} object.  Structure
    849   1.1  christos elements can also be accessed by using @code{gdb.Field} objects as
    850   1.1  christos subscripts (@pxref{Types In Python}, for more information on
    851   1.1  christos @code{gdb.Field} objects).  For example, if @code{foo_field} is a
    852   1.1  christos @code{gdb.Field} object corresponding to element @code{foo} of the above
    853   1.1  christos structure, then @code{bar} can also be accessed as follows:
    854   1.1  christos 
    855   1.1  christos @smallexample
    856   1.1  christos bar = some_val[foo_field]
    857   1.1  christos @end smallexample
    858   1.1  christos 
    859   1.9  christos If a @code{gdb.Value} has array or pointer type, an integer index can
    860   1.9  christos be used to access elements.
    861   1.9  christos 
    862   1.9  christos @smallexample
    863   1.9  christos result = some_array[23]
    864   1.9  christos @end smallexample
    865   1.9  christos 
    866   1.1  christos A @code{gdb.Value} that represents a function can be executed via
    867   1.1  christos inferior function call.  Any arguments provided to the call must match
    868   1.1  christos the function's prototype, and must be provided in the order specified
    869   1.1  christos by that prototype.
    870   1.1  christos 
    871   1.1  christos For example, @code{some_val} is a @code{gdb.Value} instance
    872   1.1  christos representing a function that takes two integers as arguments.  To
    873   1.1  christos execute this function, call it like so:
    874   1.1  christos 
    875   1.1  christos @smallexample
    876   1.1  christos result = some_val (10,20)
    877   1.1  christos @end smallexample
    878   1.1  christos 
    879   1.1  christos Any values returned from a function call will be stored as a
    880   1.1  christos @code{gdb.Value}.
    881   1.1  christos 
    882   1.1  christos The following attributes are provided:
    883   1.1  christos 
    884   1.1  christos @defvar Value.address
    885   1.1  christos If this object is addressable, this read-only attribute holds a
    886   1.1  christos @code{gdb.Value} object representing the address.  Otherwise,
    887   1.1  christos this attribute holds @code{None}.
    888   1.1  christos @end defvar
    889   1.1  christos 
    890   1.1  christos @cindex optimized out value in Python
    891   1.1  christos @defvar Value.is_optimized_out
    892   1.1  christos This read-only boolean attribute is true if the compiler optimized out
    893   1.1  christos this value, thus it is not available for fetching from the inferior.
    894   1.1  christos @end defvar
    895   1.1  christos 
    896   1.1  christos @defvar Value.type
    897   1.1  christos The type of this @code{gdb.Value}.  The value of this attribute is a
    898   1.1  christos @code{gdb.Type} object (@pxref{Types In Python}).
    899   1.1  christos @end defvar
    900   1.1  christos 
    901   1.1  christos @defvar Value.dynamic_type
    902   1.6  christos The dynamic type of this @code{gdb.Value}.  This uses the object's
    903   1.6  christos virtual table and the C@t{++} run-time type information
    904   1.6  christos (@acronym{RTTI}) to determine the dynamic type of the value.  If this
    905   1.6  christos value is of class type, it will return the class in which the value is
    906   1.6  christos embedded, if any.  If this value is of pointer or reference to a class
    907   1.6  christos type, it will compute the dynamic type of the referenced object, and
    908   1.6  christos return a pointer or reference to that type, respectively.  In all
    909   1.6  christos other cases, it will return the value's static type.
    910   1.1  christos 
    911   1.1  christos Note that this feature will only work when debugging a C@t{++} program
    912   1.1  christos that includes @acronym{RTTI} for the object in question.  Otherwise,
    913   1.1  christos it will just return the static type of the value as in @kbd{ptype foo}
    914   1.1  christos (@pxref{Symbols, ptype}).
    915   1.1  christos @end defvar
    916   1.1  christos 
    917   1.1  christos @defvar Value.is_lazy
    918   1.1  christos The value of this read-only boolean attribute is @code{True} if this
    919   1.1  christos @code{gdb.Value} has not yet been fetched from the inferior.  
    920   1.1  christos @value{GDBN} does not fetch values until necessary, for efficiency.  
    921   1.1  christos For example:
    922   1.1  christos 
    923   1.1  christos @smallexample
    924   1.1  christos myval = gdb.parse_and_eval ('somevar')
    925   1.1  christos @end smallexample
    926   1.1  christos 
    927   1.1  christos The value of @code{somevar} is not fetched at this time.  It will be 
    928   1.1  christos fetched when the value is needed, or when the @code{fetch_lazy}
    929   1.1  christos method is invoked.  
    930   1.1  christos @end defvar
    931   1.1  christos 
    932   1.9  christos @defvar Value.bytes
    933   1.9  christos The value of this attribute is a @code{bytes} object containing the
    934   1.9  christos bytes that make up this @code{Value}'s complete value in little endian
    935   1.9  christos order.  If the complete contents of this value are not available then
    936   1.9  christos accessing this attribute will raise an exception.
    937   1.9  christos 
    938   1.9  christos This attribute can also be assigned to.  The new value should be a
    939   1.9  christos buffer object (e.g.@: a @code{bytes} object), the length of the new
    940   1.9  christos buffer must exactly match the length of this @code{Value}'s type.  The
    941   1.9  christos bytes values in the new buffer should be in little endian order.
    942   1.9  christos 
    943   1.9  christos As with @code{Value.assign} (@pxref{Value.assign}), if this value
    944   1.9  christos cannot be assigned to, then an exception will be thrown.
    945   1.9  christos @end defvar
    946   1.9  christos 
    947   1.1  christos The following methods are provided:
    948   1.1  christos 
    949   1.9  christos @defun Value.__init__ (val)
    950   1.1  christos Many Python values can be converted directly to a @code{gdb.Value} via
    951   1.1  christos this object initializer.  Specifically:
    952   1.1  christos 
    953   1.1  christos @table @asis
    954   1.1  christos @item Python boolean
    955   1.1  christos A Python boolean is converted to the boolean type from the current
    956   1.1  christos language.
    957   1.1  christos 
    958   1.1  christos @item Python integer
    959   1.1  christos A Python integer is converted to the C @code{long} type for the
    960   1.1  christos current architecture.
    961   1.1  christos 
    962   1.1  christos @item Python long
    963   1.1  christos A Python long is converted to the C @code{long long} type for the
    964   1.1  christos current architecture.
    965   1.1  christos 
    966   1.1  christos @item Python float
    967   1.1  christos A Python float is converted to the C @code{double} type for the
    968   1.1  christos current architecture.
    969   1.1  christos 
    970   1.1  christos @item Python string
    971   1.1  christos A Python string is converted to a target string in the current target
    972   1.1  christos language using the current target encoding.
    973   1.1  christos If a character cannot be represented in the current target encoding,
    974   1.1  christos then an exception is thrown.
    975   1.1  christos 
    976   1.1  christos @item @code{gdb.Value}
    977   1.1  christos If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
    978   1.1  christos 
    979   1.1  christos @item @code{gdb.LazyString}
    980   1.1  christos If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
    981   1.1  christos Python}), then the lazy string's @code{value} method is called, and
    982   1.1  christos its result is used.
    983   1.1  christos @end table
    984   1.1  christos @end defun
    985   1.1  christos 
    986   1.9  christos @defun Value.__init__ (val, type)
    987   1.6  christos This second form of the @code{gdb.Value} constructor returns a
    988   1.6  christos @code{gdb.Value} of type @var{type} where the value contents are taken
    989   1.6  christos from the Python buffer object specified by @var{val}.  The number of
    990   1.6  christos bytes in the Python buffer object must be greater than or equal to the
    991   1.6  christos size of @var{type}.
    992   1.8  christos 
    993   1.8  christos If @var{type} is @code{None} then this version of @code{__init__}
    994   1.8  christos behaves as though @var{type} was not passed at all.
    995   1.6  christos @end defun
    996   1.6  christos 
    997   1.9  christos @anchor{Value.assign}
    998   1.9  christos @defun Value.assign (rhs)
    999   1.9  christos Assign @var{rhs} to this value, and return @code{None}.  If this value
   1000   1.9  christos cannot be assigned to, or if the assignment is invalid for some reason
   1001   1.9  christos (for example a type-checking failure), an exception will be thrown.
   1002   1.9  christos @end defun
   1003   1.9  christos 
   1004   1.1  christos @defun Value.cast (type)
   1005   1.1  christos Return a new instance of @code{gdb.Value} that is the result of
   1006   1.1  christos casting this instance to the type described by @var{type}, which must
   1007   1.1  christos be a @code{gdb.Type} object.  If the cast cannot be performed for some
   1008   1.1  christos reason, this method throws an exception.
   1009   1.1  christos @end defun
   1010   1.1  christos 
   1011   1.1  christos @defun Value.dereference ()
   1012   1.1  christos For pointer data types, this method returns a new @code{gdb.Value} object
   1013   1.1  christos whose contents is the object pointed to by the pointer.  For example, if
   1014   1.1  christos @code{foo} is a C pointer to an @code{int}, declared in your C program as
   1015   1.1  christos 
   1016   1.1  christos @smallexample
   1017   1.1  christos int *foo;
   1018   1.1  christos @end smallexample
   1019   1.1  christos 
   1020   1.1  christos @noindent
   1021   1.1  christos then you can use the corresponding @code{gdb.Value} to access what
   1022   1.1  christos @code{foo} points to like this:
   1023   1.1  christos 
   1024   1.1  christos @smallexample
   1025   1.1  christos bar = foo.dereference ()
   1026   1.1  christos @end smallexample
   1027   1.1  christos 
   1028   1.1  christos The result @code{bar} will be a @code{gdb.Value} object holding the
   1029   1.1  christos value pointed to by @code{foo}.
   1030   1.1  christos 
   1031   1.1  christos A similar function @code{Value.referenced_value} exists which also
   1032   1.7  christos returns @code{gdb.Value} objects corresponding to the values pointed to
   1033   1.1  christos by pointer values (and additionally, values referenced by reference
   1034   1.1  christos values).  However, the behavior of @code{Value.dereference}
   1035   1.1  christos differs from @code{Value.referenced_value} by the fact that the
   1036   1.1  christos behavior of @code{Value.dereference} is identical to applying the C
   1037   1.1  christos unary operator @code{*} on a given value.  For example, consider a
   1038   1.1  christos reference to a pointer @code{ptrref}, declared in your C@t{++} program
   1039   1.1  christos as
   1040   1.1  christos 
   1041   1.1  christos @smallexample
   1042   1.1  christos typedef int *intptr;
   1043   1.1  christos ...
   1044   1.1  christos int val = 10;
   1045   1.1  christos intptr ptr = &val;
   1046   1.1  christos intptr &ptrref = ptr;
   1047   1.1  christos @end smallexample
   1048   1.1  christos 
   1049   1.1  christos Though @code{ptrref} is a reference value, one can apply the method
   1050   1.1  christos @code{Value.dereference} to the @code{gdb.Value} object corresponding
   1051   1.1  christos to it and obtain a @code{gdb.Value} which is identical to that
   1052   1.1  christos corresponding to @code{val}.  However, if you apply the method
   1053   1.1  christos @code{Value.referenced_value}, the result would be a @code{gdb.Value}
   1054   1.1  christos object identical to that corresponding to @code{ptr}.
   1055   1.1  christos 
   1056   1.1  christos @smallexample
   1057   1.1  christos py_ptrref = gdb.parse_and_eval ("ptrref")
   1058   1.1  christos py_val = py_ptrref.dereference ()
   1059   1.1  christos py_ptr = py_ptrref.referenced_value ()
   1060   1.1  christos @end smallexample
   1061   1.1  christos 
   1062   1.1  christos The @code{gdb.Value} object @code{py_val} is identical to that
   1063   1.1  christos corresponding to @code{val}, and @code{py_ptr} is identical to that
   1064   1.1  christos corresponding to @code{ptr}.  In general, @code{Value.dereference} can
   1065   1.1  christos be applied whenever the C unary operator @code{*} can be applied
   1066   1.1  christos to the corresponding C value.  For those cases where applying both
   1067   1.1  christos @code{Value.dereference} and @code{Value.referenced_value} is allowed,
   1068   1.1  christos the results obtained need not be identical (as we have seen in the above
   1069   1.1  christos example).  The results are however identical when applied on
   1070   1.1  christos @code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
   1071   1.1  christos objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
   1072   1.1  christos @end defun
   1073   1.1  christos 
   1074   1.1  christos @defun Value.referenced_value ()
   1075   1.1  christos For pointer or reference data types, this method returns a new
   1076   1.1  christos @code{gdb.Value} object corresponding to the value referenced by the
   1077   1.1  christos pointer/reference value.  For pointer data types,
   1078   1.1  christos @code{Value.dereference} and @code{Value.referenced_value} produce
   1079   1.1  christos identical results.  The difference between these methods is that
   1080   1.1  christos @code{Value.dereference} cannot get the values referenced by reference
   1081   1.1  christos values.  For example, consider a reference to an @code{int}, declared
   1082   1.1  christos in your C@t{++} program as
   1083   1.1  christos 
   1084   1.1  christos @smallexample
   1085   1.1  christos int val = 10;
   1086   1.1  christos int &ref = val;
   1087   1.1  christos @end smallexample
   1088   1.1  christos 
   1089   1.1  christos @noindent
   1090   1.1  christos then applying @code{Value.dereference} to the @code{gdb.Value} object
   1091   1.1  christos corresponding to @code{ref} will result in an error, while applying
   1092   1.1  christos @code{Value.referenced_value} will result in a @code{gdb.Value} object
   1093   1.1  christos identical to that corresponding to @code{val}.
   1094   1.1  christos 
   1095   1.1  christos @smallexample
   1096   1.1  christos py_ref = gdb.parse_and_eval ("ref")
   1097   1.1  christos er_ref = py_ref.dereference ()       # Results in error
   1098   1.1  christos py_val = py_ref.referenced_value ()  # Returns the referenced value
   1099   1.1  christos @end smallexample
   1100   1.1  christos 
   1101   1.1  christos The @code{gdb.Value} object @code{py_val} is identical to that
   1102   1.1  christos corresponding to @code{val}.
   1103   1.1  christos @end defun
   1104   1.1  christos 
   1105   1.3  christos @defun Value.reference_value ()
   1106   1.3  christos Return a @code{gdb.Value} object which is a reference to the value
   1107   1.3  christos encapsulated by this instance.
   1108   1.3  christos @end defun
   1109   1.3  christos 
   1110   1.3  christos @defun Value.const_value ()
   1111   1.3  christos Return a @code{gdb.Value} object which is a @code{const} version of the
   1112   1.3  christos value encapsulated by this instance.
   1113   1.3  christos @end defun
   1114   1.3  christos 
   1115   1.1  christos @defun Value.dynamic_cast (type)
   1116   1.1  christos Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
   1117   1.1  christos operator were used.  Consult a C@t{++} reference for details.
   1118   1.1  christos @end defun
   1119   1.1  christos 
   1120   1.1  christos @defun Value.reinterpret_cast (type)
   1121   1.1  christos Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
   1122   1.1  christos operator were used.  Consult a C@t{++} reference for details.
   1123   1.1  christos @end defun
   1124   1.1  christos 
   1125   1.7  christos @defun Value.format_string (...)
   1126   1.7  christos Convert a @code{gdb.Value} to a string, similarly to what the @code{print}
   1127   1.7  christos command does.  Invoked with no arguments, this is equivalent to calling
   1128   1.7  christos the @code{str} function on the @code{gdb.Value}.  The representation of
   1129   1.7  christos the same value may change across different versions of @value{GDBN}, so
   1130   1.7  christos you shouldn't, for instance, parse the strings returned by this method.
   1131   1.7  christos 
   1132   1.7  christos All the arguments are keyword only.  If an argument is not specified, the
   1133   1.7  christos current global default setting is used.
   1134   1.7  christos 
   1135   1.7  christos @table @code
   1136   1.7  christos @item raw
   1137   1.7  christos @code{True} if pretty-printers (@pxref{Pretty Printing}) should not be
   1138   1.7  christos used to format the value.  @code{False} if enabled pretty-printers
   1139   1.7  christos matching the type represented by the @code{gdb.Value} should be used to
   1140   1.7  christos format it.
   1141   1.7  christos 
   1142   1.7  christos @item pretty_arrays
   1143   1.7  christos @code{True} if arrays should be pretty printed to be more convenient to
   1144   1.7  christos read, @code{False} if they shouldn't (see @code{set print array} in
   1145   1.7  christos @ref{Print Settings}).
   1146   1.7  christos 
   1147   1.7  christos @item pretty_structs
   1148   1.7  christos @code{True} if structs should be pretty printed to be more convenient to
   1149   1.7  christos read, @code{False} if they shouldn't (see @code{set print pretty} in
   1150   1.7  christos @ref{Print Settings}).
   1151   1.7  christos 
   1152   1.7  christos @item array_indexes
   1153   1.7  christos @code{True} if array indexes should be included in the string
   1154   1.7  christos representation of arrays, @code{False} if they shouldn't (see @code{set
   1155   1.7  christos print array-indexes} in @ref{Print Settings}).
   1156   1.7  christos 
   1157   1.7  christos @item symbols
   1158   1.7  christos @code{True} if the string representation of a pointer should include the
   1159   1.7  christos corresponding symbol name (if one exists), @code{False} if it shouldn't
   1160   1.7  christos (see @code{set print symbol} in @ref{Print Settings}).
   1161   1.7  christos 
   1162   1.7  christos @item unions
   1163   1.7  christos @code{True} if unions which are contained in other structures or unions
   1164   1.7  christos should be expanded, @code{False} if they shouldn't (see @code{set print
   1165   1.7  christos union} in @ref{Print Settings}).
   1166   1.7  christos 
   1167   1.8  christos @item address
   1168   1.8  christos @code{True} if the string representation of a pointer should include the
   1169   1.8  christos address, @code{False} if it shouldn't (see @code{set print address} in
   1170   1.8  christos @ref{Print Settings}).
   1171   1.8  christos 
   1172   1.8  christos @item nibbles
   1173   1.8  christos @code{True} if binary values should be displayed in groups of four bits,
   1174   1.8  christos known as nibbles.  @code{False} if it shouldn't (@pxref{Print Settings,
   1175   1.8  christos set print nibbles}).
   1176   1.8  christos 
   1177   1.7  christos @item deref_refs
   1178   1.7  christos @code{True} if C@t{++} references should be resolved to the value they
   1179   1.7  christos refer to, @code{False} (the default) if they shouldn't.  Note that, unlike
   1180   1.7  christos for the @code{print} command, references are not automatically expanded
   1181   1.7  christos when using the @code{format_string} method or the @code{str}
   1182   1.7  christos function.  There is no global @code{print} setting to change the default
   1183  1.10  christos behavior.
   1184   1.7  christos 
   1185   1.7  christos @item actual_objects
   1186   1.7  christos @code{True} if the representation of a pointer to an object should
   1187   1.7  christos identify the @emph{actual} (derived) type of the object rather than the
   1188   1.7  christos @emph{declared} type, using the virtual function table.  @code{False} if
   1189   1.7  christos the @emph{declared} type should be used.  (See @code{set print object} in
   1190   1.7  christos @ref{Print Settings}).
   1191   1.7  christos 
   1192   1.8  christos @item static_members
   1193   1.7  christos @code{True} if static members should be included in the string
   1194   1.7  christos representation of a C@t{++} object, @code{False} if they shouldn't (see
   1195   1.7  christos @code{set print static-members} in @ref{Print Settings}).
   1196   1.7  christos 
   1197   1.9  christos @item max_characters
   1198   1.9  christos Number of string characters to print, @code{0} to follow
   1199   1.9  christos @code{max_elements}, or @code{UINT_MAX} to print an unlimited number
   1200   1.9  christos of characters (see @code{set print characters} in @ref{Print Settings}).
   1201   1.9  christos 
   1202   1.7  christos @item max_elements
   1203   1.7  christos Number of array elements to print, or @code{0} to print an unlimited
   1204   1.7  christos number of elements (see @code{set print elements} in @ref{Print
   1205   1.7  christos Settings}).
   1206   1.7  christos 
   1207   1.7  christos @item max_depth
   1208   1.7  christos The maximum depth to print for nested structs and unions, or @code{-1}
   1209   1.7  christos to print an unlimited number of elements (see @code{set print
   1210   1.7  christos max-depth} in @ref{Print Settings}).
   1211   1.7  christos 
   1212   1.7  christos @item repeat_threshold
   1213   1.7  christos Set the threshold for suppressing display of repeated array elements, or
   1214   1.7  christos @code{0} to represent all elements, even if repeated.  (See @code{set
   1215   1.7  christos print repeats} in @ref{Print Settings}).
   1216   1.7  christos 
   1217   1.7  christos @item format
   1218   1.7  christos A string containing a single character representing the format to use for
   1219   1.7  christos the returned string.  For instance, @code{'x'} is equivalent to using the
   1220   1.7  christos @value{GDBN} command @code{print} with the @code{/x} option and formats
   1221   1.7  christos the value as a hexadecimal number.
   1222   1.8  christos 
   1223   1.8  christos @item styling
   1224   1.8  christos @code{True} if @value{GDBN} should apply styling to the returned
   1225   1.8  christos string.  When styling is applied, the returned string might contain
   1226   1.8  christos ANSI terminal escape sequences.  Escape sequences will only be
   1227   1.8  christos included if styling is turned on, see @ref{Output Styling}.
   1228   1.8  christos Additionally, @value{GDBN} only styles some value contents, so not
   1229   1.8  christos every output string will contain escape sequences.
   1230   1.8  christos 
   1231   1.8  christos When @code{False}, which is the default, no output styling is applied.
   1232   1.8  christos 
   1233   1.8  christos @item summary
   1234   1.8  christos @code{True} when just a summary should be printed.  In this mode,
   1235   1.8  christos scalar values are printed in their entirety, but aggregates such as
   1236   1.8  christos structures or unions are omitted.  This mode is used by @code{set
   1237   1.8  christos print frame-arguments scalars} (@pxref{Print Settings}).
   1238   1.7  christos @end table
   1239   1.7  christos @end defun
   1240   1.7  christos 
   1241   1.9  christos @defun Value.to_array ()
   1242   1.9  christos If this value is array-like (@pxref{Type.is_array_like}), then this
   1243   1.9  christos method converts it to an array, which is returned.  If this value is
   1244   1.9  christos already an array, it is simply returned.  Otherwise, an exception is
   1245   1.9  christos throw.
   1246   1.9  christos @end defun
   1247   1.9  christos 
   1248   1.1  christos @defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
   1249   1.1  christos If this @code{gdb.Value} represents a string, then this method
   1250   1.1  christos converts the contents to a Python string.  Otherwise, this method will
   1251   1.1  christos throw an exception.
   1252   1.1  christos 
   1253   1.1  christos Values are interpreted as strings according to the rules of the
   1254   1.1  christos current language.  If the optional length argument is given, the
   1255   1.1  christos string will be converted to that length, and will include any embedded
   1256   1.1  christos zeroes that the string may contain.  Otherwise, for languages
   1257   1.1  christos where the string is zero-terminated, the entire string will be
   1258   1.1  christos converted.
   1259   1.1  christos 
   1260   1.1  christos For example, in C-like languages, a value is a string if it is a pointer
   1261   1.1  christos to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
   1262   1.1  christos or @code{char32_t}.
   1263   1.1  christos 
   1264   1.1  christos If the optional @var{encoding} argument is given, it must be a string
   1265   1.1  christos naming the encoding of the string in the @code{gdb.Value}, such as
   1266   1.1  christos @code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}.  It accepts
   1267   1.1  christos the same encodings as the corresponding argument to Python's
   1268   1.1  christos @code{string.decode} method, and the Python codec machinery will be used
   1269   1.1  christos to convert the string.  If @var{encoding} is not given, or if
   1270   1.1  christos @var{encoding} is the empty string, then either the @code{target-charset}
   1271   1.1  christos (@pxref{Character Sets}) will be used, or a language-specific encoding
   1272   1.1  christos will be used, if the current language is able to supply one.
   1273   1.1  christos 
   1274   1.1  christos The optional @var{errors} argument is the same as the corresponding
   1275   1.1  christos argument to Python's @code{string.decode} method.
   1276   1.1  christos 
   1277   1.1  christos If the optional @var{length} argument is given, the string will be
   1278   1.1  christos fetched and converted to the given length.
   1279   1.1  christos @end defun
   1280   1.1  christos 
   1281   1.1  christos @defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
   1282  1.10  christos This method attempts to convert this @code{gdb.Value} to a
   1283  1.10  christos @code{gdb.LazyString} (@pxref{Lazy Strings In Python}).  Values of
   1284  1.10  christos array or pointer type can be converted; for other types, this method
   1285  1.10  christos will throw an exception.
   1286   1.1  christos 
   1287   1.1  christos If the optional @var{encoding} argument is given, it must be a string
   1288   1.1  christos naming the encoding of the @code{gdb.LazyString}.  Some examples are:
   1289   1.1  christos @samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}.  If the
   1290   1.1  christos @var{encoding} argument is an encoding that @value{GDBN} does
   1291   1.1  christos recognize, @value{GDBN} will raise an error.
   1292   1.1  christos 
   1293   1.1  christos When a lazy string is printed, the @value{GDBN} encoding machinery is
   1294   1.1  christos used to convert the string during printing.  If the optional
   1295   1.1  christos @var{encoding} argument is not provided, or is an empty string,
   1296   1.1  christos @value{GDBN} will automatically select the encoding most suitable for
   1297   1.1  christos the string type.  For further information on encoding in @value{GDBN}
   1298   1.1  christos please see @ref{Character Sets}.
   1299   1.1  christos 
   1300   1.1  christos If the optional @var{length} argument is given, the string will be
   1301   1.1  christos fetched and encoded to the length of characters specified.  If
   1302   1.1  christos the @var{length} argument is not provided, the string will be fetched
   1303   1.1  christos and encoded until a null of appropriate width is found.
   1304   1.1  christos @end defun
   1305   1.1  christos 
   1306   1.1  christos @defun Value.fetch_lazy ()
   1307   1.1  christos If the @code{gdb.Value} object is currently a lazy value 
   1308   1.1  christos (@code{gdb.Value.is_lazy} is @code{True}), then the value is
   1309   1.1  christos fetched from the inferior.  Any errors that occur in the process
   1310   1.1  christos will produce a Python exception.
   1311   1.1  christos 
   1312   1.1  christos If the @code{gdb.Value} object is not a lazy value, this method
   1313   1.1  christos has no effect.
   1314   1.1  christos 
   1315   1.1  christos This method does not return a value.
   1316   1.1  christos @end defun
   1317   1.1  christos 
   1318   1.1  christos 
   1319   1.1  christos @node Types In Python
   1320   1.1  christos @subsubsection Types In Python
   1321   1.1  christos @cindex types in Python
   1322   1.1  christos @cindex Python, working with types
   1323   1.1  christos 
   1324   1.1  christos @tindex gdb.Type
   1325   1.1  christos @value{GDBN} represents types from the inferior using the class
   1326   1.1  christos @code{gdb.Type}.
   1327   1.1  christos 
   1328   1.1  christos The following type-related functions are available in the @code{gdb}
   1329   1.1  christos module:
   1330   1.1  christos 
   1331   1.1  christos @defun gdb.lookup_type (name @r{[}, block@r{]})
   1332   1.1  christos This function looks up a type by its @var{name}, which must be a string.
   1333   1.1  christos 
   1334   1.1  christos If @var{block} is given, then @var{name} is looked up in that scope.
   1335   1.1  christos Otherwise, it is searched for globally.
   1336   1.1  christos 
   1337   1.1  christos Ordinarily, this function will return an instance of @code{gdb.Type}.
   1338   1.1  christos If the named type cannot be found, it will throw an exception.
   1339   1.1  christos @end defun
   1340   1.1  christos 
   1341   1.8  christos Integer types can be found without looking them up by name.
   1342   1.8  christos @xref{Architectures In Python}, for the @code{integer_type} method.
   1343   1.8  christos 
   1344   1.1  christos If the type is a structure or class type, or an enum type, the fields
   1345   1.1  christos of that type can be accessed using the Python @dfn{dictionary syntax}.
   1346   1.1  christos For example, if @code{some_type} is a @code{gdb.Type} instance holding
   1347   1.1  christos a structure type, you can access its @code{foo} field with:
   1348   1.1  christos 
   1349   1.1  christos @smallexample
   1350   1.1  christos bar = some_type['foo']
   1351   1.1  christos @end smallexample
   1352   1.1  christos 
   1353   1.1  christos @code{bar} will be a @code{gdb.Field} object; see below under the
   1354   1.1  christos description of the @code{Type.fields} method for a description of the
   1355   1.1  christos @code{gdb.Field} class.
   1356   1.1  christos 
   1357   1.1  christos An instance of @code{Type} has the following attributes:
   1358   1.1  christos 
   1359   1.6  christos @defvar Type.alignof
   1360   1.6  christos The alignment of this type, in bytes.  Type alignment comes from the
   1361   1.6  christos debugging information; if it was not specified, then @value{GDBN} will
   1362   1.6  christos use the relevant ABI to try to determine the alignment.  In some
   1363   1.6  christos cases, even this is not possible, and zero will be returned.
   1364   1.6  christos @end defvar
   1365   1.6  christos 
   1366   1.1  christos @defvar Type.code
   1367   1.1  christos The type code for this type.  The type code will be one of the
   1368   1.1  christos @code{TYPE_CODE_} constants defined below.
   1369   1.1  christos @end defvar
   1370   1.1  christos 
   1371   1.7  christos @defvar Type.dynamic
   1372   1.7  christos A boolean indicating whether this type is dynamic.  In some
   1373   1.7  christos situations, such as Rust @code{enum} types or Ada variant records, the
   1374   1.7  christos concrete type of a value may vary depending on its contents.  That is,
   1375   1.7  christos the declared type of a variable, or the type returned by
   1376   1.7  christos @code{gdb.lookup_type} may be dynamic; while the type of the
   1377   1.7  christos variable's value will be a concrete instance of that dynamic type.
   1378   1.7  christos 
   1379   1.7  christos For example, consider this code:
   1380   1.7  christos @smallexample
   1381   1.7  christos int n;
   1382   1.7  christos int array[n];
   1383   1.7  christos @end smallexample
   1384   1.7  christos 
   1385   1.7  christos Here, at least conceptually (whether your compiler actually does this
   1386   1.7  christos is a separate issue), examining @w{@code{gdb.lookup_symbol("array", ...).type}}
   1387   1.7  christos could yield a @code{gdb.Type} which reports a size of @code{None}.
   1388   1.7  christos This is the dynamic type.
   1389   1.7  christos 
   1390   1.7  christos However, examining @code{gdb.parse_and_eval("array").type} would yield
   1391   1.7  christos a concrete type, whose length would be known.
   1392   1.7  christos @end defvar
   1393   1.7  christos 
   1394   1.1  christos @defvar Type.name
   1395   1.1  christos The name of this type.  If this type has no name, then @code{None}
   1396   1.1  christos is returned.
   1397   1.1  christos @end defvar
   1398   1.1  christos 
   1399   1.1  christos @defvar Type.sizeof
   1400   1.1  christos The size of this type, in target @code{char} units.  Usually, a
   1401   1.1  christos target's @code{char} type will be an 8-bit byte.  However, on some
   1402   1.7  christos unusual platforms, this type may have a different size.  A dynamic
   1403   1.7  christos type may not have a fixed size; in this case, this attribute's value
   1404   1.7  christos will be @code{None}.
   1405   1.1  christos @end defvar
   1406   1.1  christos 
   1407   1.1  christos @defvar Type.tag
   1408   1.1  christos The tag name for this type.  The tag name is the name after
   1409   1.1  christos @code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
   1410   1.1  christos languages have this concept.  If this type has no tag name, then
   1411   1.1  christos @code{None} is returned.
   1412   1.1  christos @end defvar
   1413   1.1  christos 
   1414   1.7  christos @defvar Type.objfile
   1415   1.7  christos The @code{gdb.Objfile} that this type was defined in, or @code{None} if
   1416   1.7  christos there is no associated objfile.
   1417   1.7  christos @end defvar
   1418   1.7  christos 
   1419   1.8  christos @defvar Type.is_scalar
   1420   1.8  christos This property is @code{True} if the type is a scalar type, otherwise,
   1421   1.8  christos this property is @code{False}.  Examples of non-scalar types include
   1422   1.8  christos structures, unions, and classes.
   1423   1.8  christos @end defvar
   1424   1.8  christos 
   1425   1.8  christos @defvar Type.is_signed
   1426   1.8  christos For scalar types (those for which @code{Type.is_scalar} is
   1427   1.8  christos @code{True}), this property is @code{True} if the type is signed,
   1428   1.8  christos otherwise this property is @code{False}.
   1429   1.8  christos 
   1430   1.8  christos Attempting to read this property for a non-scalar type (a type for
   1431   1.8  christos which @code{Type.is_scalar} is @code{False}), will raise a
   1432   1.8  christos @code{ValueError}.
   1433   1.8  christos @end defvar
   1434   1.8  christos 
   1435   1.9  christos @defvar Type.is_array_like
   1436   1.9  christos @anchor{Type.is_array_like}
   1437   1.9  christos A boolean indicating whether this type is array-like.
   1438   1.9  christos 
   1439   1.9  christos Some languages have array-like objects that are represented internally
   1440   1.9  christos as structures.  For example, this is true for a Rust slice type, or
   1441   1.9  christos for an Ada unconstrained array.  @value{GDBN} may know about these
   1442   1.9  christos types.  This determination is done based on the language from which
   1443   1.9  christos the type originated.
   1444   1.9  christos @end defvar
   1445   1.9  christos 
   1446   1.9  christos @defvar Type.is_string_like
   1447   1.9  christos A boolean indicating whether this type is string-like.  Like
   1448   1.9  christos @code{Type.is_array_like}, this is determined based on the originating
   1449   1.9  christos language of the type.
   1450   1.9  christos @end defvar
   1451   1.9  christos 
   1452   1.1  christos The following methods are provided:
   1453   1.1  christos 
   1454   1.1  christos @defun Type.fields ()
   1455   1.8  christos 
   1456   1.8  christos Return the fields of this type.  The behavior depends on the type code:
   1457   1.8  christos 
   1458   1.8  christos @itemize @bullet
   1459   1.8  christos 
   1460   1.8  christos @item
   1461   1.8  christos For structure and union types, this method returns the fields.
   1462   1.8  christos 
   1463   1.8  christos @item
   1464   1.8  christos Enum types have one field per enum constant.
   1465   1.8  christos 
   1466   1.8  christos @item
   1467   1.8  christos Function and method types have one field per parameter.  The base types of
   1468   1.8  christos C@t{++} classes are also represented as fields.
   1469   1.8  christos 
   1470   1.8  christos @item
   1471   1.8  christos Array types have one field representing the array's range.
   1472   1.8  christos 
   1473   1.8  christos @item
   1474   1.8  christos If the type does not fit into one of these categories, a @code{TypeError}
   1475   1.8  christos is raised.
   1476   1.8  christos 
   1477   1.8  christos @end itemize
   1478   1.1  christos 
   1479   1.1  christos Each field is a @code{gdb.Field} object, with some pre-defined attributes:
   1480   1.1  christos @table @code
   1481   1.1  christos @item bitpos
   1482   1.1  christos This attribute is not available for @code{enum} or @code{static}
   1483   1.5  christos (as in C@t{++}) fields.  The value is the position, counting
   1484   1.7  christos in bits, from the start of the containing type.  Note that, in a
   1485   1.7  christos dynamic type, the position of a field may not be constant.  In this
   1486   1.7  christos case, the value will be @code{None}.  Also, a dynamic type may have
   1487   1.7  christos fields that do not appear in a corresponding concrete type.
   1488   1.1  christos 
   1489   1.1  christos @item enumval
   1490   1.1  christos This attribute is only available for @code{enum} fields, and its value
   1491   1.1  christos is the enumeration member's integer representation.
   1492   1.1  christos 
   1493   1.1  christos @item name
   1494   1.1  christos The name of the field, or @code{None} for anonymous fields.
   1495   1.1  christos 
   1496   1.1  christos @item artificial
   1497   1.1  christos This is @code{True} if the field is artificial, usually meaning that
   1498   1.1  christos it was provided by the compiler and not the user.  This attribute is
   1499   1.1  christos always provided, and is @code{False} if the field is not artificial.
   1500   1.1  christos 
   1501   1.1  christos @item is_base_class
   1502   1.1  christos This is @code{True} if the field represents a base class of a C@t{++}
   1503   1.1  christos structure.  This attribute is always provided, and is @code{False}
   1504   1.1  christos if the field is not a base class of the type that is the argument of
   1505   1.1  christos @code{fields}, or if that type was not a C@t{++} class.
   1506   1.1  christos 
   1507   1.1  christos @item bitsize
   1508   1.1  christos If the field is packed, or is a bitfield, then this will have a
   1509   1.1  christos non-zero value, which is the size of the field in bits.  Otherwise,
   1510   1.1  christos this will be zero; in this case the field's size is given by its type.
   1511   1.1  christos 
   1512   1.1  christos @item type
   1513   1.1  christos The type of the field.  This is usually an instance of @code{Type},
   1514   1.1  christos but it can be @code{None} in some situations.
   1515   1.1  christos 
   1516   1.1  christos @item parent_type
   1517   1.1  christos The type which contains this field.  This is an instance of
   1518   1.1  christos @code{gdb.Type}.
   1519   1.1  christos @end table
   1520   1.1  christos @end defun
   1521   1.1  christos 
   1522   1.9  christos @defun Type.array (n1 @r{[}, n2@r{]})
   1523   1.1  christos Return a new @code{gdb.Type} object which represents an array of this
   1524   1.1  christos type.  If one argument is given, it is the inclusive upper bound of
   1525   1.1  christos the array; in this case the lower bound is zero.  If two arguments are
   1526   1.1  christos given, the first argument is the lower bound of the array, and the
   1527   1.1  christos second argument is the upper bound of the array.  An array's length
   1528   1.1  christos must not be negative, but the bounds can be.
   1529   1.1  christos @end defun
   1530   1.1  christos 
   1531   1.9  christos @defun Type.vector (n1 @r{[}, n2@r{]})
   1532   1.1  christos Return a new @code{gdb.Type} object which represents a vector of this
   1533   1.1  christos type.  If one argument is given, it is the inclusive upper bound of
   1534   1.1  christos the vector; in this case the lower bound is zero.  If two arguments are
   1535   1.1  christos given, the first argument is the lower bound of the vector, and the
   1536   1.1  christos second argument is the upper bound of the vector.  A vector's length
   1537   1.1  christos must not be negative, but the bounds can be.
   1538   1.1  christos 
   1539   1.1  christos The difference between an @code{array} and a @code{vector} is that
   1540   1.1  christos arrays behave like in C: when used in expressions they decay to a pointer
   1541   1.1  christos to the first element whereas vectors are treated as first class values.
   1542   1.1  christos @end defun
   1543   1.1  christos 
   1544   1.1  christos @defun Type.const ()
   1545   1.1  christos Return a new @code{gdb.Type} object which represents a
   1546   1.1  christos @code{const}-qualified variant of this type.
   1547   1.1  christos @end defun
   1548   1.1  christos 
   1549   1.1  christos @defun Type.volatile ()
   1550   1.1  christos Return a new @code{gdb.Type} object which represents a
   1551   1.1  christos @code{volatile}-qualified variant of this type.
   1552   1.1  christos @end defun
   1553   1.1  christos 
   1554   1.1  christos @defun Type.unqualified ()
   1555   1.1  christos Return a new @code{gdb.Type} object which represents an unqualified
   1556   1.1  christos variant of this type.  That is, the result is neither @code{const} nor
   1557   1.1  christos @code{volatile}.
   1558   1.1  christos @end defun
   1559   1.1  christos 
   1560   1.1  christos @defun Type.range ()
   1561   1.1  christos Return a Python @code{Tuple} object that contains two elements: the
   1562   1.1  christos low bound of the argument type and the high bound of that type.  If
   1563   1.1  christos the type does not have a range, @value{GDBN} will raise a
   1564   1.1  christos @code{gdb.error} exception (@pxref{Exception Handling}).
   1565   1.1  christos @end defun
   1566   1.1  christos 
   1567   1.1  christos @defun Type.reference ()
   1568   1.1  christos Return a new @code{gdb.Type} object which represents a reference to this
   1569   1.1  christos type.
   1570   1.1  christos @end defun
   1571   1.1  christos 
   1572   1.1  christos @defun Type.pointer ()
   1573   1.1  christos Return a new @code{gdb.Type} object which represents a pointer to this
   1574   1.1  christos type.
   1575   1.1  christos @end defun
   1576   1.1  christos 
   1577   1.1  christos @defun Type.strip_typedefs ()
   1578   1.1  christos Return a new @code{gdb.Type} that represents the real type,
   1579   1.1  christos after removing all layers of typedefs.
   1580   1.1  christos @end defun
   1581   1.1  christos 
   1582   1.1  christos @defun Type.target ()
   1583   1.1  christos Return a new @code{gdb.Type} object which represents the target type
   1584   1.1  christos of this type.
   1585   1.1  christos 
   1586   1.1  christos For a pointer type, the target type is the type of the pointed-to
   1587   1.1  christos object.  For an array type (meaning C-like arrays), the target type is
   1588   1.1  christos the type of the elements of the array.  For a function or method type,
   1589   1.1  christos the target type is the type of the return value.  For a complex type,
   1590   1.1  christos the target type is the type of the elements.  For a typedef, the
   1591   1.1  christos target type is the aliased type.
   1592   1.1  christos 
   1593   1.1  christos If the type does not have a target, this method will throw an
   1594   1.1  christos exception.
   1595   1.1  christos @end defun
   1596   1.1  christos 
   1597   1.1  christos @defun Type.template_argument (n @r{[}, block@r{]})
   1598   1.1  christos If this @code{gdb.Type} is an instantiation of a template, this will
   1599   1.1  christos return a new @code{gdb.Value} or @code{gdb.Type} which represents the
   1600   1.1  christos value of the @var{n}th template argument (indexed starting at 0).
   1601   1.1  christos 
   1602   1.1  christos If this @code{gdb.Type} is not a template type, or if the type has fewer
   1603   1.1  christos than @var{n} template arguments, this will throw an exception.
   1604   1.1  christos Ordinarily, only C@t{++} code will have template types.
   1605   1.1  christos 
   1606   1.1  christos If @var{block} is given, then @var{name} is looked up in that scope.
   1607   1.1  christos Otherwise, it is searched for globally.
   1608   1.1  christos @end defun
   1609   1.1  christos 
   1610   1.3  christos @defun Type.optimized_out ()
   1611   1.3  christos Return @code{gdb.Value} instance of this type whose value is optimized
   1612   1.3  christos out.  This allows a frame decorator to indicate that the value of an
   1613   1.3  christos argument or a local variable is not known.
   1614   1.3  christos @end defun
   1615   1.1  christos 
   1616   1.1  christos Each type has a code, which indicates what category this type falls
   1617   1.1  christos into.  The available type categories are represented by constants
   1618   1.1  christos defined in the @code{gdb} module:
   1619   1.1  christos 
   1620   1.1  christos @vtable @code
   1621   1.1  christos @vindex TYPE_CODE_PTR
   1622   1.1  christos @item gdb.TYPE_CODE_PTR
   1623   1.1  christos The type is a pointer.
   1624   1.1  christos 
   1625   1.1  christos @vindex TYPE_CODE_ARRAY
   1626   1.1  christos @item gdb.TYPE_CODE_ARRAY
   1627   1.1  christos The type is an array.
   1628   1.1  christos 
   1629   1.1  christos @vindex TYPE_CODE_STRUCT
   1630   1.1  christos @item gdb.TYPE_CODE_STRUCT
   1631   1.1  christos The type is a structure.
   1632   1.1  christos 
   1633   1.1  christos @vindex TYPE_CODE_UNION
   1634   1.1  christos @item gdb.TYPE_CODE_UNION
   1635   1.1  christos The type is a union.
   1636   1.1  christos 
   1637   1.1  christos @vindex TYPE_CODE_ENUM
   1638   1.1  christos @item gdb.TYPE_CODE_ENUM
   1639   1.1  christos The type is an enum.
   1640   1.1  christos 
   1641   1.1  christos @vindex TYPE_CODE_FLAGS
   1642   1.1  christos @item gdb.TYPE_CODE_FLAGS
   1643   1.1  christos A bit flags type, used for things such as status registers.
   1644   1.1  christos 
   1645   1.1  christos @vindex TYPE_CODE_FUNC
   1646   1.1  christos @item gdb.TYPE_CODE_FUNC
   1647   1.1  christos The type is a function.
   1648   1.1  christos 
   1649   1.1  christos @vindex TYPE_CODE_INT
   1650   1.1  christos @item gdb.TYPE_CODE_INT
   1651   1.1  christos The type is an integer type.
   1652   1.1  christos 
   1653   1.1  christos @vindex TYPE_CODE_FLT
   1654   1.1  christos @item gdb.TYPE_CODE_FLT
   1655   1.1  christos A floating point type.
   1656   1.1  christos 
   1657   1.1  christos @vindex TYPE_CODE_VOID
   1658   1.1  christos @item gdb.TYPE_CODE_VOID
   1659   1.1  christos The special type @code{void}.
   1660   1.1  christos 
   1661   1.1  christos @vindex TYPE_CODE_SET
   1662   1.1  christos @item gdb.TYPE_CODE_SET
   1663   1.1  christos A Pascal set type.
   1664   1.1  christos 
   1665   1.1  christos @vindex TYPE_CODE_RANGE
   1666   1.1  christos @item gdb.TYPE_CODE_RANGE
   1667   1.1  christos A range type, that is, an integer type with bounds.
   1668   1.1  christos 
   1669   1.1  christos @vindex TYPE_CODE_STRING
   1670   1.1  christos @item gdb.TYPE_CODE_STRING
   1671   1.1  christos A string type.  Note that this is only used for certain languages with
   1672   1.1  christos language-defined string types; C strings are not represented this way.
   1673   1.1  christos 
   1674   1.1  christos @vindex TYPE_CODE_BITSTRING
   1675   1.1  christos @item gdb.TYPE_CODE_BITSTRING
   1676   1.1  christos A string of bits.  It is deprecated.
   1677   1.1  christos 
   1678   1.1  christos @vindex TYPE_CODE_ERROR
   1679   1.1  christos @item gdb.TYPE_CODE_ERROR
   1680   1.1  christos An unknown or erroneous type.
   1681   1.1  christos 
   1682   1.1  christos @vindex TYPE_CODE_METHOD
   1683   1.1  christos @item gdb.TYPE_CODE_METHOD
   1684   1.5  christos A method type, as found in C@t{++}.
   1685   1.1  christos 
   1686   1.1  christos @vindex TYPE_CODE_METHODPTR
   1687   1.1  christos @item gdb.TYPE_CODE_METHODPTR
   1688   1.1  christos A pointer-to-member-function.
   1689   1.1  christos 
   1690   1.1  christos @vindex TYPE_CODE_MEMBERPTR
   1691   1.1  christos @item gdb.TYPE_CODE_MEMBERPTR
   1692   1.1  christos A pointer-to-member.
   1693   1.1  christos 
   1694   1.1  christos @vindex TYPE_CODE_REF
   1695   1.1  christos @item gdb.TYPE_CODE_REF
   1696   1.1  christos A reference type.
   1697   1.1  christos 
   1698   1.5  christos @vindex TYPE_CODE_RVALUE_REF
   1699   1.5  christos @item gdb.TYPE_CODE_RVALUE_REF
   1700   1.5  christos A C@t{++}11 rvalue reference type.
   1701   1.5  christos 
   1702   1.1  christos @vindex TYPE_CODE_CHAR
   1703   1.1  christos @item gdb.TYPE_CODE_CHAR
   1704   1.1  christos A character type.
   1705   1.1  christos 
   1706   1.1  christos @vindex TYPE_CODE_BOOL
   1707   1.1  christos @item gdb.TYPE_CODE_BOOL
   1708   1.1  christos A boolean type.
   1709   1.1  christos 
   1710   1.1  christos @vindex TYPE_CODE_COMPLEX
   1711   1.1  christos @item gdb.TYPE_CODE_COMPLEX
   1712   1.1  christos A complex float type.
   1713   1.1  christos 
   1714   1.1  christos @vindex TYPE_CODE_TYPEDEF
   1715   1.1  christos @item gdb.TYPE_CODE_TYPEDEF
   1716   1.1  christos A typedef to some other type.
   1717   1.1  christos 
   1718   1.1  christos @vindex TYPE_CODE_NAMESPACE
   1719   1.1  christos @item gdb.TYPE_CODE_NAMESPACE
   1720   1.1  christos A C@t{++} namespace.
   1721   1.1  christos 
   1722   1.1  christos @vindex TYPE_CODE_DECFLOAT
   1723   1.1  christos @item gdb.TYPE_CODE_DECFLOAT
   1724   1.1  christos A decimal floating point type.
   1725   1.1  christos 
   1726   1.1  christos @vindex TYPE_CODE_INTERNAL_FUNCTION
   1727   1.1  christos @item gdb.TYPE_CODE_INTERNAL_FUNCTION
   1728   1.1  christos A function internal to @value{GDBN}.  This is the type used to represent
   1729   1.1  christos convenience functions.
   1730   1.8  christos 
   1731   1.8  christos @vindex TYPE_CODE_XMETHOD
   1732   1.8  christos @item gdb.TYPE_CODE_XMETHOD
   1733   1.8  christos A method internal to @value{GDBN}.  This is the type used to represent
   1734   1.8  christos xmethods (@pxref{Writing an Xmethod}).
   1735   1.8  christos 
   1736   1.8  christos @vindex TYPE_CODE_FIXED_POINT
   1737   1.8  christos @item gdb.TYPE_CODE_FIXED_POINT
   1738   1.8  christos A fixed-point number.
   1739   1.8  christos 
   1740   1.8  christos @vindex TYPE_CODE_NAMESPACE
   1741   1.8  christos @item gdb.TYPE_CODE_NAMESPACE
   1742   1.8  christos A Fortran namelist.
   1743   1.1  christos @end vtable
   1744   1.1  christos 
   1745   1.1  christos Further support for types is provided in the @code{gdb.types}
   1746   1.1  christos Python module (@pxref{gdb.types}).
   1747   1.1  christos 
   1748   1.1  christos @node Pretty Printing API
   1749   1.1  christos @subsubsection Pretty Printing API
   1750   1.1  christos @cindex python pretty printing api
   1751   1.1  christos 
   1752   1.1  christos A pretty-printer is just an object that holds a value and implements a
   1753   1.6  christos specific interface, defined here.  An example output is provided
   1754   1.6  christos (@pxref{Pretty Printing}).
   1755   1.1  christos 
   1756   1.9  christos Because @value{GDBN} did not document extensibility for
   1757   1.9  christos pretty-printers, by default @value{GDBN} will assume that only the
   1758   1.9  christos basic pretty-printer methods may be available.  The basic methods are
   1759   1.9  christos marked as such, below.
   1760   1.9  christos 
   1761   1.9  christos To allow extensibility, @value{GDBN} provides the
   1762   1.9  christos @code{gdb.ValuePrinter} base class.  This class does not provide any
   1763   1.9  christos attributes or behavior, but instead serves as a tag that can be
   1764   1.9  christos recognized by @value{GDBN}.  For such printers, @value{GDBN} reserves
   1765   1.9  christos all attributes starting with a lower-case letter.  That is, in the
   1766   1.9  christos future, @value{GDBN} may add a new method or attribute to the
   1767   1.9  christos pretty-printer protocol, and @code{gdb.ValuePrinter}-based printers
   1768   1.9  christos are expected to handle this gracefully.  A simple way to do this would
   1769   1.9  christos be to use a leading underscore (or two, following the Python
   1770   1.9  christos name-mangling scheme) to any attributes local to the implementation.
   1771   1.9  christos 
   1772   1.1  christos @defun pretty_printer.children (self)
   1773   1.1  christos @value{GDBN} will call this method on a pretty-printer to compute the
   1774   1.1  christos children of the pretty-printer's value.
   1775   1.1  christos 
   1776   1.1  christos This method must return an object conforming to the Python iterator
   1777   1.1  christos protocol.  Each item returned by the iterator must be a tuple holding
   1778   1.1  christos two elements.  The first element is the ``name'' of the child; the
   1779   1.1  christos second element is the child's value.  The value can be any Python
   1780   1.1  christos object which is convertible to a @value{GDBN} value.
   1781   1.1  christos 
   1782   1.9  christos This is a basic method, and is optional.  If it does not exist,
   1783   1.9  christos @value{GDBN} will act as though the value has no children.
   1784   1.7  christos 
   1785   1.7  christos For efficiency, the @code{children} method should lazily compute its
   1786   1.7  christos results.  This will let @value{GDBN} read as few elements as
   1787   1.7  christos necessary, for example when various print settings (@pxref{Print
   1788   1.7  christos Settings}) or @code{-var-list-children} (@pxref{GDB/MI Variable
   1789   1.7  christos Objects}) limit the number of elements to be displayed.
   1790   1.7  christos 
   1791   1.7  christos Children may be hidden from display based on the value of @samp{set
   1792   1.7  christos print max-depth} (@pxref{Print Settings}).
   1793   1.1  christos @end defun
   1794   1.1  christos 
   1795   1.1  christos @defun pretty_printer.display_hint (self)
   1796   1.1  christos The CLI may call this method and use its result to change the
   1797   1.1  christos formatting of a value.  The result will also be supplied to an MI
   1798   1.1  christos consumer as a @samp{displayhint} attribute of the variable being
   1799   1.1  christos printed.
   1800   1.1  christos 
   1801   1.9  christos This is a basic method, and is optional.  If it does exist, this
   1802   1.9  christos method must return a string or the special value @code{None}.
   1803   1.1  christos 
   1804   1.1  christos Some display hints are predefined by @value{GDBN}:
   1805   1.1  christos 
   1806   1.1  christos @table @samp
   1807   1.1  christos @item array
   1808   1.1  christos Indicate that the object being printed is ``array-like''.  The CLI
   1809   1.1  christos uses this to respect parameters such as @code{set print elements} and
   1810   1.1  christos @code{set print array}.
   1811   1.1  christos 
   1812   1.1  christos @item map
   1813   1.1  christos Indicate that the object being printed is ``map-like'', and that the
   1814   1.1  christos children of this value can be assumed to alternate between keys and
   1815   1.1  christos values.
   1816   1.1  christos 
   1817   1.1  christos @item string
   1818   1.1  christos Indicate that the object being printed is ``string-like''.  If the
   1819   1.1  christos printer's @code{to_string} method returns a Python string of some
   1820   1.1  christos kind, then @value{GDBN} will call its internal language-specific
   1821   1.1  christos string-printing function to format the string.  For the CLI this means
   1822   1.1  christos adding quotation marks, possibly escaping some characters, respecting
   1823   1.1  christos @code{set print elements}, and the like.
   1824   1.1  christos @end table
   1825   1.7  christos 
   1826   1.7  christos The special value @code{None} causes @value{GDBN} to apply the default
   1827   1.7  christos display rules.
   1828   1.1  christos @end defun
   1829   1.1  christos 
   1830   1.1  christos @defun pretty_printer.to_string (self)
   1831   1.1  christos @value{GDBN} will call this method to display the string
   1832   1.1  christos representation of the value passed to the object's constructor.
   1833   1.1  christos 
   1834   1.9  christos This is a basic method, and is optional.
   1835   1.9  christos 
   1836   1.1  christos When printing from the CLI, if the @code{to_string} method exists,
   1837   1.1  christos then @value{GDBN} will prepend its result to the values returned by
   1838   1.1  christos @code{children}.  Exactly how this formatting is done is dependent on
   1839   1.1  christos the display hint, and may change as more hints are added.  Also,
   1840   1.1  christos depending on the print settings (@pxref{Print Settings}), the CLI may
   1841   1.1  christos print just the result of @code{to_string} in a stack trace, omitting
   1842   1.1  christos the result of @code{children}.
   1843   1.1  christos 
   1844   1.1  christos If this method returns a string, it is printed verbatim.
   1845   1.1  christos 
   1846   1.1  christos Otherwise, if this method returns an instance of @code{gdb.Value},
   1847   1.1  christos then @value{GDBN} prints this value.  This may result in a call to
   1848   1.1  christos another pretty-printer.
   1849   1.1  christos 
   1850   1.1  christos If instead the method returns a Python value which is convertible to a
   1851   1.1  christos @code{gdb.Value}, then @value{GDBN} performs the conversion and prints
   1852   1.1  christos the resulting value.  Again, this may result in a call to another
   1853   1.1  christos pretty-printer.  Python scalars (integers, floats, and booleans) and
   1854   1.1  christos strings are convertible to @code{gdb.Value}; other types are not.
   1855   1.1  christos 
   1856   1.1  christos Finally, if this method returns @code{None} then no further operations
   1857   1.9  christos are performed in this method and nothing is printed.
   1858   1.1  christos 
   1859   1.1  christos If the result is not one of these types, an exception is raised.
   1860   1.1  christos @end defun
   1861   1.1  christos 
   1862   1.9  christos @defun pretty_printer.num_children ()
   1863   1.9  christos This is not a basic method, so @value{GDBN} will only ever call it for
   1864   1.9  christos objects derived from @code{gdb.ValuePrinter}.
   1865   1.9  christos 
   1866   1.9  christos If available, this method should return the number of children.
   1867   1.9  christos @code{None} may be returned if the number can't readily be computed.
   1868   1.9  christos @end defun
   1869   1.9  christos 
   1870   1.9  christos @defun pretty_printer.child (n)
   1871   1.9  christos This is not a basic method, so @value{GDBN} will only ever call it for
   1872   1.9  christos objects derived from @code{gdb.ValuePrinter}.
   1873   1.9  christos 
   1874   1.9  christos If available, this method should return the child item (that is, a
   1875   1.9  christos tuple holding the name and value of this child) indicated by @var{n}.
   1876   1.9  christos Indices start at zero.
   1877   1.9  christos @end defun
   1878   1.9  christos 
   1879   1.1  christos @value{GDBN} provides a function which can be used to look up the
   1880   1.1  christos default pretty-printer for a @code{gdb.Value}:
   1881   1.1  christos 
   1882   1.1  christos @defun gdb.default_visualizer (value)
   1883   1.1  christos This function takes a @code{gdb.Value} object as an argument.  If a
   1884   1.1  christos pretty-printer for this value exists, then it is returned.  If no such
   1885   1.1  christos printer exists, then this returns @code{None}.
   1886   1.1  christos @end defun
   1887   1.1  christos 
   1888   1.8  christos Normally, a pretty-printer can respect the user's print settings
   1889   1.8  christos (including temporarily applied settings, such as @samp{/x}) simply by
   1890   1.8  christos calling @code{Value.format_string} (@pxref{Values From Inferior}).
   1891   1.8  christos However, these settings can also be queried directly:
   1892   1.8  christos 
   1893   1.8  christos @defun gdb.print_options ()
   1894   1.8  christos Return a dictionary whose keys are the valid keywords that can be
   1895   1.8  christos given to @code{Value.format_string}, and whose values are the user's
   1896   1.8  christos settings.  During a @code{print} or other operation, the values will
   1897   1.8  christos reflect any flags that are temporarily in effect.
   1898   1.8  christos 
   1899   1.8  christos @smallexample
   1900   1.8  christos (gdb) python print (gdb.print_options ()['max_elements'])
   1901   1.8  christos 200
   1902   1.8  christos @end smallexample
   1903   1.8  christos @end defun
   1904   1.8  christos 
   1905   1.1  christos @node Selecting Pretty-Printers
   1906   1.1  christos @subsubsection Selecting Pretty-Printers
   1907   1.1  christos @cindex selecting python pretty-printers
   1908   1.1  christos 
   1909   1.7  christos @value{GDBN} provides several ways to register a pretty-printer:
   1910   1.7  christos globally, per program space, and per objfile.  When choosing how to
   1911   1.7  christos register your pretty-printer, a good rule is to register it with the
   1912   1.7  christos smallest scope possible: that is prefer a specific objfile first, then
   1913   1.7  christos a program space, and only register a printer globally as a last
   1914   1.7  christos resort.
   1915   1.7  christos 
   1916   1.7  christos @defvar gdb.pretty_printers
   1917   1.1  christos The Python list @code{gdb.pretty_printers} contains an array of
   1918   1.1  christos functions or callable objects that have been registered via addition
   1919   1.1  christos as a pretty-printer.  Printers in this list are called @code{global}
   1920   1.1  christos printers, they're available when debugging all inferiors.
   1921   1.7  christos @end defvar
   1922   1.7  christos 
   1923   1.1  christos Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
   1924   1.1  christos Each @code{gdb.Objfile} also contains a @code{pretty_printers}
   1925   1.1  christos attribute.
   1926   1.1  christos 
   1927   1.1  christos Each function on these lists is passed a single @code{gdb.Value}
   1928   1.1  christos argument and should return a pretty-printer object conforming to the
   1929   1.1  christos interface definition above (@pxref{Pretty Printing API}).  If a function
   1930   1.1  christos cannot create a pretty-printer for the value, it should return
   1931   1.1  christos @code{None}.
   1932   1.1  christos 
   1933   1.1  christos @value{GDBN} first checks the @code{pretty_printers} attribute of each
   1934   1.1  christos @code{gdb.Objfile} in the current program space and iteratively calls
   1935   1.1  christos each enabled lookup routine in the list for that @code{gdb.Objfile}
   1936   1.1  christos until it receives a pretty-printer object.
   1937   1.1  christos If no pretty-printer is found in the objfile lists, @value{GDBN} then
   1938   1.1  christos searches the pretty-printer list of the current program space,
   1939   1.1  christos calling each enabled function until an object is returned.
   1940   1.1  christos After these lists have been exhausted, it tries the global
   1941   1.1  christos @code{gdb.pretty_printers} list, again calling each enabled function until an
   1942   1.1  christos object is returned.
   1943   1.1  christos 
   1944   1.1  christos The order in which the objfiles are searched is not specified.  For a
   1945   1.1  christos given list, functions are always invoked from the head of the list,
   1946   1.1  christos and iterated over sequentially until the end of the list, or a printer
   1947   1.1  christos object is returned.
   1948   1.1  christos 
   1949   1.1  christos For various reasons a pretty-printer may not work.
   1950   1.1  christos For example, the underlying data structure may have changed and
   1951   1.1  christos the pretty-printer is out of date.
   1952   1.1  christos 
   1953   1.1  christos The consequences of a broken pretty-printer are severe enough that
   1954   1.1  christos @value{GDBN} provides support for enabling and disabling individual
   1955   1.1  christos printers.  For example, if @code{print frame-arguments} is on,
   1956   1.1  christos a backtrace can become highly illegible if any argument is printed
   1957   1.1  christos with a broken printer.
   1958   1.1  christos 
   1959   1.1  christos Pretty-printers are enabled and disabled by attaching an @code{enabled}
   1960   1.1  christos attribute to the registered function or callable object.  If this attribute
   1961   1.1  christos is present and its value is @code{False}, the printer is disabled, otherwise
   1962   1.1  christos the printer is enabled.
   1963   1.1  christos 
   1964   1.1  christos @node Writing a Pretty-Printer
   1965   1.1  christos @subsubsection Writing a Pretty-Printer
   1966   1.1  christos @cindex writing a pretty-printer
   1967   1.1  christos 
   1968   1.1  christos A pretty-printer consists of two parts: a lookup function to detect
   1969   1.1  christos if the type is supported, and the printer itself.
   1970   1.1  christos 
   1971   1.1  christos Here is an example showing how a @code{std::string} printer might be
   1972   1.1  christos written.  @xref{Pretty Printing API}, for details on the API this class
   1973   1.9  christos must provide.  Note that this example uses the @code{gdb.ValuePrinter}
   1974   1.9  christos base class, and is careful to use a leading underscore for its local
   1975   1.9  christos state.
   1976   1.1  christos 
   1977   1.1  christos @smallexample
   1978   1.9  christos class StdStringPrinter(gdb.ValuePrinter):
   1979   1.1  christos     "Print a std::string"
   1980   1.1  christos 
   1981   1.1  christos     def __init__(self, val):
   1982   1.9  christos         self.__val = val
   1983   1.1  christos 
   1984   1.1  christos     def to_string(self):
   1985   1.9  christos         return self.__val['_M_dataplus']['_M_p']
   1986   1.1  christos 
   1987   1.1  christos     def display_hint(self):
   1988   1.1  christos         return 'string'
   1989   1.1  christos @end smallexample
   1990   1.1  christos 
   1991   1.1  christos And here is an example showing how a lookup function for the printer
   1992   1.1  christos example above might be written.
   1993   1.1  christos 
   1994   1.1  christos @smallexample
   1995   1.1  christos def str_lookup_function(val):
   1996   1.1  christos     lookup_tag = val.type.tag
   1997   1.8  christos     if lookup_tag is None:
   1998   1.1  christos         return None
   1999   1.1  christos     regex = re.compile("^std::basic_string<char,.*>$")
   2000   1.1  christos     if regex.match(lookup_tag):
   2001   1.1  christos         return StdStringPrinter(val)
   2002   1.1  christos     return None
   2003   1.1  christos @end smallexample
   2004   1.1  christos 
   2005   1.1  christos The example lookup function extracts the value's type, and attempts to
   2006   1.1  christos match it to a type that it can pretty-print.  If it is a type the
   2007   1.1  christos printer can pretty-print, it will return a printer object.  If not, it
   2008   1.1  christos returns @code{None}.
   2009   1.1  christos 
   2010   1.1  christos We recommend that you put your core pretty-printers into a Python
   2011   1.1  christos package.  If your pretty-printers are for use with a library, we
   2012   1.1  christos further recommend embedding a version number into the package name.
   2013   1.1  christos This practice will enable @value{GDBN} to load multiple versions of
   2014   1.1  christos your pretty-printers at the same time, because they will have
   2015   1.1  christos different names.
   2016   1.1  christos 
   2017   1.1  christos You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
   2018   1.1  christos can be evaluated multiple times without changing its meaning.  An
   2019   1.1  christos ideal auto-load file will consist solely of @code{import}s of your
   2020   1.1  christos printer modules, followed by a call to a register pretty-printers with
   2021   1.1  christos the current objfile.
   2022   1.1  christos 
   2023   1.1  christos Taken as a whole, this approach will scale nicely to multiple
   2024   1.1  christos inferiors, each potentially using a different library version.
   2025   1.1  christos Embedding a version number in the Python package name will ensure that
   2026   1.1  christos @value{GDBN} is able to load both sets of printers simultaneously.
   2027   1.1  christos Then, because the search for pretty-printers is done by objfile, and
   2028   1.1  christos because your auto-loaded code took care to register your library's
   2029   1.1  christos printers with a specific objfile, @value{GDBN} will find the correct
   2030   1.1  christos printers for the specific version of the library used by each
   2031   1.1  christos inferior.
   2032   1.1  christos 
   2033   1.1  christos To continue the @code{std::string} example (@pxref{Pretty Printing API}),
   2034   1.1  christos this code might appear in @code{gdb.libstdcxx.v6}:
   2035   1.1  christos 
   2036   1.1  christos @smallexample
   2037   1.1  christos def register_printers(objfile):
   2038   1.1  christos     objfile.pretty_printers.append(str_lookup_function)
   2039   1.1  christos @end smallexample
   2040   1.1  christos 
   2041   1.1  christos @noindent
   2042   1.1  christos And then the corresponding contents of the auto-load file would be:
   2043   1.1  christos 
   2044   1.1  christos @smallexample
   2045   1.1  christos import gdb.libstdcxx.v6
   2046   1.1  christos gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
   2047   1.1  christos @end smallexample
   2048   1.1  christos 
   2049   1.1  christos The previous example illustrates a basic pretty-printer.
   2050   1.1  christos There are a few things that can be improved on.
   2051   1.1  christos The printer doesn't have a name, making it hard to identify in a
   2052   1.1  christos list of installed printers.  The lookup function has a name, but
   2053   1.1  christos lookup functions can have arbitrary, even identical, names.
   2054   1.1  christos 
   2055   1.1  christos Second, the printer only handles one type, whereas a library typically has
   2056   1.1  christos several types.  One could install a lookup function for each desired type
   2057   1.1  christos in the library, but one could also have a single lookup function recognize
   2058   1.1  christos several types.  The latter is the conventional way this is handled.
   2059   1.1  christos If a pretty-printer can handle multiple data types, then its
   2060   1.1  christos @dfn{subprinters} are the printers for the individual data types.
   2061   1.1  christos 
   2062   1.1  christos The @code{gdb.printing} module provides a formal way of solving these
   2063   1.1  christos problems (@pxref{gdb.printing}).
   2064   1.1  christos Here is another example that handles multiple types.
   2065   1.1  christos 
   2066   1.1  christos These are the types we are going to pretty-print:
   2067   1.1  christos 
   2068   1.1  christos @smallexample
   2069   1.1  christos struct foo @{ int a, b; @};
   2070   1.1  christos struct bar @{ struct foo x, y; @};
   2071   1.1  christos @end smallexample
   2072   1.1  christos 
   2073   1.1  christos Here are the printers:
   2074   1.1  christos 
   2075   1.1  christos @smallexample
   2076   1.9  christos class fooPrinter(gdb.ValuePrinter):
   2077   1.1  christos     """Print a foo object."""
   2078   1.1  christos 
   2079   1.1  christos     def __init__(self, val):
   2080   1.9  christos         self.__val = val
   2081   1.1  christos 
   2082   1.1  christos     def to_string(self):
   2083   1.9  christos         return ("a=<" + str(self.__val["a"]) +
   2084   1.9  christos                 "> b=<" + str(self.__val["b"]) + ">")
   2085   1.1  christos 
   2086   1.9  christos class barPrinter(gdb.ValuePrinter):
   2087   1.1  christos     """Print a bar object."""
   2088   1.1  christos 
   2089   1.1  christos     def __init__(self, val):
   2090   1.9  christos         self.__val = val
   2091   1.1  christos 
   2092   1.1  christos     def to_string(self):
   2093   1.9  christos         return ("x=<" + str(self.__val["x"]) +
   2094   1.9  christos                 "> y=<" + str(self.__val["y"]) + ">")
   2095   1.1  christos @end smallexample
   2096   1.1  christos 
   2097   1.1  christos This example doesn't need a lookup function, that is handled by the
   2098   1.1  christos @code{gdb.printing} module.  Instead a function is provided to build up
   2099   1.1  christos the object that handles the lookup.
   2100   1.1  christos 
   2101   1.1  christos @smallexample
   2102   1.1  christos import gdb.printing
   2103   1.1  christos 
   2104   1.1  christos def build_pretty_printer():
   2105   1.1  christos     pp = gdb.printing.RegexpCollectionPrettyPrinter(
   2106   1.1  christos         "my_library")
   2107   1.1  christos     pp.add_printer('foo', '^foo$', fooPrinter)
   2108   1.1  christos     pp.add_printer('bar', '^bar$', barPrinter)
   2109   1.1  christos     return pp
   2110   1.1  christos @end smallexample
   2111   1.1  christos 
   2112   1.1  christos And here is the autoload support:
   2113   1.1  christos 
   2114   1.1  christos @smallexample
   2115   1.1  christos import gdb.printing
   2116   1.1  christos import my_library
   2117   1.1  christos gdb.printing.register_pretty_printer(
   2118   1.1  christos     gdb.current_objfile(),
   2119   1.1  christos     my_library.build_pretty_printer())
   2120   1.1  christos @end smallexample
   2121   1.1  christos 
   2122   1.1  christos Finally, when this printer is loaded into @value{GDBN}, here is the
   2123   1.1  christos corresponding output of @samp{info pretty-printer}:
   2124   1.1  christos 
   2125   1.1  christos @smallexample
   2126   1.1  christos (gdb) info pretty-printer
   2127   1.1  christos my_library.so:
   2128   1.1  christos   my_library
   2129   1.1  christos     foo
   2130   1.1  christos     bar
   2131   1.1  christos @end smallexample
   2132   1.1  christos 
   2133   1.1  christos @node Type Printing API
   2134   1.1  christos @subsubsection Type Printing API
   2135   1.1  christos @cindex type printing API for Python
   2136   1.1  christos 
   2137   1.1  christos @value{GDBN} provides a way for Python code to customize type display.
   2138   1.1  christos This is mainly useful for substituting canonical typedef names for
   2139   1.1  christos types.
   2140   1.1  christos 
   2141   1.1  christos @cindex type printer
   2142   1.1  christos A @dfn{type printer} is just a Python object conforming to a certain
   2143   1.1  christos protocol.  A simple base class implementing the protocol is provided;
   2144   1.1  christos see @ref{gdb.types}.  A type printer must supply at least:
   2145   1.1  christos 
   2146   1.1  christos @defivar type_printer enabled
   2147   1.1  christos A boolean which is True if the printer is enabled, and False
   2148   1.1  christos otherwise.  This is manipulated by the @code{enable type-printer}
   2149   1.1  christos and @code{disable type-printer} commands.
   2150   1.1  christos @end defivar
   2151   1.1  christos 
   2152   1.1  christos @defivar type_printer name
   2153   1.1  christos The name of the type printer.  This must be a string.  This is used by
   2154   1.1  christos the @code{enable type-printer} and @code{disable type-printer}
   2155   1.1  christos commands.
   2156   1.1  christos @end defivar
   2157   1.1  christos 
   2158   1.1  christos @defmethod type_printer instantiate (self)
   2159   1.1  christos This is called by @value{GDBN} at the start of type-printing.  It is
   2160   1.1  christos only called if the type printer is enabled.  This method must return a
   2161   1.1  christos new object that supplies a @code{recognize} method, as described below.
   2162   1.1  christos @end defmethod
   2163   1.1  christos 
   2164   1.1  christos 
   2165   1.1  christos When displaying a type, say via the @code{ptype} command, @value{GDBN}
   2166   1.1  christos will compute a list of type recognizers.  This is done by iterating
   2167   1.1  christos first over the per-objfile type printers (@pxref{Objfiles In Python}),
   2168   1.1  christos followed by the per-progspace type printers (@pxref{Progspaces In
   2169   1.1  christos Python}), and finally the global type printers.
   2170   1.1  christos 
   2171   1.1  christos @value{GDBN} will call the @code{instantiate} method of each enabled
   2172   1.1  christos type printer.  If this method returns @code{None}, then the result is
   2173   1.1  christos ignored; otherwise, it is appended to the list of recognizers.
   2174   1.1  christos 
   2175   1.1  christos Then, when @value{GDBN} is going to display a type name, it iterates
   2176   1.1  christos over the list of recognizers.  For each one, it calls the recognition
   2177   1.1  christos function, stopping if the function returns a non-@code{None} value.
   2178   1.1  christos The recognition function is defined as:
   2179   1.1  christos 
   2180   1.1  christos @defmethod type_recognizer recognize (self, type)
   2181   1.1  christos If @var{type} is not recognized, return @code{None}.  Otherwise,
   2182   1.1  christos return a string which is to be printed as the name of @var{type}.
   2183   1.1  christos The @var{type} argument will be an instance of @code{gdb.Type}
   2184   1.1  christos (@pxref{Types In Python}).
   2185   1.1  christos @end defmethod
   2186   1.1  christos 
   2187   1.1  christos @value{GDBN} uses this two-pass approach so that type printers can
   2188   1.1  christos efficiently cache information without holding on to it too long.  For
   2189   1.1  christos example, it can be convenient to look up type information in a type
   2190   1.1  christos printer and hold it for a recognizer's lifetime; if a single pass were
   2191   1.1  christos done then type printers would have to make use of the event system in
   2192   1.1  christos order to avoid holding information that could become stale as the
   2193   1.1  christos inferior changed.
   2194   1.1  christos 
   2195   1.1  christos @node Frame Filter API
   2196   1.6  christos @subsubsection Filtering Frames
   2197   1.1  christos @cindex frame filters api
   2198   1.1  christos 
   2199   1.1  christos Frame filters are Python objects that manipulate the visibility of a
   2200   1.1  christos frame or frames when a backtrace (@pxref{Backtrace}) is printed by
   2201   1.1  christos @value{GDBN}.
   2202   1.1  christos 
   2203   1.1  christos Only commands that print a backtrace, or, in the case of @sc{gdb/mi}
   2204   1.1  christos commands (@pxref{GDB/MI}), those that return a collection of frames
   2205   1.1  christos are affected.  The commands that work with frame filters are:
   2206   1.1  christos 
   2207   1.1  christos @code{backtrace} (@pxref{backtrace-command,, The backtrace command}),
   2208   1.1  christos @code{-stack-list-frames}
   2209   1.1  christos (@pxref{-stack-list-frames,, The -stack-list-frames command}),
   2210   1.1  christos @code{-stack-list-variables} (@pxref{-stack-list-variables,, The
   2211   1.1  christos -stack-list-variables command}), @code{-stack-list-arguments}
   2212   1.1  christos @pxref{-stack-list-arguments,, The -stack-list-arguments command}) and
   2213   1.1  christos @code{-stack-list-locals} (@pxref{-stack-list-locals,, The
   2214   1.1  christos -stack-list-locals command}).
   2215   1.1  christos 
   2216   1.1  christos A frame filter works by taking an iterator as an argument, applying
   2217   1.1  christos actions to the contents of that iterator, and returning another
   2218   1.1  christos iterator (or, possibly, the same iterator it was provided in the case
   2219   1.1  christos where the filter does not perform any operations).  Typically, frame
   2220   1.1  christos filters utilize tools such as the Python's @code{itertools} module to
   2221   1.1  christos work with and create new iterators from the source iterator.
   2222   1.1  christos Regardless of how a filter chooses to apply actions, it must not alter
   2223   1.1  christos the underlying @value{GDBN} frame or frames, or attempt to alter the
   2224   1.1  christos call-stack within @value{GDBN}.  This preserves data integrity within
   2225   1.1  christos @value{GDBN}.  Frame filters are executed on a priority basis and care
   2226   1.1  christos should be taken that some frame filters may have been executed before,
   2227   1.1  christos and that some frame filters will be executed after.
   2228   1.1  christos 
   2229   1.1  christos An important consideration when designing frame filters, and well
   2230   1.1  christos worth reflecting upon, is that frame filters should avoid unwinding
   2231   1.1  christos the call stack if possible.  Some stacks can run very deep, into the
   2232   1.1  christos tens of thousands in some cases.  To search every frame when a frame
   2233   1.1  christos filter executes may be too expensive at that step.  The frame filter
   2234   1.1  christos cannot know how many frames it has to iterate over, and it may have to
   2235   1.1  christos iterate through them all.  This ends up duplicating effort as
   2236   1.1  christos @value{GDBN} performs this iteration when it prints the frames.  If
   2237   1.1  christos the filter can defer unwinding frames until frame decorators are
   2238   1.1  christos executed, after the last filter has executed, it should.  @xref{Frame
   2239   1.1  christos Decorator API}, for more information on decorators.  Also, there are
   2240   1.1  christos examples for both frame decorators and filters in later chapters.
   2241   1.1  christos @xref{Writing a Frame Filter}, for more information.
   2242   1.1  christos 
   2243   1.1  christos The Python dictionary @code{gdb.frame_filters} contains key/object
   2244   1.1  christos pairings that comprise a frame filter.  Frame filters in this
   2245   1.1  christos dictionary are called @code{global} frame filters, and they are
   2246   1.1  christos available when debugging all inferiors.  These frame filters must
   2247   1.1  christos register with the dictionary directly.  In addition to the
   2248   1.1  christos @code{global} dictionary, there are other dictionaries that are loaded
   2249   1.1  christos with different inferiors via auto-loading (@pxref{Python
   2250   1.1  christos Auto-loading}).  The two other areas where frame filter dictionaries
   2251   1.1  christos can be found are: @code{gdb.Progspace} which contains a
   2252   1.1  christos @code{frame_filters} dictionary attribute, and each @code{gdb.Objfile}
   2253   1.1  christos object which also contains a @code{frame_filters} dictionary
   2254   1.1  christos attribute.
   2255   1.1  christos 
   2256   1.1  christos When a command is executed from @value{GDBN} that is compatible with
   2257   1.1  christos frame filters, @value{GDBN} combines the @code{global},
   2258   1.1  christos @code{gdb.Progspace} and all @code{gdb.Objfile} dictionaries currently
   2259   1.1  christos loaded.  All of the @code{gdb.Objfile} dictionaries are combined, as
   2260   1.1  christos several frames, and thus several object files, might be in use.
   2261   1.1  christos @value{GDBN} then prunes any frame filter whose @code{enabled}
   2262   1.1  christos attribute is @code{False}.  This pruned list is then sorted according
   2263   1.1  christos to the @code{priority} attribute in each filter.
   2264   1.1  christos 
   2265   1.1  christos Once the dictionaries are combined, pruned and sorted, @value{GDBN}
   2266   1.1  christos creates an iterator which wraps each frame in the call stack in a
   2267   1.1  christos @code{FrameDecorator} object, and calls each filter in order.  The
   2268   1.1  christos output from the previous filter will always be the input to the next
   2269   1.1  christos filter, and so on.
   2270   1.1  christos 
   2271   1.1  christos Frame filters have a mandatory interface which each frame filter must
   2272   1.1  christos implement, defined here:
   2273   1.1  christos 
   2274   1.1  christos @defun FrameFilter.filter (iterator)
   2275   1.1  christos @value{GDBN} will call this method on a frame filter when it has
   2276   1.1  christos reached the order in the priority list for that filter.
   2277   1.1  christos 
   2278   1.1  christos For example, if there are four frame filters:
   2279   1.1  christos 
   2280   1.1  christos @smallexample
   2281   1.1  christos Name         Priority
   2282   1.1  christos 
   2283   1.1  christos Filter1      5
   2284   1.1  christos Filter2      10
   2285   1.1  christos Filter3      100
   2286   1.1  christos Filter4      1
   2287   1.1  christos @end smallexample
   2288   1.1  christos 
   2289   1.1  christos The order that the frame filters will be called is:
   2290   1.1  christos 
   2291   1.1  christos @smallexample
   2292   1.1  christos Filter3 -> Filter2 -> Filter1 -> Filter4
   2293   1.1  christos @end smallexample
   2294   1.1  christos 
   2295   1.1  christos Note that the output from @code{Filter3} is passed to the input of
   2296   1.1  christos @code{Filter2}, and so on.
   2297   1.1  christos 
   2298   1.1  christos This @code{filter} method is passed a Python iterator.  This iterator
   2299   1.1  christos contains a sequence of frame decorators that wrap each
   2300   1.1  christos @code{gdb.Frame}, or a frame decorator that wraps another frame
   2301   1.1  christos decorator.  The first filter that is executed in the sequence of frame
   2302   1.1  christos filters will receive an iterator entirely comprised of default
   2303   1.1  christos @code{FrameDecorator} objects.  However, after each frame filter is
   2304   1.1  christos executed, the previous frame filter may have wrapped some or all of
   2305   1.1  christos the frame decorators with their own frame decorator.  As frame
   2306   1.1  christos decorators must also conform to a mandatory interface, these
   2307   1.1  christos decorators can be assumed to act in a uniform manner (@pxref{Frame
   2308   1.1  christos Decorator API}).
   2309   1.1  christos 
   2310   1.1  christos This method must return an object conforming to the Python iterator
   2311   1.1  christos protocol.  Each item in the iterator must be an object conforming to
   2312   1.1  christos the frame decorator interface.  If a frame filter does not wish to
   2313   1.1  christos perform any operations on this iterator, it should return that
   2314   1.1  christos iterator untouched.
   2315   1.1  christos 
   2316   1.1  christos This method is not optional.  If it does not exist, @value{GDBN} will
   2317   1.1  christos raise and print an error.
   2318   1.1  christos @end defun
   2319   1.1  christos 
   2320   1.1  christos @defvar FrameFilter.name
   2321   1.1  christos The @code{name} attribute must be Python string which contains the
   2322   1.1  christos name of the filter displayed by @value{GDBN} (@pxref{Frame Filter
   2323   1.1  christos Management}).  This attribute may contain any combination of letters
   2324   1.1  christos or numbers.  Care should be taken to ensure that it is unique.  This
   2325   1.1  christos attribute is mandatory.
   2326   1.1  christos @end defvar
   2327   1.1  christos 
   2328   1.1  christos @defvar FrameFilter.enabled
   2329   1.1  christos The @code{enabled} attribute must be Python boolean.  This attribute
   2330   1.1  christos indicates to @value{GDBN} whether the frame filter is enabled, and
   2331   1.1  christos should be considered when frame filters are executed.  If
   2332   1.1  christos @code{enabled} is @code{True}, then the frame filter will be executed
   2333   1.1  christos when any of the backtrace commands detailed earlier in this chapter
   2334   1.1  christos are executed.  If @code{enabled} is @code{False}, then the frame
   2335   1.1  christos filter will not be executed.  This attribute is mandatory.
   2336   1.1  christos @end defvar
   2337   1.1  christos 
   2338   1.1  christos @defvar FrameFilter.priority
   2339   1.1  christos The @code{priority} attribute must be Python integer.  This attribute
   2340   1.1  christos controls the order of execution in relation to other frame filters.
   2341   1.1  christos There are no imposed limits on the range of @code{priority} other than
   2342   1.1  christos it must be a valid integer.  The higher the @code{priority} attribute,
   2343   1.1  christos the sooner the frame filter will be executed in relation to other
   2344   1.1  christos frame filters.  Although @code{priority} can be negative, it is
   2345   1.1  christos recommended practice to assume zero is the lowest priority that a
   2346   1.1  christos frame filter can be assigned.  Frame filters that have the same
   2347   1.1  christos priority are executed in unsorted order in that priority slot.  This
   2348   1.6  christos attribute is mandatory.  100 is a good default priority.
   2349   1.1  christos @end defvar
   2350   1.1  christos 
   2351   1.1  christos @node Frame Decorator API
   2352   1.6  christos @subsubsection Decorating Frames
   2353   1.1  christos @cindex frame decorator api
   2354   1.1  christos 
   2355   1.1  christos Frame decorators are sister objects to frame filters (@pxref{Frame
   2356   1.1  christos Filter API}).  Frame decorators are applied by a frame filter and can
   2357   1.1  christos only be used in conjunction with frame filters.
   2358   1.1  christos 
   2359   1.1  christos The purpose of a frame decorator is to customize the printed content
   2360   1.1  christos of each @code{gdb.Frame} in commands where frame filters are executed.
   2361   1.1  christos This concept is called decorating a frame.  Frame decorators decorate
   2362   1.1  christos a @code{gdb.Frame} with Python code contained within each API call.
   2363   1.1  christos This separates the actual data contained in a @code{gdb.Frame} from
   2364   1.1  christos the decorated data produced by a frame decorator.  This abstraction is
   2365   1.1  christos necessary to maintain integrity of the data contained in each
   2366   1.1  christos @code{gdb.Frame}.
   2367   1.1  christos 
   2368   1.1  christos Frame decorators have a mandatory interface, defined below.
   2369   1.1  christos 
   2370   1.1  christos @value{GDBN} already contains a frame decorator called
   2371   1.1  christos @code{FrameDecorator}.  This contains substantial amounts of
   2372   1.1  christos boilerplate code to decorate the content of a @code{gdb.Frame}.  It is
   2373   1.1  christos recommended that other frame decorators inherit and extend this
   2374   1.1  christos object, and only to override the methods needed.
   2375   1.1  christos 
   2376   1.6  christos @tindex gdb.FrameDecorator
   2377   1.6  christos @code{FrameDecorator} is defined in the Python module
   2378   1.6  christos @code{gdb.FrameDecorator}, so your code can import it like:
   2379   1.6  christos @smallexample
   2380   1.6  christos from gdb.FrameDecorator import FrameDecorator
   2381   1.6  christos @end smallexample
   2382   1.6  christos 
   2383   1.1  christos @defun FrameDecorator.elided (self)
   2384   1.1  christos 
   2385   1.1  christos The @code{elided} method groups frames together in a hierarchical
   2386   1.1  christos system.  An example would be an interpreter, where multiple low-level
   2387   1.1  christos frames make up a single call in the interpreted language.  In this
   2388   1.1  christos example, the frame filter would elide the low-level frames and present
   2389   1.1  christos a single high-level frame, representing the call in the interpreted
   2390   1.1  christos language, to the user.
   2391   1.1  christos 
   2392   1.1  christos The @code{elided} function must return an iterable and this iterable
   2393   1.1  christos must contain the frames that are being elided wrapped in a suitable
   2394   1.1  christos frame decorator.  If no frames are being elided this function may
   2395   1.1  christos return an empty iterable, or @code{None}.  Elided frames are indented
   2396   1.1  christos from normal frames in a @code{CLI} backtrace, or in the case of
   2397   1.9  christos @sc{gdb/mi}, are placed in the @code{children} field of the eliding
   2398   1.1  christos frame.
   2399   1.1  christos 
   2400   1.1  christos It is the frame filter's task to also filter out the elided frames from
   2401   1.1  christos the source iterator.  This will avoid printing the frame twice.
   2402   1.1  christos @end defun
   2403   1.1  christos 
   2404   1.1  christos @defun FrameDecorator.function (self)
   2405   1.1  christos 
   2406   1.1  christos This method returns the name of the function in the frame that is to
   2407   1.1  christos be printed.
   2408   1.1  christos 
   2409   1.1  christos This method must return a Python string describing the function, or
   2410   1.1  christos @code{None}.
   2411   1.1  christos 
   2412   1.1  christos If this function returns @code{None}, @value{GDBN} will not print any
   2413   1.1  christos data for this field.
   2414   1.1  christos @end defun
   2415   1.1  christos 
   2416   1.1  christos @defun FrameDecorator.address (self)
   2417   1.1  christos 
   2418   1.1  christos This method returns the address of the frame that is to be printed.
   2419   1.1  christos 
   2420   1.1  christos This method must return a Python numeric integer type of sufficient
   2421   1.1  christos size to describe the address of the frame, or @code{None}.
   2422   1.1  christos 
   2423   1.1  christos If this function returns a @code{None}, @value{GDBN} will not print
   2424   1.1  christos any data for this field.
   2425   1.1  christos @end defun
   2426   1.1  christos 
   2427   1.1  christos @defun FrameDecorator.filename (self)
   2428   1.1  christos 
   2429   1.1  christos This method returns the filename and path associated with this frame.
   2430   1.1  christos 
   2431   1.1  christos This method must return a Python string containing the filename and
   2432   1.1  christos the path to the object file backing the frame, or @code{None}.
   2433   1.1  christos 
   2434   1.1  christos If this function returns a @code{None}, @value{GDBN} will not print
   2435   1.1  christos any data for this field.
   2436   1.1  christos @end defun
   2437   1.1  christos 
   2438   1.1  christos @defun FrameDecorator.line (self):
   2439   1.1  christos 
   2440   1.1  christos This method returns the line number associated with the current
   2441   1.1  christos position within the function addressed by this frame.
   2442   1.1  christos 
   2443   1.1  christos This method must return a Python integer type, or @code{None}.
   2444   1.1  christos 
   2445   1.1  christos If this function returns a @code{None}, @value{GDBN} will not print
   2446   1.1  christos any data for this field.
   2447   1.1  christos @end defun
   2448   1.1  christos 
   2449   1.1  christos @defun FrameDecorator.frame_args (self)
   2450   1.1  christos @anchor{frame_args}
   2451   1.1  christos 
   2452   1.1  christos This method must return an iterable, or @code{None}.  Returning an
   2453   1.1  christos empty iterable, or @code{None} means frame arguments will not be
   2454   1.1  christos printed for this frame.  This iterable must contain objects that
   2455   1.1  christos implement two methods, described here.
   2456   1.1  christos 
   2457   1.8  christos This object must implement a @code{symbol} method which takes a
   2458   1.1  christos single @code{self} parameter and must return a @code{gdb.Symbol}
   2459   1.1  christos (@pxref{Symbols In Python}), or a Python string.  The object must also
   2460   1.1  christos implement a @code{value} method which takes a single @code{self}
   2461   1.1  christos parameter and must return a @code{gdb.Value} (@pxref{Values From
   2462   1.1  christos Inferior}), a Python value, or @code{None}.  If the @code{value}
   2463   1.1  christos method returns @code{None}, and the @code{argument} method returns a
   2464   1.1  christos @code{gdb.Symbol}, @value{GDBN} will look-up and print the value of
   2465   1.1  christos the @code{gdb.Symbol} automatically.
   2466   1.1  christos 
   2467   1.1  christos A brief example:
   2468   1.1  christos 
   2469   1.1  christos @smallexample
   2470   1.1  christos class SymValueWrapper():
   2471   1.1  christos 
   2472   1.1  christos     def __init__(self, symbol, value):
   2473   1.1  christos         self.sym = symbol
   2474   1.1  christos         self.val = value
   2475   1.1  christos 
   2476   1.1  christos     def value(self):
   2477   1.1  christos         return self.val
   2478   1.1  christos 
   2479   1.1  christos     def symbol(self):
   2480   1.1  christos         return self.sym
   2481   1.1  christos 
   2482   1.1  christos class SomeFrameDecorator()
   2483   1.1  christos ...
   2484   1.1  christos ...
   2485   1.1  christos     def frame_args(self):
   2486   1.1  christos         args = []
   2487   1.1  christos         try:
   2488   1.1  christos             block = self.inferior_frame.block()
   2489   1.1  christos         except:
   2490   1.1  christos             return None
   2491   1.1  christos 
   2492   1.1  christos         # Iterate over all symbols in a block.  Only add
   2493   1.1  christos         # symbols that are arguments.
   2494   1.1  christos         for sym in block:
   2495   1.1  christos             if not sym.is_argument:
   2496   1.1  christos                 continue
   2497   1.1  christos             args.append(SymValueWrapper(sym,None))
   2498   1.1  christos 
   2499   1.1  christos         # Add example synthetic argument.
   2500   1.1  christos         args.append(SymValueWrapper(``foo'', 42))
   2501   1.1  christos 
   2502   1.1  christos         return args
   2503   1.1  christos @end smallexample
   2504   1.1  christos @end defun
   2505   1.1  christos 
   2506   1.1  christos @defun FrameDecorator.frame_locals (self)
   2507   1.1  christos 
   2508   1.1  christos This method must return an iterable or @code{None}.  Returning an
   2509   1.1  christos empty iterable, or @code{None} means frame local arguments will not be
   2510   1.1  christos printed for this frame.
   2511   1.1  christos 
   2512   1.1  christos The object interface, the description of the various strategies for
   2513   1.1  christos reading frame locals, and the example are largely similar to those
   2514   1.1  christos described in the @code{frame_args} function, (@pxref{frame_args,,The
   2515   1.1  christos frame filter frame_args function}).  Below is a modified example:
   2516   1.1  christos 
   2517   1.1  christos @smallexample
   2518   1.1  christos class SomeFrameDecorator()
   2519   1.1  christos ...
   2520   1.1  christos ...
   2521   1.1  christos     def frame_locals(self):
   2522   1.1  christos         vars = []
   2523   1.1  christos         try:
   2524   1.1  christos             block = self.inferior_frame.block()
   2525   1.1  christos         except:
   2526   1.1  christos             return None
   2527   1.1  christos 
   2528   1.1  christos         # Iterate over all symbols in a block.  Add all
   2529   1.1  christos         # symbols, except arguments.
   2530   1.1  christos         for sym in block:
   2531   1.1  christos             if sym.is_argument:
   2532   1.1  christos                 continue
   2533   1.1  christos             vars.append(SymValueWrapper(sym,None))
   2534   1.1  christos 
   2535   1.1  christos         # Add an example of a synthetic local variable.
   2536   1.1  christos         vars.append(SymValueWrapper(``bar'', 99))
   2537   1.1  christos 
   2538   1.1  christos         return vars
   2539   1.1  christos @end smallexample
   2540   1.1  christos @end defun
   2541   1.1  christos 
   2542   1.1  christos @defun FrameDecorator.inferior_frame (self):
   2543   1.1  christos 
   2544   1.1  christos This method must return the underlying @code{gdb.Frame} that this
   2545   1.1  christos frame decorator is decorating.  @value{GDBN} requires the underlying
   2546   1.1  christos frame for internal frame information to determine how to print certain
   2547   1.1  christos values when printing a frame.
   2548   1.1  christos @end defun
   2549   1.1  christos 
   2550   1.1  christos @node Writing a Frame Filter
   2551   1.1  christos @subsubsection Writing a Frame Filter
   2552   1.1  christos @cindex writing a frame filter
   2553   1.1  christos 
   2554   1.1  christos There are three basic elements that a frame filter must implement: it
   2555   1.1  christos must correctly implement the documented interface (@pxref{Frame Filter
   2556   1.1  christos API}), it must register itself with @value{GDBN}, and finally, it must
   2557   1.1  christos decide if it is to work on the data provided by @value{GDBN}.  In all
   2558   1.1  christos cases, whether it works on the iterator or not, each frame filter must
   2559   1.1  christos return an iterator.  A bare-bones frame filter follows the pattern in
   2560   1.1  christos the following example.
   2561   1.1  christos 
   2562   1.1  christos @smallexample
   2563   1.1  christos import gdb
   2564   1.1  christos 
   2565   1.1  christos class FrameFilter():
   2566   1.1  christos 
   2567   1.1  christos     def __init__(self):
   2568   1.1  christos         # Frame filter attribute creation.
   2569   1.1  christos         #
   2570   1.1  christos         # 'name' is the name of the filter that GDB will display.
   2571   1.1  christos         #
   2572   1.1  christos         # 'priority' is the priority of the filter relative to other
   2573   1.1  christos         # filters.
   2574   1.1  christos         #
   2575   1.1  christos         # 'enabled' is a boolean that indicates whether this filter is
   2576   1.1  christos         # enabled and should be executed.
   2577   1.1  christos 
   2578   1.1  christos         self.name = "Foo"
   2579   1.1  christos         self.priority = 100
   2580   1.1  christos         self.enabled = True
   2581   1.1  christos 
   2582   1.1  christos         # Register this frame filter with the global frame_filters
   2583   1.1  christos         # dictionary.
   2584   1.1  christos         gdb.frame_filters[self.name] = self
   2585   1.1  christos 
   2586   1.1  christos     def filter(self, frame_iter):
   2587   1.1  christos         # Just return the iterator.
   2588   1.1  christos         return frame_iter
   2589   1.1  christos @end smallexample
   2590   1.1  christos 
   2591   1.1  christos The frame filter in the example above implements the three
   2592   1.1  christos requirements for all frame filters.  It implements the API, self
   2593   1.1  christos registers, and makes a decision on the iterator (in this case, it just
   2594   1.1  christos returns the iterator untouched).
   2595   1.1  christos 
   2596   1.1  christos The first step is attribute creation and assignment, and as shown in
   2597   1.1  christos the comments the filter assigns the following attributes:  @code{name},
   2598   1.1  christos @code{priority} and whether the filter should be enabled with the
   2599   1.1  christos @code{enabled} attribute.
   2600   1.1  christos 
   2601   1.1  christos The second step is registering the frame filter with the dictionary or
   2602   1.1  christos dictionaries that the frame filter has interest in.  As shown in the
   2603   1.1  christos comments, this filter just registers itself with the global dictionary
   2604   1.1  christos @code{gdb.frame_filters}.  As noted earlier, @code{gdb.frame_filters}
   2605   1.1  christos is a dictionary that is initialized in the @code{gdb} module when
   2606   1.1  christos @value{GDBN} starts.  What dictionary a filter registers with is an
   2607   1.1  christos important consideration.  Generally, if a filter is specific to a set
   2608   1.1  christos of code, it should be registered either in the @code{objfile} or
   2609   1.1  christos @code{progspace} dictionaries as they are specific to the program
   2610   1.1  christos currently loaded in @value{GDBN}.  The global dictionary is always
   2611   1.1  christos present in @value{GDBN} and is never unloaded.  Any filters registered
   2612   1.1  christos with the global dictionary will exist until @value{GDBN} exits.  To
   2613   1.1  christos avoid filters that may conflict, it is generally better to register
   2614   1.1  christos frame filters against the dictionaries that more closely align with
   2615   1.1  christos the usage of the filter currently in question.  @xref{Python
   2616   1.1  christos Auto-loading}, for further information on auto-loading Python scripts.
   2617   1.1  christos 
   2618   1.1  christos @value{GDBN} takes a hands-off approach to frame filter registration,
   2619   1.1  christos therefore it is the frame filter's responsibility to ensure
   2620   1.1  christos registration has occurred, and that any exceptions are handled
   2621   1.1  christos appropriately.  In particular, you may wish to handle exceptions
   2622   1.1  christos relating to Python dictionary key uniqueness.  It is mandatory that
   2623   1.1  christos the dictionary key is the same as frame filter's @code{name}
   2624   1.1  christos attribute.  When a user manages frame filters (@pxref{Frame Filter
   2625   1.1  christos Management}), the names @value{GDBN} will display are those contained
   2626   1.1  christos in the @code{name} attribute.
   2627   1.1  christos 
   2628   1.1  christos The final step of this example is the implementation of the
   2629   1.1  christos @code{filter} method.  As shown in the example comments, we define the
   2630   1.1  christos @code{filter} method and note that the method must take an iterator,
   2631   1.1  christos and also must return an iterator.  In this bare-bones example, the
   2632   1.1  christos frame filter is not very useful as it just returns the iterator
   2633   1.1  christos untouched.  However this is a valid operation for frame filters that
   2634   1.1  christos have the @code{enabled} attribute set, but decide not to operate on
   2635   1.1  christos any frames.
   2636   1.1  christos 
   2637   1.1  christos In the next example, the frame filter operates on all frames and
   2638   1.1  christos utilizes a frame decorator to perform some work on the frames.
   2639   1.1  christos @xref{Frame Decorator API}, for further information on the frame
   2640   1.1  christos decorator interface.
   2641   1.1  christos 
   2642   1.1  christos This example works on inlined frames.  It highlights frames which are
   2643   1.1  christos inlined by tagging them with an ``[inlined]'' tag.  By applying a
   2644   1.1  christos frame decorator to all frames with the Python @code{itertools imap}
   2645   1.1  christos method, the example defers actions to the frame decorator.  Frame
   2646   1.1  christos decorators are only processed when @value{GDBN} prints the backtrace.
   2647   1.1  christos 
   2648   1.1  christos This introduces a new decision making topic: whether to perform
   2649   1.1  christos decision making operations at the filtering step, or at the printing
   2650   1.1  christos step.  In this example's approach, it does not perform any filtering
   2651   1.1  christos decisions at the filtering step beyond mapping a frame decorator to
   2652   1.1  christos each frame.  This allows the actual decision making to be performed
   2653   1.1  christos when each frame is printed.  This is an important consideration, and
   2654   1.1  christos well worth reflecting upon when designing a frame filter.  An issue
   2655   1.1  christos that frame filters should avoid is unwinding the stack if possible.
   2656   1.1  christos Some stacks can run very deep, into the tens of thousands in some
   2657   1.1  christos cases.  To search every frame to determine if it is inlined ahead of
   2658   1.1  christos time may be too expensive at the filtering step.  The frame filter
   2659   1.1  christos cannot know how many frames it has to iterate over, and it would have
   2660   1.1  christos to iterate through them all.  This ends up duplicating effort as
   2661   1.1  christos @value{GDBN} performs this iteration when it prints the frames.
   2662   1.1  christos 
   2663   1.1  christos In this example decision making can be deferred to the printing step.
   2664   1.1  christos As each frame is printed, the frame decorator can examine each frame
   2665   1.1  christos in turn when @value{GDBN} iterates.  From a performance viewpoint,
   2666   1.1  christos this is the most appropriate decision to make as it avoids duplicating
   2667   1.1  christos the effort that the printing step would undertake anyway.  Also, if
   2668   1.1  christos there are many frame filters unwinding the stack during filtering, it
   2669   1.1  christos can substantially delay the printing of the backtrace which will
   2670   1.1  christos result in large memory usage, and a poor user experience.
   2671   1.1  christos 
   2672   1.1  christos @smallexample
   2673   1.1  christos class InlineFilter():
   2674   1.1  christos 
   2675   1.1  christos     def __init__(self):
   2676   1.1  christos         self.name = "InlinedFrameFilter"
   2677   1.1  christos         self.priority = 100
   2678   1.1  christos         self.enabled = True
   2679   1.1  christos         gdb.frame_filters[self.name] = self
   2680   1.1  christos 
   2681   1.1  christos     def filter(self, frame_iter):
   2682   1.1  christos         frame_iter = itertools.imap(InlinedFrameDecorator,
   2683   1.1  christos                                     frame_iter)
   2684   1.1  christos         return frame_iter
   2685   1.1  christos @end smallexample
   2686   1.1  christos 
   2687   1.1  christos This frame filter is somewhat similar to the earlier example, except
   2688   1.1  christos that the @code{filter} method applies a frame decorator object called
   2689   1.1  christos @code{InlinedFrameDecorator} to each element in the iterator.  The
   2690   1.1  christos @code{imap} Python method is light-weight.  It does not proactively
   2691   1.1  christos iterate over the iterator, but rather creates a new iterator which
   2692   1.1  christos wraps the existing one.
   2693   1.1  christos 
   2694   1.1  christos Below is the frame decorator for this example.
   2695   1.1  christos 
   2696   1.1  christos @smallexample
   2697   1.1  christos class InlinedFrameDecorator(FrameDecorator):
   2698   1.1  christos 
   2699   1.1  christos     def __init__(self, fobj):
   2700   1.1  christos         super(InlinedFrameDecorator, self).__init__(fobj)
   2701   1.1  christos 
   2702   1.1  christos     def function(self):
   2703   1.8  christos         frame = self.inferior_frame()
   2704   1.1  christos         name = str(frame.name())
   2705   1.1  christos 
   2706   1.1  christos         if frame.type() == gdb.INLINE_FRAME:
   2707   1.1  christos             name = name + " [inlined]"
   2708   1.1  christos 
   2709   1.1  christos         return name
   2710   1.1  christos @end smallexample
   2711   1.1  christos 
   2712   1.1  christos This frame decorator only defines and overrides the @code{function}
   2713   1.1  christos method.  It lets the supplied @code{FrameDecorator}, which is shipped
   2714   1.1  christos with @value{GDBN}, perform the other work associated with printing
   2715   1.1  christos this frame.
   2716   1.1  christos 
   2717   1.1  christos The combination of these two objects create this output from a
   2718   1.1  christos backtrace:
   2719   1.1  christos 
   2720   1.1  christos @smallexample
   2721   1.1  christos #0  0x004004e0 in bar () at inline.c:11
   2722   1.1  christos #1  0x00400566 in max [inlined] (b=6, a=12) at inline.c:21
   2723   1.1  christos #2  0x00400566 in main () at inline.c:31
   2724   1.1  christos @end smallexample
   2725   1.1  christos 
   2726   1.1  christos So in the case of this example, a frame decorator is applied to all
   2727   1.1  christos frames, regardless of whether they may be inlined or not.  As
   2728   1.1  christos @value{GDBN} iterates over the iterator produced by the frame filters,
   2729   1.1  christos @value{GDBN} executes each frame decorator which then makes a decision
   2730   1.1  christos on what to print in the @code{function} callback.  Using a strategy
   2731   1.1  christos like this is a way to defer decisions on the frame content to printing
   2732   1.1  christos time.
   2733   1.1  christos 
   2734   1.1  christos @subheading Eliding Frames
   2735   1.1  christos 
   2736   1.1  christos It might be that the above example is not desirable for representing
   2737   1.1  christos inlined frames, and a hierarchical approach may be preferred.  If we
   2738   1.1  christos want to hierarchically represent frames, the @code{elided} frame
   2739   1.1  christos decorator interface might be preferable.
   2740   1.1  christos 
   2741   1.1  christos This example approaches the issue with the @code{elided} method.  This
   2742   1.1  christos example is quite long, but very simplistic.  It is out-of-scope for
   2743   1.1  christos this section to write a complete example that comprehensively covers
   2744   1.1  christos all approaches of finding and printing inlined frames.  However, this
   2745   1.1  christos example illustrates the approach an author might use.
   2746   1.1  christos 
   2747   1.1  christos This example comprises of three sections.
   2748   1.1  christos 
   2749   1.1  christos @smallexample
   2750   1.1  christos class InlineFrameFilter():
   2751   1.1  christos 
   2752   1.1  christos     def __init__(self):
   2753   1.1  christos         self.name = "InlinedFrameFilter"
   2754   1.1  christos         self.priority = 100
   2755   1.1  christos         self.enabled = True
   2756   1.1  christos         gdb.frame_filters[self.name] = self
   2757   1.1  christos 
   2758   1.1  christos     def filter(self, frame_iter):
   2759   1.1  christos         return ElidingInlineIterator(frame_iter)
   2760   1.1  christos @end smallexample
   2761   1.1  christos 
   2762   1.1  christos This frame filter is very similar to the other examples.  The only
   2763   1.1  christos difference is this frame filter is wrapping the iterator provided to
   2764   1.1  christos it (@code{frame_iter}) with a custom iterator called
   2765   1.1  christos @code{ElidingInlineIterator}.  This again defers actions to when
   2766   1.1  christos @value{GDBN} prints the backtrace, as the iterator is not traversed
   2767   1.1  christos until printing.
   2768   1.1  christos 
   2769   1.1  christos The iterator for this example is as follows.  It is in this section of
   2770   1.1  christos the example where decisions are made on the content of the backtrace.
   2771   1.1  christos 
   2772   1.1  christos @smallexample
   2773   1.1  christos class ElidingInlineIterator:
   2774   1.1  christos     def __init__(self, ii):
   2775   1.1  christos         self.input_iterator = ii
   2776   1.1  christos 
   2777   1.1  christos     def __iter__(self):
   2778   1.1  christos         return self
   2779   1.1  christos 
   2780   1.1  christos     def next(self):
   2781   1.1  christos         frame = next(self.input_iterator)
   2782   1.1  christos 
   2783   1.1  christos         if frame.inferior_frame().type() != gdb.INLINE_FRAME:
   2784   1.1  christos             return frame
   2785   1.1  christos 
   2786   1.1  christos         try:
   2787   1.1  christos             eliding_frame = next(self.input_iterator)
   2788   1.1  christos         except StopIteration:
   2789   1.1  christos             return frame
   2790   1.1  christos         return ElidingFrameDecorator(eliding_frame, [frame])
   2791   1.1  christos @end smallexample
   2792   1.1  christos 
   2793   1.1  christos This iterator implements the Python iterator protocol.  When the
   2794   1.1  christos @code{next} function is called (when @value{GDBN} prints each frame),
   2795   1.1  christos the iterator checks if this frame decorator, @code{frame}, is wrapping
   2796   1.1  christos an inlined frame.  If it is not, it returns the existing frame decorator
   2797   1.1  christos untouched.  If it is wrapping an inlined frame, it assumes that the
   2798   1.1  christos inlined frame was contained within the next oldest frame,
   2799   1.1  christos @code{eliding_frame}, which it fetches.  It then creates and returns a
   2800   1.1  christos frame decorator, @code{ElidingFrameDecorator}, which contains both the
   2801   1.1  christos elided frame, and the eliding frame.
   2802   1.1  christos 
   2803   1.1  christos @smallexample
   2804   1.1  christos class ElidingInlineDecorator(FrameDecorator):
   2805   1.1  christos 
   2806   1.1  christos     def __init__(self, frame, elided_frames):
   2807   1.1  christos         super(ElidingInlineDecorator, self).__init__(frame)
   2808   1.1  christos         self.frame = frame
   2809   1.1  christos         self.elided_frames = elided_frames
   2810   1.1  christos 
   2811   1.1  christos     def elided(self):
   2812   1.1  christos         return iter(self.elided_frames)
   2813   1.1  christos @end smallexample
   2814   1.1  christos 
   2815   1.1  christos This frame decorator overrides one function and returns the inlined
   2816   1.1  christos frame in the @code{elided} method.  As before it lets
   2817   1.1  christos @code{FrameDecorator} do the rest of the work involved in printing
   2818   1.1  christos this frame.  This produces the following output.
   2819   1.1  christos 
   2820   1.1  christos @smallexample
   2821   1.1  christos #0  0x004004e0 in bar () at inline.c:11
   2822   1.1  christos #2  0x00400529 in main () at inline.c:25
   2823   1.1  christos     #1  0x00400529 in max (b=6, a=12) at inline.c:15
   2824   1.1  christos @end smallexample
   2825   1.1  christos 
   2826   1.1  christos In that output, @code{max} which has been inlined into @code{main} is
   2827   1.1  christos printed hierarchically.  Another approach would be to combine the
   2828   1.1  christos @code{function} method, and the @code{elided} method to both print a
   2829   1.1  christos marker in the inlined frame, and also show the hierarchical
   2830   1.1  christos relationship.
   2831   1.1  christos 
   2832   1.3  christos @node Unwinding Frames in Python
   2833   1.3  christos @subsubsection Unwinding Frames in Python
   2834   1.3  christos @cindex unwinding frames in Python
   2835   1.3  christos 
   2836   1.3  christos In @value{GDBN} terminology ``unwinding'' is the process of finding
   2837   1.3  christos the previous frame (that is, caller's) from the current one.  An
   2838   1.3  christos unwinder has three methods.  The first one checks if it can handle
   2839   1.3  christos given frame (``sniff'' it).  For the frames it can sniff an unwinder
   2840   1.3  christos provides two additional methods: it can return frame's ID, and it can
   2841   1.3  christos fetch registers from the previous frame.  A running @value{GDBN}
   2842   1.9  christos maintains a list of the unwinders and calls each unwinder's sniffer in
   2843   1.3  christos turn until it finds the one that recognizes the current frame.  There
   2844   1.3  christos is an API to register an unwinder.
   2845   1.3  christos 
   2846   1.3  christos The unwinders that come with @value{GDBN} handle standard frames.
   2847   1.3  christos However, mixed language applications (for example, an application
   2848   1.3  christos running Java Virtual Machine) sometimes use frame layouts that cannot
   2849   1.3  christos be handled by the @value{GDBN} unwinders.  You can write Python code
   2850   1.3  christos that can handle such custom frames.
   2851   1.3  christos 
   2852   1.3  christos You implement a frame unwinder in Python as a class with which has two
   2853   1.3  christos attributes, @code{name} and @code{enabled}, with obvious meanings, and
   2854   1.3  christos a single method @code{__call__}, which examines a given frame and
   2855   1.3  christos returns an object (an instance of @code{gdb.UnwindInfo class)}
   2856   1.3  christos describing it.  If an unwinder does not recognize a frame, it should
   2857   1.3  christos return @code{None}.  The code in @value{GDBN} that enables writing
   2858   1.3  christos unwinders in Python uses this object to return frame's ID and previous
   2859   1.3  christos frame registers when @value{GDBN} core asks for them.
   2860   1.3  christos 
   2861   1.6  christos An unwinder should do as little work as possible.  Some otherwise
   2862   1.6  christos innocuous operations can cause problems (even crashes, as this code is
   2863   1.9  christos not well-hardened yet).  For example, making an inferior call from
   2864   1.6  christos an unwinder is unadvisable, as an inferior call will reset
   2865   1.6  christos @value{GDBN}'s stack unwinding process, potentially causing re-entrant
   2866   1.6  christos unwinding.
   2867   1.6  christos 
   2868   1.3  christos @subheading Unwinder Input
   2869   1.3  christos 
   2870   1.3  christos An object passed to an unwinder (a @code{gdb.PendingFrame} instance)
   2871   1.3  christos provides a method to read frame's registers:
   2872   1.3  christos 
   2873   1.9  christos @defun PendingFrame.read_register (register)
   2874   1.9  christos This method returns the contents of @var{register} in the
   2875   1.7  christos frame as a @code{gdb.Value} object.  For a description of the
   2876   1.9  christos acceptable values of @var{register} see
   2877   1.9  christos @ref{gdbpy_frame_read_register,,Frame.read_register}.  If @var{register}
   2878   1.7  christos does not name a register for the current architecture, this method
   2879   1.7  christos will throw an exception.
   2880   1.6  christos 
   2881   1.6  christos Note that this method will always return a @code{gdb.Value} for a
   2882   1.6  christos valid register name.  This does not mean that the value will be valid.
   2883   1.6  christos For example, you may request a register that an earlier unwinder could
   2884   1.6  christos not unwind---the value will be unavailable.  Instead, the
   2885   1.6  christos @code{gdb.Value} returned from this method will be lazy; that is, its
   2886   1.6  christos underlying bits will not be fetched until it is first used.  So,
   2887   1.6  christos attempting to use such a value will cause an exception at the point of
   2888   1.6  christos use.
   2889   1.6  christos 
   2890   1.6  christos The type of the returned @code{gdb.Value} depends on the register and
   2891   1.6  christos the architecture.  It is common for registers to have a scalar type,
   2892   1.6  christos like @code{long long}; but many other types are possible, such as
   2893   1.6  christos pointer, pointer-to-function, floating point or vector types.
   2894   1.3  christos @end defun
   2895   1.3  christos 
   2896   1.3  christos It also provides a factory method to create a @code{gdb.UnwindInfo}
   2897   1.3  christos instance to be returned to @value{GDBN}:
   2898   1.3  christos 
   2899   1.9  christos @anchor{gdb.PendingFrame.create_unwind_info}
   2900   1.3  christos @defun PendingFrame.create_unwind_info (frame_id)
   2901   1.3  christos Returns a new @code{gdb.UnwindInfo} instance identified by given
   2902   1.9  christos @var{frame_id}.  The @var{frame_id} is used internally by @value{GDBN}
   2903   1.9  christos to identify the frames within the current thread's stack.  The
   2904   1.9  christos attributes of @var{frame_id} determine what type of frame is
   2905   1.9  christos created within @value{GDBN}:
   2906   1.3  christos 
   2907   1.3  christos @table @code
   2908   1.6  christos @item sp, pc
   2909   1.6  christos The frame is identified by the given stack address and PC.  The stack
   2910   1.6  christos address must be chosen so that it is constant throughout the lifetime
   2911   1.6  christos of the frame, so a typical choice is the value of the stack pointer at
   2912   1.6  christos the start of the function---in the DWARF standard, this would be the
   2913   1.6  christos ``Call Frame Address''.
   2914   1.3  christos 
   2915   1.6  christos This is the most common case by far.  The other cases are documented
   2916   1.6  christos for completeness but are only useful in specialized situations.
   2917   1.3  christos 
   2918   1.6  christos @item sp, pc, special
   2919   1.6  christos The frame is identified by the stack address, the PC, and a
   2920   1.6  christos ``special'' address.  The special address is used on architectures
   2921   1.6  christos that can have frames that do not change the stack, but which are still
   2922   1.6  christos distinct, for example the IA-64, which has a second stack for
   2923   1.6  christos registers.  Both @var{sp} and @var{special} must be constant
   2924   1.6  christos throughout the lifetime of the frame.
   2925   1.3  christos 
   2926   1.3  christos @item sp
   2927   1.6  christos The frame is identified by the stack address only.  Any other stack
   2928   1.6  christos frame with a matching @var{sp} will be considered to match this frame.
   2929   1.6  christos Inside gdb, this is called a ``wild frame''.  You will never need
   2930   1.6  christos this.
   2931   1.3  christos @end table
   2932   1.6  christos 
   2933   1.9  christos Each attribute value should either be an instance of @code{gdb.Value}
   2934   1.9  christos or an integer.
   2935   1.9  christos 
   2936   1.9  christos A helper class is provided in the @code{gdb.unwinder} module that can
   2937   1.9  christos be used to represent a frame-id
   2938   1.9  christos (@pxref{gdb.unwinder.FrameId}).
   2939   1.3  christos 
   2940   1.3  christos @end defun
   2941   1.3  christos 
   2942   1.7  christos @defun PendingFrame.architecture ()
   2943   1.7  christos Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
   2944   1.7  christos for this @code{gdb.PendingFrame}.  This represents the architecture of
   2945   1.7  christos the particular frame being unwound.
   2946   1.7  christos @end defun
   2947   1.7  christos 
   2948   1.8  christos @defun PendingFrame.level ()
   2949   1.8  christos Return an integer, the stack frame level for this frame.
   2950   1.8  christos @xref{Frames, ,Stack Frames}.
   2951   1.8  christos @end defun
   2952   1.8  christos 
   2953   1.9  christos @defun PendingFrame.name ()
   2954   1.9  christos Returns the function name of this pending frame, or @code{None} if it
   2955   1.9  christos can't be obtained.
   2956   1.9  christos @end defun
   2957   1.9  christos 
   2958   1.9  christos @defun PendingFrame.is_valid ()
   2959   1.9  christos Returns true if the @code{gdb.PendingFrame} object is valid, false if
   2960   1.9  christos not.  A pending frame object becomes invalid when the call to the
   2961   1.9  christos unwinder, for which the pending frame was created, returns.
   2962   1.9  christos 
   2963   1.9  christos All @code{gdb.PendingFrame} methods, except this one, will raise an
   2964   1.9  christos exception if the pending frame object is invalid at the time the
   2965   1.9  christos method is called.
   2966   1.9  christos @end defun
   2967   1.9  christos 
   2968   1.9  christos @defun PendingFrame.pc ()
   2969   1.9  christos Returns the pending frame's resume address.
   2970   1.9  christos @end defun
   2971   1.9  christos 
   2972   1.9  christos @defun PendingFrame.block ()
   2973   1.9  christos Return the pending frame's code block (@pxref{Blocks In Python}).  If
   2974   1.9  christos the frame does not have a block -- for example, if there is no
   2975   1.9  christos debugging information for the code in question -- then this will raise
   2976   1.9  christos a @code{RuntimeError} exception.
   2977   1.9  christos @end defun
   2978   1.9  christos 
   2979   1.9  christos @defun PendingFrame.function ()
   2980   1.9  christos Return the symbol for the function corresponding to this pending frame.
   2981   1.9  christos @xref{Symbols In Python}.
   2982   1.9  christos @end defun
   2983   1.9  christos 
   2984   1.9  christos @defun PendingFrame.find_sal ()
   2985   1.9  christos Return the pending frame's symtab and line object (@pxref{Symbol
   2986   1.9  christos Tables In Python}).
   2987   1.9  christos @end defun
   2988   1.9  christos 
   2989   1.9  christos @defun PendingFrame.language ()
   2990   1.9  christos Return the language of this frame, as a string, or None.
   2991   1.9  christos @end defun
   2992   1.9  christos 
   2993   1.3  christos @subheading Unwinder Output: UnwindInfo
   2994   1.3  christos 
   2995   1.3  christos Use @code{PendingFrame.create_unwind_info} method described above to
   2996   1.3  christos create a @code{gdb.UnwindInfo} instance.  Use the following method to
   2997   1.3  christos specify caller registers that have been saved in this frame:
   2998   1.3  christos 
   2999   1.9  christos @defun gdb.UnwindInfo.add_saved_register (register, value)
   3000   1.9  christos @var{register} identifies the register, for a description of the acceptable
   3001   1.7  christos values see @ref{gdbpy_frame_read_register,,Frame.read_register}.
   3002   1.3  christos @var{value} is a register value (a @code{gdb.Value} object).
   3003   1.3  christos @end defun
   3004   1.3  christos 
   3005   1.9  christos @subheading The @code{gdb.unwinder} Module
   3006   1.9  christos 
   3007   1.9  christos @value{GDBN} comes with a @code{gdb.unwinder} module which contains
   3008   1.9  christos the following classes:
   3009   1.9  christos 
   3010   1.9  christos @deftp {class} gdb.unwinder.Unwinder
   3011   1.9  christos The @code{Unwinder} class is a base class from which user created
   3012   1.9  christos unwinders can derive, though it is not required that unwinders derive
   3013   1.9  christos from this class, so long as any user created unwinder has the required
   3014   1.9  christos @code{name} and @code{enabled} attributes.
   3015   1.9  christos 
   3016   1.9  christos @defun gdb.unwinder.Unwinder.__init__(name)
   3017   1.9  christos The @var{name} is a string used to reference this unwinder within some
   3018   1.9  christos @value{GDBN} commands (@pxref{Managing Registered Unwinders}).
   3019   1.9  christos @end defun
   3020   1.9  christos 
   3021   1.9  christos @defvar gdb.unwinder.name
   3022   1.9  christos A read-only attribute which is a string, the name of this unwinder.
   3023   1.9  christos @end defvar
   3024   1.3  christos 
   3025   1.9  christos @defvar gdb.unwinder.enabled
   3026   1.9  christos A modifiable attribute containing a boolean; when @code{True}, the
   3027   1.9  christos unwinder is enabled, and will be used by @value{GDBN}.  When
   3028   1.9  christos @code{False}, the unwinder has been disabled, and will not be used.
   3029   1.9  christos @end defvar
   3030   1.9  christos @end deftp
   3031   1.3  christos 
   3032   1.9  christos @anchor{gdb.unwinder.FrameId}
   3033   1.9  christos @deftp {class} gdb.unwinder.FrameId
   3034   1.9  christos This is a class suitable for being used as the frame-id when calling
   3035   1.9  christos @code{gdb.PendingFrame.create_unwind_info}.  It is not required to use
   3036   1.9  christos this class, any class with the required attribute
   3037   1.9  christos (@pxref{gdb.PendingFrame.create_unwind_info}) will be accepted, but in
   3038   1.9  christos most cases this class will be sufficient.
   3039   1.3  christos 
   3040   1.9  christos @code{gdb.unwinder.FrameId} has the following method:
   3041   1.3  christos 
   3042   1.9  christos @defun gdb.unwinder.FrameId.__init__(sp, pc, special = @code{None})
   3043   1.9  christos The @var{sp} and @var{pc} arguments are required and should be either
   3044   1.9  christos a @code{gdb.Value} object, or an integer.
   3045   1.3  christos 
   3046   1.9  christos The @var{special} argument is optional; if specified, it should be a
   3047   1.9  christos @code{gdb.Value} object, or an integer.
   3048   1.9  christos @end defun
   3049   1.3  christos 
   3050   1.9  christos @code{gdb.unwinder.FrameId} has the following read-only attributes:
   3051   1.3  christos 
   3052   1.9  christos @defvar gdb.unwinder.sp
   3053   1.9  christos The @var{sp} value passed to the constructor.
   3054   1.9  christos @end defvar
   3055   1.3  christos 
   3056   1.9  christos @defvar gdb.unwinder.pc
   3057   1.9  christos The @var{pc} value passed to the constructor.
   3058   1.9  christos @end defvar
   3059   1.3  christos 
   3060   1.9  christos @defvar gdb.unwinder.special
   3061   1.9  christos The @var{special} value passed to the constructor, or @code{None} if
   3062   1.9  christos no such value was passed.
   3063   1.9  christos @end defvar
   3064   1.9  christos @end deftp
   3065   1.3  christos 
   3066   1.8  christos @subheading Registering an Unwinder
   3067   1.3  christos 
   3068   1.8  christos Object files and program spaces can have unwinders registered with
   3069   1.9  christos them.  In addition, you can register unwinders globally.
   3070   1.3  christos 
   3071   1.8  christos The @code{gdb.unwinders} module provides the function to register an
   3072   1.3  christos unwinder:
   3073   1.3  christos 
   3074   1.3  christos @defun gdb.unwinder.register_unwinder (locus, unwinder, replace=False)
   3075   1.8  christos @var{locus} specifies to which unwinder list to prepend the
   3076   1.9  christos @var{unwinder}.  It can be either an object file (@pxref{Objfiles In
   3077   1.9  christos Python}), a program space (@pxref{Progspaces In Python}), or
   3078   1.8  christos @code{None}, in which case the unwinder is registered globally.  The
   3079   1.9  christos newly added @var{unwinder} will be called before any other unwinder
   3080   1.9  christos from the same locus.  Two unwinders in the same locus cannot have the
   3081   1.9  christos same name.  An attempt to add an unwinder with an already existing
   3082   1.9  christos name raises an exception unless @var{replace} is @code{True}, in which
   3083   1.9  christos case the old unwinder is deleted and the new unwinder is registered in
   3084   1.9  christos its place.
   3085   1.9  christos 
   3086   1.9  christos @value{GDBN} first calls the unwinders from all the object files in no
   3087   1.9  christos particular order, then the unwinders from the current program space,
   3088   1.9  christos then the globally registered unwinders, and finally the unwinders
   3089   1.9  christos builtin to @value{GDBN}.
   3090   1.3  christos @end defun
   3091   1.3  christos 
   3092   1.9  christos @subheading Unwinder Skeleton Code
   3093   1.9  christos 
   3094   1.9  christos Here is an example of how to structure a user created unwinder:
   3095   1.9  christos 
   3096   1.9  christos @smallexample
   3097   1.9  christos from gdb.unwinder import Unwinder, FrameId
   3098   1.9  christos 
   3099   1.9  christos class MyUnwinder(Unwinder):
   3100   1.9  christos     def __init__(self):
   3101   1.9  christos         super().__init___("MyUnwinder_Name")
   3102   1.3  christos 
   3103   1.9  christos     def __call__(self, pending_frame):
   3104   1.9  christos         if not <we recognize frame>:
   3105   1.9  christos             return None
   3106   1.9  christos 
   3107   1.9  christos         # Create a FrameID.  Usually the frame is identified by a
   3108   1.9  christos         # stack pointer and the function address.
   3109   1.9  christos         sp = ... compute a stack address ...
   3110   1.9  christos         pc = ... compute function address ...
   3111   1.9  christos         unwind_info = pending_frame.create_unwind_info(FrameId(sp, pc))
   3112   1.9  christos 
   3113   1.9  christos         # Find the values of the registers in the caller's frame and
   3114   1.9  christos         # save them in the result:
   3115   1.9  christos         unwind_info.add_saved_register(<register-number>, <register-value>)
   3116   1.9  christos         ....
   3117   1.9  christos 
   3118   1.9  christos         # Return the result:
   3119   1.9  christos         return unwind_info
   3120   1.9  christos 
   3121   1.9  christos gdb.unwinder.register_unwinder(<locus>, MyUnwinder(), <replace>)
   3122   1.9  christos @end smallexample
   3123   1.9  christos 
   3124   1.9  christos @anchor{Managing Registered Unwinders}
   3125   1.9  christos @subheading Managing Registered Unwinders
   3126   1.9  christos @value{GDBN} defines 3 commands to manage registered unwinders.  These
   3127   1.9  christos are:
   3128   1.9  christos 
   3129   1.9  christos @table @code
   3130   1.9  christos @item info unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   3131   1.9  christos Lists all registered unwinders.  Arguments @var{locus} and
   3132   1.9  christos @var{name-regexp} are both optional and can be used to filter which
   3133   1.9  christos unwinders are listed.
   3134   1.9  christos 
   3135   1.9  christos The @var{locus} argument should be either @kbd{global},
   3136   1.9  christos @kbd{progspace}, or the name of an object file.  Only unwinders
   3137   1.9  christos registered for the specified locus will be listed.
   3138   1.9  christos 
   3139   1.9  christos The @var{name-regexp} is a regular expression used to match against
   3140   1.9  christos unwinder names.  When trying to match against unwinder names that
   3141   1.9  christos include a string enclose @var{name-regexp} in quotes.
   3142   1.9  christos @item disable unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   3143   1.9  christos The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
   3144   1.9  christos unwinder} above, but instead of listing the matching unwinders, all of
   3145   1.9  christos the matching unwinders are disabled.  The @code{enabled} field of each
   3146   1.9  christos matching unwinder is set to @code{False}.
   3147   1.9  christos @item enable unwinder @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   3148   1.9  christos The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
   3149   1.9  christos unwinder} above, but instead of listing the matching unwinders, all of
   3150   1.9  christos the matching unwinders are enabled.  The @code{enabled} field of each
   3151   1.9  christos matching unwinder is set to @code{True}.
   3152   1.9  christos @end table
   3153   1.3  christos 
   3154   1.1  christos @node Xmethods In Python
   3155   1.1  christos @subsubsection Xmethods In Python
   3156   1.1  christos @cindex xmethods in Python
   3157   1.1  christos 
   3158   1.1  christos @dfn{Xmethods} are additional methods or replacements for existing
   3159   1.1  christos methods of a C@t{++} class.  This feature is useful for those cases
   3160   1.1  christos where a method defined in C@t{++} source code could be inlined or
   3161   1.1  christos optimized out by the compiler, making it unavailable to @value{GDBN}.
   3162   1.1  christos For such cases, one can define an xmethod to serve as a replacement
   3163   1.1  christos for the method defined in the C@t{++} source code.  @value{GDBN} will
   3164   1.1  christos then invoke the xmethod, instead of the C@t{++} method, to
   3165   1.1  christos evaluate expressions.  One can also use xmethods when debugging
   3166   1.1  christos with core files.  Moreover, when debugging live programs, invoking an
   3167   1.1  christos xmethod need not involve running the inferior (which can potentially
   3168   1.1  christos perturb its state).  Hence, even if the C@t{++} method is available, it
   3169   1.1  christos is better to use its replacement xmethod if one is defined.
   3170   1.1  christos 
   3171   1.1  christos The xmethods feature in Python is available via the concepts of an
   3172   1.1  christos @dfn{xmethod matcher} and an @dfn{xmethod worker}.  To
   3173   1.1  christos implement an xmethod, one has to implement a matcher and a
   3174   1.1  christos corresponding worker for it (more than one worker can be
   3175   1.1  christos implemented, each catering to a different overloaded instance of the
   3176   1.1  christos method).  Internally, @value{GDBN} invokes the @code{match} method of a
   3177   1.1  christos matcher to match the class type and method name.  On a match, the
   3178   1.1  christos @code{match} method returns a list of matching @emph{worker} objects.
   3179   1.1  christos Each worker object typically corresponds to an overloaded instance of
   3180   1.1  christos the xmethod.  They implement a @code{get_arg_types} method which
   3181   1.1  christos returns a sequence of types corresponding to the arguments the xmethod
   3182   1.1  christos requires.  @value{GDBN} uses this sequence of types to perform
   3183   1.1  christos overload resolution and picks a winning xmethod worker.  A winner
   3184   1.1  christos is also selected from among the methods @value{GDBN} finds in the
   3185   1.1  christos C@t{++} source code.  Next, the winning xmethod worker and the
   3186   1.1  christos winning C@t{++} method are compared to select an overall winner.  In
   3187   1.1  christos case of a tie between a xmethod worker and a C@t{++} method, the
   3188   1.1  christos xmethod worker is selected as the winner.  That is, if a winning
   3189   1.1  christos xmethod worker is found to be equivalent to the winning C@t{++}
   3190   1.1  christos method, then the xmethod worker is treated as a replacement for
   3191   1.1  christos the C@t{++} method.  @value{GDBN} uses the overall winner to invoke the
   3192   1.1  christos method.  If the winning xmethod worker is the overall winner, then
   3193   1.3  christos the corresponding xmethod is invoked via the @code{__call__} method
   3194   1.1  christos of the worker object.
   3195   1.1  christos 
   3196   1.1  christos If one wants to implement an xmethod as a replacement for an
   3197   1.1  christos existing C@t{++} method, then they have to implement an equivalent
   3198   1.1  christos xmethod which has exactly the same name and takes arguments of
   3199   1.1  christos exactly the same type as the C@t{++} method.  If the user wants to
   3200   1.1  christos invoke the C@t{++} method even though a replacement xmethod is
   3201   1.1  christos available for that method, then they can disable the xmethod.
   3202   1.1  christos 
   3203   1.1  christos @xref{Xmethod API}, for API to implement xmethods in Python.
   3204   1.1  christos @xref{Writing an Xmethod}, for implementing xmethods in Python.
   3205   1.1  christos 
   3206   1.1  christos @node Xmethod API
   3207   1.1  christos @subsubsection Xmethod API
   3208   1.1  christos @cindex xmethod API
   3209   1.1  christos 
   3210   1.1  christos The @value{GDBN} Python API provides classes, interfaces and functions
   3211   1.1  christos to implement, register and manipulate xmethods.
   3212   1.1  christos @xref{Xmethods In Python}.
   3213   1.1  christos 
   3214   1.1  christos An xmethod matcher should be an instance of a class derived from
   3215   1.1  christos @code{XMethodMatcher} defined in the module @code{gdb.xmethod}, or an
   3216   1.1  christos object with similar interface and attributes.  An instance of
   3217   1.1  christos @code{XMethodMatcher} has the following attributes:
   3218   1.1  christos 
   3219   1.1  christos @defvar name
   3220   1.1  christos The name of the matcher.
   3221   1.1  christos @end defvar
   3222   1.1  christos 
   3223   1.1  christos @defvar enabled
   3224   1.1  christos A boolean value indicating whether the matcher is enabled or disabled.
   3225   1.1  christos @end defvar
   3226   1.1  christos 
   3227   1.1  christos @defvar methods
   3228   1.1  christos A list of named methods managed by the matcher.  Each object in the list
   3229   1.1  christos is an instance of the class @code{XMethod} defined in the module
   3230   1.1  christos @code{gdb.xmethod}, or any object with the following attributes:
   3231   1.1  christos 
   3232   1.1  christos @table @code
   3233   1.1  christos 
   3234   1.1  christos @item name
   3235   1.1  christos Name of the xmethod which should be unique for each xmethod
   3236   1.1  christos managed by the matcher.
   3237   1.1  christos 
   3238   1.1  christos @item enabled
   3239   1.1  christos A boolean value indicating whether the xmethod is enabled or
   3240   1.1  christos disabled.
   3241   1.1  christos 
   3242   1.1  christos @end table
   3243   1.1  christos 
   3244   1.1  christos The class @code{XMethod} is a convenience class with same
   3245   1.1  christos attributes as above along with the following constructor:
   3246   1.1  christos 
   3247   1.1  christos @defun XMethod.__init__ (self, name)
   3248   1.1  christos Constructs an enabled xmethod with name @var{name}.
   3249   1.1  christos @end defun
   3250   1.1  christos @end defvar
   3251   1.1  christos 
   3252   1.1  christos @noindent
   3253   1.1  christos The @code{XMethodMatcher} class has the following methods:
   3254   1.1  christos 
   3255   1.1  christos @defun XMethodMatcher.__init__ (self, name)
   3256   1.1  christos Constructs an enabled xmethod matcher with name @var{name}.  The
   3257   1.1  christos @code{methods} attribute is initialized to @code{None}.
   3258   1.1  christos @end defun
   3259   1.1  christos 
   3260   1.1  christos @defun XMethodMatcher.match (self, class_type, method_name)
   3261   1.1  christos Derived classes should override this method.  It should return a
   3262   1.1  christos xmethod worker object (or a sequence of xmethod worker
   3263   1.1  christos objects) matching the @var{class_type} and @var{method_name}.
   3264   1.1  christos @var{class_type} is a @code{gdb.Type} object, and @var{method_name}
   3265   1.1  christos is a string value.  If the matcher manages named methods as listed in
   3266   1.1  christos its @code{methods} attribute, then only those worker objects whose
   3267   1.1  christos corresponding entries in the @code{methods} list are enabled should be
   3268   1.1  christos returned.
   3269   1.1  christos @end defun
   3270   1.1  christos 
   3271   1.1  christos An xmethod worker should be an instance of a class derived from
   3272   1.1  christos @code{XMethodWorker} defined in the module @code{gdb.xmethod},
   3273   1.1  christos or support the following interface:
   3274   1.1  christos 
   3275   1.1  christos @defun XMethodWorker.get_arg_types (self)
   3276   1.1  christos This method returns a sequence of @code{gdb.Type} objects corresponding
   3277   1.1  christos to the arguments that the xmethod takes.  It can return an empty
   3278   1.1  christos sequence or @code{None} if the xmethod does not take any arguments.
   3279   1.1  christos If the xmethod takes a single argument, then a single
   3280   1.1  christos @code{gdb.Type} object corresponding to it can be returned.
   3281   1.1  christos @end defun
   3282   1.1  christos 
   3283   1.1  christos @defun XMethodWorker.get_result_type (self, *args)
   3284   1.1  christos This method returns a @code{gdb.Type} object representing the type
   3285   1.1  christos of the result of invoking this xmethod.
   3286   1.1  christos The @var{args} argument is the same tuple of arguments that would be
   3287   1.1  christos passed to the @code{__call__} method of this worker.
   3288   1.1  christos @end defun
   3289   1.1  christos 
   3290   1.1  christos @defun XMethodWorker.__call__ (self, *args)
   3291   1.1  christos This is the method which does the @emph{work} of the xmethod.  The
   3292   1.1  christos @var{args} arguments is the tuple of arguments to the xmethod.  Each
   3293   1.1  christos element in this tuple is a gdb.Value object.  The first element is
   3294   1.1  christos always the @code{this} pointer value.
   3295   1.1  christos @end defun
   3296   1.1  christos 
   3297   1.1  christos For @value{GDBN} to lookup xmethods, the xmethod matchers
   3298   1.1  christos should be registered using the following function defined in the module
   3299   1.1  christos @code{gdb.xmethod}:
   3300   1.1  christos 
   3301   1.1  christos @defun register_xmethod_matcher (locus, matcher, replace=False)
   3302   1.1  christos The @code{matcher} is registered with @code{locus}, replacing an
   3303   1.1  christos existing matcher with the same name as @code{matcher} if
   3304   1.1  christos @code{replace} is @code{True}.  @code{locus} can be a
   3305   1.1  christos @code{gdb.Objfile} object (@pxref{Objfiles In Python}), or a
   3306   1.1  christos @code{gdb.Progspace} object (@pxref{Progspaces In Python}), or
   3307   1.1  christos @code{None}.  If it is @code{None}, then @code{matcher} is registered
   3308   1.1  christos globally.
   3309   1.1  christos @end defun
   3310   1.1  christos 
   3311   1.1  christos @node Writing an Xmethod
   3312   1.1  christos @subsubsection Writing an Xmethod
   3313   1.1  christos @cindex writing xmethods in Python
   3314   1.1  christos 
   3315   1.1  christos Implementing xmethods in Python will require implementing xmethod
   3316   1.1  christos matchers and xmethod workers (@pxref{Xmethods In Python}).  Consider
   3317   1.1  christos the following C@t{++} class:
   3318   1.1  christos 
   3319   1.1  christos @smallexample
   3320   1.1  christos class MyClass
   3321   1.1  christos @{
   3322   1.1  christos public:
   3323   1.1  christos   MyClass (int a) : a_(a) @{ @}
   3324   1.1  christos 
   3325   1.1  christos   int geta (void) @{ return a_; @}
   3326   1.1  christos   int operator+ (int b);
   3327   1.1  christos 
   3328   1.1  christos private:
   3329   1.1  christos   int a_;
   3330   1.1  christos @};
   3331   1.1  christos 
   3332   1.1  christos int
   3333   1.1  christos MyClass::operator+ (int b)
   3334   1.1  christos @{
   3335   1.1  christos   return a_ + b;
   3336   1.1  christos @}
   3337   1.1  christos @end smallexample
   3338   1.1  christos 
   3339   1.1  christos @noindent
   3340   1.1  christos Let us define two xmethods for the class @code{MyClass}, one
   3341   1.1  christos replacing the method @code{geta}, and another adding an overloaded
   3342   1.1  christos flavor of @code{operator+} which takes a @code{MyClass} argument (the
   3343   1.1  christos C@t{++} code above already has an overloaded @code{operator+}
   3344   1.1  christos which takes an @code{int} argument).  The xmethod matcher can be
   3345   1.1  christos defined as follows:
   3346   1.1  christos 
   3347   1.1  christos @smallexample
   3348   1.1  christos class MyClass_geta(gdb.xmethod.XMethod):
   3349   1.1  christos     def __init__(self):
   3350   1.1  christos         gdb.xmethod.XMethod.__init__(self, 'geta')
   3351   1.1  christos  
   3352   1.1  christos     def get_worker(self, method_name):
   3353   1.1  christos         if method_name == 'geta':
   3354   1.1  christos             return MyClassWorker_geta()
   3355   1.1  christos  
   3356   1.1  christos  
   3357   1.1  christos class MyClass_sum(gdb.xmethod.XMethod):
   3358   1.1  christos     def __init__(self):
   3359   1.1  christos         gdb.xmethod.XMethod.__init__(self, 'sum')
   3360   1.1  christos  
   3361   1.1  christos     def get_worker(self, method_name):
   3362   1.1  christos         if method_name == 'operator+':
   3363   1.1  christos             return MyClassWorker_plus()
   3364   1.1  christos  
   3365   1.1  christos  
   3366   1.1  christos class MyClassMatcher(gdb.xmethod.XMethodMatcher):
   3367   1.1  christos     def __init__(self):
   3368   1.1  christos         gdb.xmethod.XMethodMatcher.__init__(self, 'MyClassMatcher')
   3369   1.1  christos         # List of methods 'managed' by this matcher
   3370   1.1  christos         self.methods = [MyClass_geta(), MyClass_sum()]
   3371   1.1  christos  
   3372   1.1  christos     def match(self, class_type, method_name):
   3373   1.1  christos         if class_type.tag != 'MyClass':
   3374   1.1  christos             return None
   3375   1.1  christos         workers = []
   3376   1.1  christos         for method in self.methods:
   3377   1.1  christos             if method.enabled:
   3378   1.1  christos                 worker = method.get_worker(method_name)
   3379   1.1  christos                 if worker:
   3380   1.1  christos                     workers.append(worker)
   3381   1.1  christos  
   3382   1.1  christos         return workers
   3383   1.1  christos @end smallexample
   3384   1.1  christos 
   3385   1.1  christos @noindent
   3386   1.1  christos Notice that the @code{match} method of @code{MyClassMatcher} returns
   3387   1.1  christos a worker object of type @code{MyClassWorker_geta} for the @code{geta}
   3388   1.1  christos method, and a worker object of type @code{MyClassWorker_plus} for the
   3389   1.1  christos @code{operator+} method.  This is done indirectly via helper classes
   3390   1.1  christos derived from @code{gdb.xmethod.XMethod}.  One does not need to use the
   3391   1.1  christos @code{methods} attribute in a matcher as it is optional.  However, if a
   3392   1.1  christos matcher manages more than one xmethod, it is a good practice to list the
   3393   1.1  christos xmethods in the @code{methods} attribute of the matcher.  This will then
   3394   1.1  christos facilitate enabling and disabling individual xmethods via the
   3395   1.1  christos @code{enable/disable} commands.  Notice also that a worker object is
   3396   1.1  christos returned only if the corresponding entry in the @code{methods} attribute
   3397   1.1  christos of the matcher is enabled.
   3398   1.1  christos 
   3399   1.1  christos The implementation of the worker classes returned by the matcher setup
   3400   1.1  christos above is as follows:
   3401   1.1  christos 
   3402   1.1  christos @smallexample
   3403   1.1  christos class MyClassWorker_geta(gdb.xmethod.XMethodWorker):
   3404   1.1  christos     def get_arg_types(self):
   3405   1.1  christos         return None
   3406   1.1  christos 
   3407   1.1  christos     def get_result_type(self, obj):
   3408   1.1  christos         return gdb.lookup_type('int')
   3409   1.1  christos  
   3410   1.1  christos     def __call__(self, obj):
   3411   1.1  christos         return obj['a_']
   3412   1.1  christos  
   3413   1.1  christos  
   3414   1.1  christos class MyClassWorker_plus(gdb.xmethod.XMethodWorker):
   3415   1.1  christos     def get_arg_types(self):
   3416   1.1  christos         return gdb.lookup_type('MyClass')
   3417   1.1  christos 
   3418   1.1  christos     def get_result_type(self, obj):
   3419   1.1  christos         return gdb.lookup_type('int')
   3420   1.1  christos  
   3421   1.1  christos     def __call__(self, obj, other):
   3422   1.1  christos         return obj['a_'] + other['a_']
   3423   1.1  christos @end smallexample
   3424   1.1  christos 
   3425   1.1  christos For @value{GDBN} to actually lookup a xmethod, it has to be
   3426   1.1  christos registered with it.  The matcher defined above is registered with
   3427   1.1  christos @value{GDBN} globally as follows:
   3428   1.1  christos 
   3429   1.1  christos @smallexample
   3430   1.1  christos gdb.xmethod.register_xmethod_matcher(None, MyClassMatcher())
   3431   1.1  christos @end smallexample
   3432   1.1  christos 
   3433   1.1  christos If an object @code{obj} of type @code{MyClass} is initialized in C@t{++}
   3434   1.1  christos code as follows:
   3435   1.1  christos 
   3436   1.1  christos @smallexample
   3437   1.1  christos MyClass obj(5);
   3438   1.1  christos @end smallexample
   3439   1.1  christos 
   3440   1.1  christos @noindent
   3441   1.1  christos then, after loading the Python script defining the xmethod matchers
   3442   1.9  christos and workers into @value{GDBN}, invoking the method @code{geta} or using
   3443   1.1  christos the operator @code{+} on @code{obj} will invoke the xmethods
   3444   1.1  christos defined above:
   3445   1.1  christos 
   3446   1.1  christos @smallexample
   3447   1.1  christos (gdb) p obj.geta()
   3448   1.1  christos $1 = 5
   3449   1.1  christos 
   3450   1.1  christos (gdb) p obj + obj
   3451   1.1  christos $2 = 10
   3452   1.1  christos @end smallexample
   3453   1.1  christos 
   3454   1.1  christos Consider another example with a C++ template class:
   3455   1.1  christos 
   3456   1.1  christos @smallexample
   3457   1.1  christos template <class T>
   3458   1.1  christos class MyTemplate
   3459   1.1  christos @{
   3460   1.1  christos public:
   3461   1.1  christos   MyTemplate () : dsize_(10), data_ (new T [10]) @{ @}
   3462   1.1  christos   ~MyTemplate () @{ delete [] data_; @}
   3463   1.1  christos  
   3464   1.1  christos   int footprint (void)
   3465   1.1  christos   @{
   3466   1.1  christos     return sizeof (T) * dsize_ + sizeof (MyTemplate<T>);
   3467   1.1  christos   @}
   3468   1.1  christos  
   3469   1.1  christos private:
   3470   1.1  christos   int dsize_;
   3471   1.1  christos   T *data_;
   3472   1.1  christos @};
   3473   1.1  christos @end smallexample
   3474   1.1  christos 
   3475   1.1  christos Let us implement an xmethod for the above class which serves as a
   3476   1.1  christos replacement for the @code{footprint} method.  The full code listing
   3477   1.1  christos of the xmethod workers and xmethod matchers is as follows:
   3478   1.1  christos 
   3479   1.1  christos @smallexample
   3480   1.1  christos class MyTemplateWorker_footprint(gdb.xmethod.XMethodWorker):
   3481   1.1  christos     def __init__(self, class_type):
   3482   1.1  christos         self.class_type = class_type
   3483   1.1  christos 
   3484   1.1  christos     def get_arg_types(self):
   3485   1.1  christos         return None
   3486   1.1  christos 
   3487   1.1  christos     def get_result_type(self):
   3488   1.1  christos         return gdb.lookup_type('int')
   3489   1.1  christos 
   3490   1.1  christos     def __call__(self, obj):
   3491   1.1  christos         return (self.class_type.sizeof +
   3492   1.1  christos                 obj['dsize_'] *
   3493   1.1  christos                 self.class_type.template_argument(0).sizeof)
   3494   1.1  christos  
   3495   1.1  christos  
   3496   1.1  christos class MyTemplateMatcher_footprint(gdb.xmethod.XMethodMatcher):
   3497   1.1  christos     def __init__(self):
   3498   1.1  christos         gdb.xmethod.XMethodMatcher.__init__(self, 'MyTemplateMatcher')
   3499   1.1  christos  
   3500   1.1  christos     def match(self, class_type, method_name):
   3501   1.1  christos         if (re.match('MyTemplate<[ \t\n]*[_a-zA-Z][ _a-zA-Z0-9]*>',
   3502   1.1  christos                      class_type.tag) and
   3503   1.1  christos             method_name == 'footprint'):
   3504   1.1  christos             return MyTemplateWorker_footprint(class_type)
   3505   1.1  christos @end smallexample
   3506   1.1  christos 
   3507   1.1  christos Notice that, in this example, we have not used the @code{methods}
   3508   1.1  christos attribute of the matcher as the matcher manages only one xmethod.  The
   3509   1.1  christos user can enable/disable this xmethod by enabling/disabling the matcher
   3510   1.1  christos itself.
   3511   1.1  christos 
   3512   1.1  christos @node Inferiors In Python
   3513   1.1  christos @subsubsection Inferiors In Python
   3514   1.1  christos @cindex inferiors in Python
   3515   1.1  christos 
   3516   1.1  christos @findex gdb.Inferior
   3517   1.1  christos Programs which are being run under @value{GDBN} are called inferiors
   3518   1.7  christos (@pxref{Inferiors Connections and Programs}).  Python scripts can access
   3519   1.1  christos information about and manipulate inferiors controlled by @value{GDBN}
   3520   1.1  christos via objects of the @code{gdb.Inferior} class.
   3521   1.1  christos 
   3522   1.1  christos The following inferior-related functions are available in the @code{gdb}
   3523   1.1  christos module:
   3524   1.1  christos 
   3525   1.1  christos @defun gdb.inferiors ()
   3526   1.1  christos Return a tuple containing all inferior objects.
   3527   1.1  christos @end defun
   3528   1.1  christos 
   3529   1.1  christos @defun gdb.selected_inferior ()
   3530   1.1  christos Return an object representing the current inferior.
   3531   1.1  christos @end defun
   3532   1.1  christos 
   3533   1.1  christos A @code{gdb.Inferior} object has the following attributes:
   3534   1.1  christos 
   3535   1.1  christos @defvar Inferior.num
   3536   1.9  christos ID of inferior, as assigned by @value{GDBN}.  You can use this to make
   3537   1.9  christos Python breakpoints inferior-specific, for example
   3538   1.9  christos (@pxref{python_breakpoint_inferior,,The Breakpoint.inferior
   3539   1.9  christos attribute}).
   3540   1.1  christos @end defvar
   3541   1.1  christos 
   3542   1.8  christos @anchor{gdbpy_inferior_connection}
   3543   1.8  christos @defvar Inferior.connection
   3544   1.8  christos The @code{gdb.TargetConnection} for this inferior (@pxref{Connections
   3545   1.8  christos In Python}), or @code{None} if this inferior has no connection.
   3546   1.8  christos @end defvar
   3547   1.8  christos 
   3548   1.8  christos @defvar Inferior.connection_num
   3549   1.8  christos ID of inferior's connection as assigned by @value{GDBN}, or None if
   3550   1.8  christos the inferior is not connected to a target.  @xref{Inferiors Connections
   3551   1.8  christos and Programs}.  This is equivalent to
   3552   1.8  christos @code{gdb.Inferior.connection.num} in the case where
   3553   1.8  christos @code{gdb.Inferior.connection} is not @code{None}.
   3554   1.8  christos @end defvar
   3555   1.8  christos 
   3556   1.1  christos @defvar Inferior.pid
   3557   1.1  christos Process ID of the inferior, as assigned by the underlying operating
   3558   1.1  christos system.
   3559   1.1  christos @end defvar
   3560   1.1  christos 
   3561   1.1  christos @defvar Inferior.was_attached
   3562   1.1  christos Boolean signaling whether the inferior was created using `attach', or
   3563   1.1  christos started by @value{GDBN} itself.
   3564   1.1  christos @end defvar
   3565   1.1  christos 
   3566   1.9  christos @defvar Inferior.main_name
   3567   1.9  christos A string holding the name of this inferior's ``main'' function, if it
   3568   1.9  christos can be determined.  If the name of main is not known, this is
   3569   1.9  christos @code{None}.
   3570   1.9  christos @end defvar
   3571   1.9  christos 
   3572   1.6  christos @defvar Inferior.progspace
   3573   1.6  christos The inferior's program space.  @xref{Progspaces In Python}.
   3574   1.6  christos @end defvar
   3575   1.6  christos 
   3576   1.9  christos @defvar Inferior.arguments
   3577   1.9  christos The inferior's command line arguments, if known.  This corresponds to
   3578   1.9  christos the @code{set args} and @code{show args} commands.  @xref{Arguments}.
   3579   1.9  christos 
   3580   1.9  christos When accessed, the value is a string holding all the arguments.  The
   3581   1.9  christos contents are quoted as they would be when passed to the shell.  If
   3582   1.9  christos there are no arguments, the value is @code{None}.
   3583   1.9  christos 
   3584   1.9  christos Either a string or a sequence of strings can be assigned to this
   3585   1.9  christos attribute.  When a string is assigned, it is assumed to have any
   3586   1.9  christos necessary quoting for the shell; when a sequence is assigned, the
   3587   1.9  christos quoting is applied by @value{GDBN}.
   3588   1.9  christos @end defvar
   3589   1.9  christos 
   3590   1.1  christos A @code{gdb.Inferior} object has the following methods:
   3591   1.1  christos 
   3592   1.1  christos @defun Inferior.is_valid ()
   3593   1.1  christos Returns @code{True} if the @code{gdb.Inferior} object is valid,
   3594   1.1  christos @code{False} if not.  A @code{gdb.Inferior} object will become invalid
   3595   1.1  christos if the inferior no longer exists within @value{GDBN}.  All other
   3596   1.1  christos @code{gdb.Inferior} methods will throw an exception if it is invalid
   3597   1.1  christos at the time the method is called.
   3598   1.1  christos @end defun
   3599   1.1  christos 
   3600   1.1  christos @defun Inferior.threads ()
   3601   1.1  christos This method returns a tuple holding all the threads which are valid
   3602   1.1  christos when it is called.  If there are no valid threads, the method will
   3603   1.1  christos return an empty tuple.
   3604   1.1  christos @end defun
   3605   1.1  christos 
   3606   1.6  christos @defun Inferior.architecture ()
   3607   1.6  christos Return the @code{gdb.Architecture} (@pxref{Architectures In Python})
   3608   1.6  christos for this inferior.  This represents the architecture of the inferior
   3609   1.6  christos as a whole.  Some platforms can have multiple architectures in a
   3610   1.6  christos single address space, so this may not match the architecture of a
   3611   1.6  christos particular frame (@pxref{Frames In Python}).
   3612   1.6  christos @end defun
   3613   1.6  christos 
   3614   1.8  christos @anchor{gdbpy_inferior_read_memory}
   3615   1.1  christos @defun Inferior.read_memory (address, length)
   3616   1.9  christos Read @var{length} addressable memory units from the inferior, starting
   3617   1.9  christos at @var{address}.  Returns a @code{memoryview} object, which behaves
   3618   1.9  christos much like an array or a string.  It can be modified and given to the
   3619   1.9  christos @code{Inferior.write_memory} function.
   3620   1.1  christos @end defun
   3621   1.1  christos 
   3622   1.1  christos @defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
   3623   1.1  christos Write the contents of @var{buffer} to the inferior, starting at
   3624   1.1  christos @var{address}.  The @var{buffer} parameter must be a Python object
   3625   1.1  christos which supports the buffer protocol, i.e., a string, an array or the
   3626   1.1  christos object returned from @code{Inferior.read_memory}.  If given, @var{length}
   3627   1.3  christos determines the number of addressable memory units from @var{buffer} to be
   3628   1.3  christos written.
   3629   1.1  christos @end defun
   3630   1.1  christos 
   3631   1.1  christos @defun Inferior.search_memory (address, length, pattern)
   3632   1.1  christos Search a region of the inferior memory starting at @var{address} with
   3633   1.1  christos the given @var{length} using the search pattern supplied in
   3634   1.1  christos @var{pattern}.  The @var{pattern} parameter must be a Python object
   3635   1.1  christos which supports the buffer protocol, i.e., a string, an array or the
   3636   1.1  christos object returned from @code{gdb.read_memory}.  Returns a Python @code{Long}
   3637   1.1  christos containing the address where the pattern was found, or @code{None} if
   3638   1.1  christos the pattern could not be found.
   3639   1.1  christos @end defun
   3640   1.1  christos 
   3641   1.6  christos @findex Inferior.thread_from_thread_handle
   3642   1.7  christos @defun Inferior.thread_from_handle (handle)
   3643   1.7  christos Return the thread object corresponding to @var{handle}, a thread
   3644   1.6  christos library specific data structure such as @code{pthread_t} for pthreads
   3645   1.6  christos library implementations.
   3646   1.7  christos 
   3647   1.7  christos The function @code{Inferior.thread_from_thread_handle} provides
   3648   1.7  christos the same functionality, but use of @code{Inferior.thread_from_thread_handle}
   3649   1.7  christos is deprecated.
   3650   1.6  christos @end defun
   3651   1.6  christos 
   3652   1.9  christos 
   3653   1.9  christos The environment that will be passed to the inferior can be changed
   3654   1.9  christos from Python by using the following methods.  These methods only take
   3655   1.9  christos effect when the inferior is started -- they will not affect an
   3656   1.9  christos inferior that is already executing.
   3657   1.9  christos 
   3658   1.9  christos @defun Inferior.clear_env ()
   3659   1.9  christos Clear the current environment variables that will be passed to this
   3660   1.9  christos inferior.
   3661   1.9  christos @end defun
   3662   1.9  christos 
   3663   1.9  christos @defun Inferior.set_env (name, value)
   3664   1.9  christos Set the environment variable @var{name} to have the indicated value.
   3665   1.9  christos Both parameters must be strings.
   3666   1.9  christos @end defun
   3667   1.9  christos 
   3668   1.9  christos @defun Inferior.unset_env (name)
   3669   1.9  christos Unset the environment variable @var{name}.  @var{name} must be a
   3670   1.9  christos string.
   3671   1.9  christos @end defun
   3672   1.9  christos 
   3673   1.9  christos One may add arbitrary attributes to @code{gdb.Inferior} objects in the
   3674   1.9  christos usual Python way.  This is useful if, for example, one needs to do
   3675   1.9  christos some extra record keeping associated with the inferior.
   3676   1.9  christos 
   3677   1.9  christos @anchor{choosing attribute names}
   3678   1.9  christos When selecting a name for a new attribute, avoid starting the new
   3679   1.9  christos attribute name with a lower case letter; future attributes added by
   3680   1.9  christos @value{GDBN} will start with a lower case letter.  Additionally, avoid
   3681   1.9  christos starting attribute names with two underscore characters, as these
   3682   1.9  christos could clash with Python builtin attribute names.
   3683   1.9  christos 
   3684   1.9  christos In this contrived example we record the time when an inferior last
   3685   1.9  christos stopped:
   3686   1.9  christos 
   3687   1.9  christos @smallexample
   3688   1.9  christos @group
   3689   1.9  christos (@value{GDBP}) python
   3690   1.9  christos import datetime
   3691   1.9  christos 
   3692   1.9  christos def thread_stopped(event):
   3693   1.9  christos     if event.inferior_thread is not None:
   3694   1.9  christos         thread = event.inferior_thread
   3695   1.9  christos     else:
   3696   1.9  christos         thread = gdb.selected_thread()
   3697   1.9  christos     inferior = thread.inferior
   3698   1.9  christos     inferior._last_stop_time = datetime.datetime.today()
   3699   1.9  christos 
   3700   1.9  christos gdb.events.stop.connect(thread_stopped)
   3701   1.9  christos @end group
   3702   1.9  christos @group
   3703   1.9  christos (@value{GDBP}) file /tmp/hello
   3704   1.9  christos Reading symbols from /tmp/hello...
   3705   1.9  christos (@value{GDBP}) start
   3706   1.9  christos Temporary breakpoint 1 at 0x401198: file /tmp/hello.c, line 18.
   3707   1.9  christos Starting program: /tmp/hello
   3708   1.9  christos 
   3709   1.9  christos Temporary breakpoint 1, main () at /tmp/hello.c:18
   3710   1.9  christos 18	  printf ("Hello World\n");
   3711   1.9  christos (@value{GDBP}) python print(gdb.selected_inferior()._last_stop_time)
   3712   1.9  christos 2024-01-04 14:48:41.347036
   3713   1.9  christos @end group
   3714   1.9  christos @end smallexample
   3715   1.9  christos 
   3716   1.1  christos @node Events In Python
   3717   1.1  christos @subsubsection Events In Python
   3718   1.1  christos @cindex inferior events in Python
   3719   1.1  christos 
   3720   1.1  christos @value{GDBN} provides a general event facility so that Python code can be
   3721   1.1  christos notified of various state changes, particularly changes that occur in
   3722   1.1  christos the inferior.
   3723   1.1  christos 
   3724   1.1  christos An @dfn{event} is just an object that describes some state change.  The
   3725   1.1  christos type of the object and its attributes will vary depending on the details
   3726   1.1  christos of the change.  All the existing events are described below.
   3727   1.1  christos 
   3728   1.1  christos In order to be notified of an event, you must register an event handler
   3729   1.1  christos with an @dfn{event registry}.  An event registry is an object in the
   3730   1.1  christos @code{gdb.events} module which dispatches particular events.  A registry
   3731   1.1  christos provides methods to register and unregister event handlers:
   3732   1.1  christos 
   3733   1.1  christos @defun EventRegistry.connect (object)
   3734   1.1  christos Add the given callable @var{object} to the registry.  This object will be
   3735   1.1  christos called when an event corresponding to this registry occurs.
   3736   1.1  christos @end defun
   3737   1.1  christos 
   3738   1.1  christos @defun EventRegistry.disconnect (object)
   3739   1.1  christos Remove the given @var{object} from the registry.  Once removed, the object
   3740   1.1  christos will no longer receive notifications of events.
   3741   1.1  christos @end defun
   3742   1.1  christos 
   3743   1.1  christos Here is an example:
   3744   1.1  christos 
   3745   1.1  christos @smallexample
   3746   1.1  christos def exit_handler (event):
   3747   1.8  christos     print ("event type: exit")
   3748   1.8  christos     if hasattr (event, 'exit_code'):
   3749   1.8  christos         print ("exit code: %d" % (event.exit_code))
   3750   1.8  christos     else:
   3751   1.8  christos         print ("exit code not available")
   3752   1.1  christos 
   3753   1.1  christos gdb.events.exited.connect (exit_handler)
   3754   1.1  christos @end smallexample
   3755   1.1  christos 
   3756   1.1  christos In the above example we connect our handler @code{exit_handler} to the
   3757   1.1  christos registry @code{events.exited}.  Once connected, @code{exit_handler} gets
   3758   1.1  christos called when the inferior exits.  The argument @dfn{event} in this example is
   3759   1.1  christos of type @code{gdb.ExitedEvent}.  As you can see in the example the
   3760   1.1  christos @code{ExitedEvent} object has an attribute which indicates the exit code of
   3761   1.1  christos the inferior.
   3762   1.1  christos 
   3763   1.8  christos Some events can be thread specific when @value{GDBN} is running in
   3764   1.8  christos non-stop mode.  When represented in Python, these events all extend
   3765   1.8  christos @code{gdb.ThreadEvent}.  This event is a base class and is never
   3766   1.8  christos emitted directly; instead, events which are emitted by this or other
   3767   1.8  christos modules might extend this event.  Examples of these events are
   3768   1.8  christos @code{gdb.BreakpointEvent} and @code{gdb.ContinueEvent}.
   3769   1.8  christos @code{gdb.ThreadEvent} holds the following attributes:
   3770   1.1  christos 
   3771   1.1  christos @defvar ThreadEvent.inferior_thread
   3772   1.1  christos In non-stop mode this attribute will be set to the specific thread which was
   3773   1.1  christos involved in the emitted event. Otherwise, it will be set to @code{None}.
   3774   1.1  christos @end defvar
   3775   1.1  christos 
   3776   1.8  christos The following is a listing of the event registries that are available and
   3777   1.8  christos details of the events they emit:
   3778   1.1  christos 
   3779   1.8  christos @table @code
   3780   1.8  christos 
   3781   1.8  christos @item events.cont
   3782   1.8  christos Emits @code{gdb.ContinueEvent}, which extends @code{gdb.ThreadEvent}.
   3783   1.8  christos This event indicates that the inferior has been continued after a
   3784   1.8  christos stop. For inherited attribute refer to @code{gdb.ThreadEvent} above.
   3785   1.1  christos 
   3786   1.1  christos @item events.exited
   3787   1.8  christos Emits @code{events.ExitedEvent}, which indicates that the inferior has
   3788   1.8  christos exited.  @code{events.ExitedEvent} has two attributes:
   3789   1.8  christos 
   3790   1.1  christos @defvar ExitedEvent.exit_code
   3791   1.1  christos An integer representing the exit code, if available, which the inferior 
   3792   1.1  christos has returned.  (The exit code could be unavailable if, for example,
   3793   1.1  christos @value{GDBN} detaches from the inferior.) If the exit code is unavailable,
   3794   1.1  christos the attribute does not exist.
   3795   1.1  christos @end defvar
   3796   1.8  christos 
   3797   1.5  christos @defvar ExitedEvent.inferior
   3798   1.1  christos A reference to the inferior which triggered the @code{exited} event.
   3799   1.1  christos @end defvar
   3800   1.1  christos 
   3801   1.1  christos @item events.stop
   3802   1.8  christos Emits @code{gdb.StopEvent}, which extends @code{gdb.ThreadEvent}.
   3803   1.1  christos 
   3804   1.8  christos Indicates that the inferior has stopped.  All events emitted by this
   3805   1.8  christos registry extend @code{gdb.StopEvent}.  As a child of
   3806   1.8  christos @code{gdb.ThreadEvent}, @code{gdb.StopEvent} will indicate the stopped
   3807   1.8  christos thread when @value{GDBN} is running in non-stop mode.  Refer to
   3808   1.8  christos @code{gdb.ThreadEvent} above for more details.
   3809   1.1  christos 
   3810   1.9  christos @code{gdb.StopEvent} has the following additional attributes:
   3811   1.9  christos 
   3812   1.9  christos @defvar StopEvent.details
   3813   1.9  christos A dictionary holding any details relevant to the stop.  The exact keys
   3814   1.9  christos and values depend on the type of stop, but are identical to the
   3815   1.9  christos corresponding MI output (@pxref{GDB/MI Async Records}).
   3816   1.9  christos 
   3817   1.9  christos A dictionary was used for this (rather than adding attributes directly
   3818   1.9  christos to the event object) so that the MI keys could be used unchanged.
   3819   1.9  christos 
   3820   1.9  christos When a @code{StopEvent} results from a @code{finish} command, it will
   3821   1.9  christos also hold the return value from the function, if that is available.
   3822   1.9  christos This will be an entry named @samp{return-value} in the @code{details}
   3823   1.9  christos dictionary.  The value of this entry will be a @code{gdb.Value}
   3824   1.9  christos object.
   3825   1.9  christos @end defvar
   3826   1.9  christos 
   3827   1.8  christos Emits @code{gdb.SignalEvent}, which extends @code{gdb.StopEvent}.
   3828   1.1  christos 
   3829   1.8  christos This event indicates that the inferior or one of its threads has
   3830   1.8  christos received a signal.  @code{gdb.SignalEvent} has the following
   3831   1.8  christos attributes:
   3832   1.1  christos 
   3833   1.1  christos @defvar SignalEvent.stop_signal
   3834   1.1  christos A string representing the signal received by the inferior.  A list of possible
   3835   1.1  christos signal values can be obtained by running the command @code{info signals} in
   3836   1.1  christos the @value{GDBN} command prompt.
   3837   1.1  christos @end defvar
   3838   1.1  christos 
   3839   1.8  christos Also emits @code{gdb.BreakpointEvent}, which extends
   3840   1.8  christos @code{gdb.StopEvent}.
   3841   1.1  christos 
   3842   1.1  christos @code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
   3843   1.1  christos been hit, and has the following attributes:
   3844   1.1  christos 
   3845   1.1  christos @defvar BreakpointEvent.breakpoints
   3846   1.1  christos A sequence containing references to all the breakpoints (type 
   3847   1.1  christos @code{gdb.Breakpoint}) that were hit.
   3848   1.1  christos @xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
   3849   1.1  christos @end defvar
   3850   1.8  christos 
   3851   1.1  christos @defvar BreakpointEvent.breakpoint
   3852   1.8  christos A reference to the first breakpoint that was hit.  This attribute is
   3853   1.8  christos maintained for backward compatibility and is now deprecated in favor
   3854   1.8  christos of the @code{gdb.BreakpointEvent.breakpoints} attribute.
   3855   1.1  christos @end defvar
   3856   1.1  christos 
   3857   1.1  christos @item events.new_objfile
   3858   1.1  christos Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
   3859   1.1  christos been loaded by @value{GDBN}.  @code{gdb.NewObjFileEvent} has one attribute:
   3860   1.1  christos 
   3861   1.1  christos @defvar NewObjFileEvent.new_objfile
   3862   1.1  christos A reference to the object file (@code{gdb.Objfile}) which has been loaded.
   3863   1.1  christos @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
   3864   1.1  christos @end defvar
   3865   1.1  christos 
   3866   1.8  christos @item events.free_objfile
   3867   1.8  christos Emits @code{gdb.FreeObjFileEvent} which indicates that an object file
   3868   1.8  christos is about to be removed from @value{GDBN}.  One reason this can happen
   3869   1.8  christos is when the inferior calls @code{dlclose}.
   3870   1.8  christos @code{gdb.FreeObjFileEvent} has one attribute:
   3871   1.8  christos 
   3872   1.9  christos @defvar FreeObjFileEvent.objfile
   3873   1.8  christos A reference to the object file (@code{gdb.Objfile}) which will be unloaded.
   3874   1.8  christos @xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
   3875   1.8  christos @end defvar
   3876   1.8  christos 
   3877   1.1  christos @item events.clear_objfiles
   3878   1.1  christos Emits @code{gdb.ClearObjFilesEvent} which indicates that the list of object
   3879   1.1  christos files for a program space has been reset.
   3880   1.1  christos @code{gdb.ClearObjFilesEvent} has one attribute:
   3881   1.1  christos 
   3882   1.1  christos @defvar ClearObjFilesEvent.progspace
   3883   1.1  christos A reference to the program space (@code{gdb.Progspace}) whose objfile list has
   3884   1.1  christos been cleared.  @xref{Progspaces In Python}.
   3885   1.1  christos @end defvar
   3886   1.1  christos 
   3887   1.6  christos @item events.inferior_call
   3888   1.6  christos Emits events just before and after a function in the inferior is
   3889   1.6  christos called by @value{GDBN}.  Before an inferior call, this emits an event
   3890   1.6  christos of type @code{gdb.InferiorCallPreEvent}, and after an inferior call,
   3891   1.6  christos this emits an event of type @code{gdb.InferiorCallPostEvent}.
   3892   1.6  christos 
   3893   1.6  christos @table @code
   3894   1.6  christos @tindex gdb.InferiorCallPreEvent
   3895   1.6  christos @item @code{gdb.InferiorCallPreEvent}
   3896   1.6  christos Indicates that a function in the inferior is about to be called.
   3897   1.1  christos 
   3898   1.1  christos @defvar InferiorCallPreEvent.ptid
   3899   1.1  christos The thread in which the call will be run.
   3900   1.1  christos @end defvar
   3901   1.1  christos 
   3902   1.1  christos @defvar InferiorCallPreEvent.address
   3903   1.1  christos The location of the function to be called.
   3904   1.1  christos @end defvar
   3905   1.1  christos 
   3906   1.6  christos @tindex gdb.InferiorCallPostEvent
   3907   1.6  christos @item @code{gdb.InferiorCallPostEvent}
   3908   1.6  christos Indicates that a function in the inferior has just been called.
   3909   1.1  christos 
   3910   1.1  christos @defvar InferiorCallPostEvent.ptid
   3911   1.1  christos The thread in which the call was run.
   3912   1.1  christos @end defvar
   3913   1.1  christos 
   3914   1.1  christos @defvar InferiorCallPostEvent.address
   3915   1.1  christos The location of the function that was called.
   3916   1.1  christos @end defvar
   3917   1.6  christos @end table
   3918   1.1  christos 
   3919   1.1  christos @item events.memory_changed
   3920   1.1  christos Emits @code{gdb.MemoryChangedEvent} which indicates that the memory of the
   3921   1.1  christos inferior has been modified by the @value{GDBN} user, for instance via a
   3922   1.1  christos command like @w{@code{set *addr = value}}.  The event has the following
   3923   1.1  christos attributes:
   3924   1.1  christos 
   3925   1.1  christos @defvar MemoryChangedEvent.address
   3926   1.1  christos The start address of the changed region.
   3927   1.1  christos @end defvar
   3928   1.1  christos 
   3929   1.1  christos @defvar MemoryChangedEvent.length
   3930   1.1  christos Length in bytes of the changed region.
   3931   1.1  christos @end defvar
   3932   1.1  christos 
   3933   1.1  christos @item events.register_changed
   3934   1.1  christos Emits @code{gdb.RegisterChangedEvent} which indicates that a register in the
   3935   1.1  christos inferior has been modified by the @value{GDBN} user.
   3936   1.1  christos 
   3937   1.1  christos @defvar RegisterChangedEvent.frame
   3938   1.1  christos A gdb.Frame object representing the frame in which the register was modified.
   3939   1.1  christos @end defvar
   3940   1.1  christos @defvar RegisterChangedEvent.regnum
   3941   1.1  christos Denotes which register was modified.
   3942   1.1  christos @end defvar
   3943   1.1  christos 
   3944   1.4  christos @item events.breakpoint_created
   3945   1.4  christos This is emitted when a new breakpoint has been created.  The argument
   3946   1.4  christos that is passed is the new @code{gdb.Breakpoint} object.
   3947   1.4  christos 
   3948   1.4  christos @item events.breakpoint_modified
   3949   1.4  christos This is emitted when a breakpoint has been modified in some way.  The
   3950   1.4  christos argument that is passed is the new @code{gdb.Breakpoint} object.
   3951   1.4  christos 
   3952   1.4  christos @item events.breakpoint_deleted
   3953   1.4  christos This is emitted when a breakpoint has been deleted.  The argument that
   3954   1.4  christos is passed is the @code{gdb.Breakpoint} object.  When this event is
   3955   1.4  christos emitted, the @code{gdb.Breakpoint} object will already be in its
   3956   1.4  christos invalid state; that is, the @code{is_valid} method will return
   3957   1.4  christos @code{False}.
   3958   1.4  christos 
   3959   1.5  christos @item events.before_prompt
   3960   1.5  christos This event carries no payload.  It is emitted each time @value{GDBN}
   3961   1.5  christos presents a prompt to the user.
   3962   1.5  christos 
   3963   1.6  christos @item events.new_inferior
   3964   1.6  christos This is emitted when a new inferior is created.  Note that the
   3965   1.6  christos inferior is not necessarily running; in fact, it may not even have an
   3966   1.6  christos associated executable.
   3967   1.6  christos 
   3968   1.6  christos The event is of type @code{gdb.NewInferiorEvent}.  This has a single
   3969   1.6  christos attribute:
   3970   1.6  christos 
   3971   1.6  christos @defvar NewInferiorEvent.inferior
   3972   1.6  christos The new inferior, a @code{gdb.Inferior} object.
   3973   1.6  christos @end defvar
   3974   1.6  christos 
   3975   1.6  christos @item events.inferior_deleted
   3976   1.6  christos This is emitted when an inferior has been deleted.  Note that this is
   3977   1.6  christos not the same as process exit; it is notified when the inferior itself
   3978   1.6  christos is removed, say via @code{remove-inferiors}.
   3979   1.6  christos 
   3980   1.6  christos The event is of type @code{gdb.InferiorDeletedEvent}.  This has a single
   3981   1.6  christos attribute:
   3982   1.6  christos 
   3983   1.8  christos @defvar InferiorDeletedEvent.inferior
   3984   1.6  christos The inferior that is being removed, a @code{gdb.Inferior} object.
   3985   1.6  christos @end defvar
   3986   1.6  christos 
   3987   1.6  christos @item events.new_thread
   3988   1.6  christos This is emitted when @value{GDBN} notices a new thread.  The event is of
   3989   1.6  christos type @code{gdb.NewThreadEvent}, which extends @code{gdb.ThreadEvent}.
   3990   1.6  christos This has a single attribute:
   3991   1.6  christos 
   3992   1.6  christos @defvar NewThreadEvent.inferior_thread
   3993   1.6  christos The new thread.
   3994   1.6  christos @end defvar
   3995   1.6  christos 
   3996   1.9  christos @item events.thread_exited
   3997   1.9  christos This is emitted when @value{GDBN} notices a thread has exited.  The event
   3998   1.9  christos is of type @code{gdb.ThreadExitedEvent} which extends @code{gdb.ThreadEvent}.
   3999   1.9  christos This has a single attribute:
   4000   1.9  christos 
   4001   1.9  christos @defvar ThreadExitedEvent.inferior_thread
   4002   1.9  christos The exiting thread.
   4003   1.9  christos @end defvar
   4004   1.9  christos 
   4005   1.8  christos @item events.gdb_exiting
   4006   1.8  christos This is emitted when @value{GDBN} exits.  This event is not emitted if
   4007   1.8  christos @value{GDBN} exits as a result of an internal error, or after an
   4008   1.8  christos unexpected signal.  The event is of type @code{gdb.GdbExitingEvent},
   4009   1.8  christos which has a single attribute:
   4010   1.8  christos 
   4011   1.8  christos @defvar GdbExitingEvent.exit_code
   4012   1.8  christos An integer, the value of the exit code @value{GDBN} will return.
   4013   1.8  christos @end defvar
   4014   1.8  christos 
   4015   1.8  christos @item events.connection_removed
   4016   1.8  christos This is emitted when @value{GDBN} removes a connection
   4017   1.8  christos (@pxref{Connections In Python}).  The event is of type
   4018   1.8  christos @code{gdb.ConnectionEvent}.  This has a single read-only attribute:
   4019   1.8  christos 
   4020   1.8  christos @defvar ConnectionEvent.connection
   4021   1.8  christos The @code{gdb.TargetConnection} that is being removed.
   4022   1.8  christos @end defvar
   4023   1.8  christos 
   4024   1.9  christos @item events.executable_changed
   4025   1.9  christos Emits @code{gdb.ExecutableChangedEvent} which indicates that the
   4026   1.9  christos @code{gdb.Progspace.executable_filename} has changed.
   4027   1.9  christos 
   4028   1.9  christos This event is emitted when either the value of
   4029   1.9  christos @code{gdb.Progspace.executable_filename } has changed to name a
   4030   1.9  christos different file, or the executable file named by
   4031   1.9  christos @code{gdb.Progspace.executable_filename} has changed on disk, and
   4032   1.9  christos @value{GDBN} has therefore reloaded it.
   4033   1.9  christos 
   4034   1.9  christos @defvar ExecutableChangedEvent.progspace
   4035   1.9  christos The @code{gdb.Progspace} in which the current executable has changed.
   4036   1.9  christos The file name of the updated executable will be visible in
   4037   1.9  christos @code{gdb.Progspace.executable_filename} (@pxref{Progspaces In Python}).
   4038   1.9  christos @end defvar
   4039   1.9  christos @defvar ExecutableChangedEvent.reload
   4040   1.9  christos This attribute will be @code{True} if the value of
   4041   1.9  christos @code{gdb.Progspace.executable_filename} didn't change, but the file
   4042   1.9  christos it names changed on disk instead, and @value{GDBN} reloaded it.
   4043   1.9  christos 
   4044   1.9  christos When this attribute is @code{False}, the value in
   4045   1.9  christos @code{gdb.Progspace.executable_filename} was changed to name a
   4046   1.9  christos different file.
   4047   1.9  christos @end defvar
   4048   1.9  christos 
   4049   1.9  christos Remember that @value{GDBN} tracks the executable file and the symbol
   4050   1.9  christos file separately, these are visible as
   4051   1.9  christos @code{gdb.Progspace.executable_filename} and
   4052   1.9  christos @code{gdb.Progspace.filename} respectively.  When using the @kbd{file}
   4053   1.9  christos command, @value{GDBN} updates both of these fields, but the executable
   4054   1.9  christos file is updated first, so when this event is emitted, the executable
   4055   1.9  christos filename will have changed, but the symbol filename might still hold
   4056   1.9  christos its previous value.
   4057   1.9  christos 
   4058   1.9  christos @item events.new_progspace
   4059   1.9  christos This is emitted when @value{GDBN} adds a new program space
   4060   1.9  christos (@pxref{Progspaces In Python,,Program Spaces In Python}).  The event
   4061   1.9  christos is of type @code{gdb.NewProgspaceEvent}, and has a single read-only
   4062   1.9  christos attribute:
   4063   1.9  christos 
   4064   1.9  christos @defvar NewProgspaceEvent.progspace
   4065   1.9  christos The @code{gdb.Progspace} that was added to @value{GDBN}.
   4066   1.9  christos @end defvar
   4067   1.9  christos 
   4068   1.9  christos No @code{NewProgspaceEvent} is emitted for the very first program
   4069   1.9  christos space, which is assigned to the first inferior.  This first program
   4070   1.9  christos space is created within @value{GDBN} before any Python scripts are
   4071   1.9  christos sourced.
   4072   1.9  christos 
   4073   1.9  christos @item events.free_progspace
   4074   1.9  christos This is emitted when @value{GDBN} removes a program space
   4075   1.9  christos (@pxref{Progspaces In Python,,Program Spaces In Python}), for example
   4076   1.9  christos as a result of the @kbd{remove-inferiors} command
   4077   1.9  christos (@pxref{remove_inferiors_cli,,@kbd{remove-inferiors}}).  The event is
   4078   1.9  christos of type @code{gdb.FreeProgspaceEvent}, and has a single read-only
   4079   1.9  christos attribute:
   4080   1.9  christos 
   4081   1.9  christos @defvar FreeProgspaceEvent.progspace
   4082   1.9  christos The @code{gdb.Progspace} that is about to be removed from
   4083   1.9  christos @value{GDBN}.
   4084   1.9  christos @end defvar
   4085   1.9  christos 
   4086  1.10  christos @item events.tui_enabled
   4087  1.10  christos This is emitted when the TUI is enabled or disabled.  The event is of
   4088  1.10  christos type @code{gdb.TuiEnabledEvent}, which has a single read-only
   4089  1.10  christos attribute:
   4090  1.10  christos 
   4091  1.10  christos @defvar TuiEnabledEvent.enabled
   4092  1.10  christos If the TUI has just been enabled, this is @code{True}; otherwise it is
   4093  1.10  christos @code{False}.
   4094  1.10  christos @end defvar
   4095  1.10  christos 
   4096   1.1  christos @end table
   4097   1.1  christos 
   4098   1.1  christos @node Threads In Python
   4099   1.1  christos @subsubsection Threads In Python
   4100   1.1  christos @cindex threads in python
   4101   1.1  christos 
   4102   1.1  christos @findex gdb.InferiorThread
   4103   1.1  christos Python scripts can access information about, and manipulate inferior threads
   4104   1.1  christos controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
   4105   1.1  christos 
   4106   1.1  christos The following thread-related functions are available in the @code{gdb}
   4107   1.1  christos module:
   4108   1.1  christos 
   4109   1.1  christos @defun gdb.selected_thread ()
   4110   1.1  christos This function returns the thread object for the selected thread.  If there
   4111   1.1  christos is no selected thread, this will return @code{None}.
   4112   1.1  christos @end defun
   4113   1.1  christos 
   4114   1.7  christos To get the list of threads for an inferior, use the @code{Inferior.threads()}
   4115   1.7  christos method.  @xref{Inferiors In Python}.
   4116   1.7  christos 
   4117   1.1  christos A @code{gdb.InferiorThread} object has the following attributes:
   4118   1.1  christos 
   4119   1.1  christos @defvar InferiorThread.name
   4120   1.1  christos The name of the thread.  If the user specified a name using
   4121   1.1  christos @code{thread name}, then this returns that name.  Otherwise, if an
   4122   1.1  christos OS-supplied name is available, then it is returned.  Otherwise, this
   4123   1.1  christos returns @code{None}.
   4124   1.1  christos 
   4125   1.1  christos This attribute can be assigned to.  The new value must be a string
   4126   1.1  christos object, which sets the new name, or @code{None}, which removes any
   4127   1.1  christos user-specified thread name.
   4128   1.1  christos @end defvar
   4129   1.1  christos 
   4130   1.1  christos @defvar InferiorThread.num
   4131   1.4  christos The per-inferior number of the thread, as assigned by GDB.
   4132   1.4  christos @end defvar
   4133   1.4  christos 
   4134   1.4  christos @defvar InferiorThread.global_num
   4135   1.4  christos The global ID of the thread, as assigned by GDB.  You can use this to
   4136   1.4  christos make Python breakpoints thread-specific, for example
   4137   1.4  christos (@pxref{python_breakpoint_thread,,The Breakpoint.thread attribute}).
   4138   1.1  christos @end defvar
   4139   1.1  christos 
   4140   1.9  christos @anchor{inferior_thread_ptid}
   4141   1.1  christos @defvar InferiorThread.ptid
   4142   1.1  christos ID of the thread, as assigned by the operating system.  This attribute is a
   4143   1.1  christos tuple containing three integers.  The first is the Process ID (PID); the second
   4144   1.1  christos is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
   4145   1.1  christos Either the LWPID or TID may be 0, which indicates that the operating system
   4146   1.1  christos does not  use that identifier.
   4147   1.1  christos @end defvar
   4148   1.1  christos 
   4149   1.9  christos @defvar InferiorThread.ptid_string
   4150   1.9  christos This read-only attribute contains a string representing
   4151   1.9  christos @code{InferiorThread.ptid}.  This is the string that @value{GDBN} uses
   4152   1.9  christos in the @samp{Target Id} column in the @kbd{info threads} output
   4153   1.9  christos (@pxref{info_threads,,@samp{info threads}}).
   4154   1.9  christos @end defvar
   4155   1.9  christos 
   4156   1.4  christos @defvar InferiorThread.inferior
   4157   1.4  christos The inferior this thread belongs to.  This attribute is represented as
   4158   1.4  christos a @code{gdb.Inferior} object.  This attribute is not writable.
   4159   1.4  christos @end defvar
   4160   1.4  christos 
   4161   1.8  christos @defvar InferiorThread.details
   4162   1.8  christos A string containing target specific thread state information.  The
   4163   1.8  christos format of this string varies by target.  If there is no additional
   4164   1.8  christos state information for this thread, then this attribute contains
   4165   1.8  christos @code{None}.
   4166   1.8  christos 
   4167   1.8  christos For example, on a @sc{gnu}/Linux system, a thread that is in the
   4168   1.8  christos process of exiting will return the string @samp{Exiting}.  For remote
   4169   1.8  christos targets the @code{details} string will be obtained with the
   4170   1.8  christos @samp{qThreadExtraInfo} remote packet, if the target supports it
   4171   1.8  christos (@pxref{qThreadExtraInfo,,@samp{qThreadExtraInfo}}).
   4172   1.8  christos 
   4173   1.8  christos @value{GDBN} displays the @code{details} string as part of the
   4174   1.8  christos @samp{Target Id} column, in the @code{info threads} output
   4175   1.8  christos (@pxref{info_threads,,@samp{info threads}}).
   4176   1.8  christos @end defvar
   4177   1.8  christos 
   4178   1.1  christos A @code{gdb.InferiorThread} object has the following methods:
   4179   1.1  christos 
   4180   1.1  christos @defun InferiorThread.is_valid ()
   4181   1.1  christos Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
   4182   1.1  christos @code{False} if not.  A @code{gdb.InferiorThread} object will become
   4183   1.1  christos invalid if the thread exits, or the inferior that the thread belongs
   4184   1.1  christos is deleted.  All other @code{gdb.InferiorThread} methods will throw an
   4185   1.1  christos exception if it is invalid at the time the method is called.
   4186   1.1  christos @end defun
   4187   1.1  christos 
   4188   1.1  christos @defun InferiorThread.switch ()
   4189   1.1  christos This changes @value{GDBN}'s currently selected thread to the one represented
   4190   1.1  christos by this object.
   4191   1.1  christos @end defun
   4192   1.1  christos 
   4193   1.1  christos @defun InferiorThread.is_stopped ()
   4194   1.1  christos Return a Boolean indicating whether the thread is stopped.
   4195   1.1  christos @end defun
   4196   1.1  christos 
   4197   1.1  christos @defun InferiorThread.is_running ()
   4198   1.1  christos Return a Boolean indicating whether the thread is running.
   4199   1.1  christos @end defun
   4200   1.1  christos 
   4201   1.1  christos @defun InferiorThread.is_exited ()
   4202   1.1  christos Return a Boolean indicating whether the thread is exited.
   4203   1.1  christos @end defun
   4204   1.1  christos 
   4205   1.7  christos @defun InferiorThread.handle ()
   4206   1.7  christos Return the thread object's handle, represented as a Python @code{bytes}
   4207   1.7  christos object.  A @code{gdb.Value} representation of the handle may be
   4208   1.7  christos constructed via @code{gdb.Value(bufobj, type)} where @var{bufobj} is
   4209   1.7  christos the Python @code{bytes} representation of the handle and @var{type} is
   4210   1.7  christos a @code{gdb.Type} for the handle type.
   4211   1.7  christos @end defun
   4212   1.7  christos 
   4213   1.9  christos One may add arbitrary attributes to @code{gdb.InferiorThread} objects
   4214   1.9  christos in the usual Python way.  This is useful if, for example, one needs to
   4215   1.9  christos do some extra record keeping associated with the thread.
   4216   1.9  christos 
   4217   1.9  christos @xref{choosing attribute names}, for guidance on selecting a suitable
   4218   1.9  christos name for new attributes.
   4219   1.9  christos 
   4220   1.9  christos In this contrived example we record the time when a thread last
   4221   1.9  christos stopped:
   4222   1.9  christos 
   4223   1.9  christos @smallexample
   4224   1.9  christos @group
   4225   1.9  christos (@value{GDBP}) python
   4226   1.9  christos import datetime
   4227   1.9  christos 
   4228   1.9  christos def thread_stopped(event):
   4229   1.9  christos     if event.inferior_thread is not None:
   4230   1.9  christos         thread = event.inferior_thread
   4231   1.9  christos     else:
   4232   1.9  christos         thread = gdb.selected_thread()
   4233   1.9  christos     thread._last_stop_time = datetime.datetime.today()
   4234   1.9  christos 
   4235   1.9  christos gdb.events.stop.connect(thread_stopped)
   4236   1.9  christos @end group
   4237   1.9  christos @group
   4238   1.9  christos (@value{GDBP}) file /tmp/hello
   4239   1.9  christos Reading symbols from /tmp/hello...
   4240   1.9  christos (@value{GDBP}) start
   4241   1.9  christos Temporary breakpoint 1 at 0x401198: file /tmp/hello.c, line 18.
   4242   1.9  christos Starting program: /tmp/hello
   4243   1.9  christos 
   4244   1.9  christos Temporary breakpoint 1, main () at /tmp/hello.c:18
   4245   1.9  christos 18	  printf ("Hello World\n");
   4246   1.9  christos (@value{GDBP}) python print(gdb.selected_thread()._last_stop_time)
   4247   1.9  christos 2024-01-04 14:48:41.347036
   4248   1.9  christos @end group
   4249   1.9  christos @end smallexample
   4250   1.9  christos 
   4251   1.5  christos @node Recordings In Python
   4252   1.5  christos @subsubsection Recordings In Python
   4253   1.5  christos @cindex recordings in python
   4254   1.5  christos 
   4255   1.5  christos The following recordings-related functions
   4256   1.5  christos (@pxref{Process Record and Replay}) are available in the @code{gdb}
   4257   1.5  christos module:
   4258   1.5  christos 
   4259   1.5  christos @defun gdb.start_recording (@r{[}method@r{]}, @r{[}format@r{]})
   4260   1.5  christos Start a recording using the given @var{method} and @var{format}.  If
   4261   1.5  christos no @var{format} is given, the default format for the recording method
   4262   1.5  christos is used.  If no @var{method} is given, the default method will be used.
   4263   1.5  christos Returns a @code{gdb.Record} object on success.  Throw an exception on
   4264   1.5  christos failure.
   4265   1.5  christos 
   4266   1.5  christos The following strings can be passed as @var{method}:
   4267   1.5  christos 
   4268   1.5  christos @itemize @bullet
   4269   1.5  christos @item
   4270   1.5  christos @code{"full"}
   4271   1.5  christos @item
   4272   1.5  christos @code{"btrace"}: Possible values for @var{format}: @code{"pt"},
   4273   1.5  christos @code{"bts"} or leave out for default format.
   4274   1.5  christos @end itemize
   4275   1.5  christos @end defun
   4276   1.5  christos 
   4277   1.5  christos @defun gdb.current_recording ()
   4278   1.5  christos Access a currently running recording.  Return a @code{gdb.Record}
   4279   1.5  christos object on success.  Return @code{None} if no recording is currently
   4280   1.5  christos active.
   4281   1.5  christos @end defun
   4282   1.5  christos 
   4283   1.5  christos @defun gdb.stop_recording ()
   4284   1.5  christos Stop the current recording.  Throw an exception if no recording is
   4285   1.5  christos currently active.  All record objects become invalid after this call.
   4286   1.5  christos @end defun
   4287   1.5  christos 
   4288   1.5  christos A @code{gdb.Record} object has the following attributes:
   4289   1.5  christos 
   4290   1.5  christos @defvar Record.method
   4291   1.5  christos A string with the current recording method, e.g.@: @code{full} or
   4292   1.5  christos @code{btrace}.
   4293   1.5  christos @end defvar
   4294   1.5  christos 
   4295   1.5  christos @defvar Record.format
   4296   1.5  christos A string with the current recording format, e.g.@: @code{bt}, @code{pts} or
   4297   1.5  christos @code{None}.
   4298   1.5  christos @end defvar
   4299   1.5  christos 
   4300   1.5  christos @defvar Record.begin
   4301   1.5  christos A method specific instruction object representing the first instruction
   4302   1.5  christos in this recording.
   4303   1.5  christos @end defvar
   4304   1.5  christos 
   4305   1.5  christos @defvar Record.end
   4306   1.5  christos A method specific instruction object representing the current
   4307   1.5  christos instruction, that is not actually part of the recording.
   4308   1.5  christos @end defvar
   4309   1.5  christos 
   4310   1.5  christos @defvar Record.replay_position
   4311   1.5  christos The instruction representing the current replay position.  If there is
   4312   1.5  christos no replay active, this will be @code{None}.
   4313   1.5  christos @end defvar
   4314   1.5  christos 
   4315   1.5  christos @defvar Record.instruction_history
   4316   1.5  christos A list with all recorded instructions.
   4317   1.5  christos @end defvar
   4318   1.5  christos 
   4319   1.5  christos @defvar Record.function_call_history
   4320   1.5  christos A list with all recorded function call segments.
   4321   1.5  christos @end defvar
   4322   1.5  christos 
   4323   1.5  christos A @code{gdb.Record} object has the following methods:
   4324   1.5  christos 
   4325   1.5  christos @defun Record.goto (instruction)
   4326   1.5  christos Move the replay position to the given @var{instruction}.
   4327   1.5  christos @end defun
   4328   1.5  christos 
   4329  1.10  christos @defun Record.clear ()
   4330  1.10  christos Clear the trace data of the current recording.  This forces re-decoding of the
   4331  1.10  christos trace for successive commands.
   4332  1.10  christos @end defun
   4333  1.10  christos 
   4334   1.5  christos The common @code{gdb.Instruction} class that recording method specific
   4335   1.5  christos instruction objects inherit from, has the following attributes:
   4336   1.5  christos 
   4337   1.5  christos @defvar Instruction.pc
   4338   1.5  christos An integer representing this instruction's address.
   4339   1.5  christos @end defvar
   4340   1.5  christos 
   4341   1.5  christos @defvar Instruction.data
   4342   1.9  christos A @code{memoryview} object holding the raw instruction data.
   4343   1.5  christos @end defvar
   4344   1.5  christos 
   4345   1.5  christos @defvar Instruction.decoded
   4346   1.5  christos A human readable string with the disassembled instruction.
   4347   1.5  christos @end defvar
   4348   1.5  christos 
   4349   1.5  christos @defvar Instruction.size
   4350   1.5  christos The size of the instruction in bytes.
   4351   1.5  christos @end defvar
   4352   1.5  christos 
   4353   1.5  christos Additionally @code{gdb.RecordInstruction} has the following attributes:
   4354   1.5  christos 
   4355   1.5  christos @defvar RecordInstruction.number
   4356   1.5  christos An integer identifying this instruction.  @code{number} corresponds to
   4357   1.5  christos the numbers seen in @code{record instruction-history}
   4358   1.5  christos (@pxref{Process Record and Replay}).
   4359   1.5  christos @end defvar
   4360   1.5  christos 
   4361   1.5  christos @defvar RecordInstruction.sal
   4362   1.5  christos A @code{gdb.Symtab_and_line} object representing the associated symtab
   4363   1.5  christos and line of this instruction.  May be @code{None} if no debug information is
   4364   1.5  christos available.
   4365   1.5  christos @end defvar
   4366   1.5  christos 
   4367   1.5  christos @defvar RecordInstruction.is_speculative
   4368   1.5  christos A boolean indicating whether the instruction was executed speculatively.
   4369   1.5  christos @end defvar
   4370   1.5  christos 
   4371   1.9  christos If an error occurred during recording or decoding a recording, this error is
   4372   1.5  christos represented by a @code{gdb.RecordGap} object in the instruction list.  It has
   4373   1.5  christos the following attributes:
   4374   1.5  christos 
   4375   1.5  christos @defvar RecordGap.number
   4376   1.5  christos An integer identifying this gap.  @code{number} corresponds to the numbers seen
   4377   1.5  christos in @code{record instruction-history} (@pxref{Process Record and Replay}).
   4378   1.5  christos @end defvar
   4379   1.5  christos 
   4380   1.5  christos @defvar RecordGap.error_code
   4381   1.5  christos A numerical representation of the reason for the gap.  The value is specific to
   4382   1.5  christos the current recording method.
   4383   1.5  christos @end defvar
   4384   1.5  christos 
   4385   1.5  christos @defvar RecordGap.error_string
   4386   1.5  christos A human readable string with the reason for the gap.
   4387   1.5  christos @end defvar
   4388   1.5  christos 
   4389  1.10  christos Some @value{GDBN} features write auxiliary information into the execution
   4390  1.10  christos history.  This information is represented by a @code{gdb.RecordAuxiliary} object
   4391  1.10  christos in the instruction list.  It has the following attributes:
   4392  1.10  christos 
   4393  1.10  christos @defvar RecordAuxiliary.@var{number}
   4394  1.10  christos An integer identifying this auxiliary.  @var{number} corresponds to the numbers
   4395  1.10  christos seen in @code{record instruction-history} (@pxref{Process Record and Replay}).
   4396  1.10  christos @end defvar
   4397  1.10  christos 
   4398  1.10  christos @defvar RecordAuxiliary.data
   4399  1.10  christos A string representation of the auxiliary data.
   4400  1.10  christos @end defvar
   4401  1.10  christos 
   4402   1.5  christos A @code{gdb.RecordFunctionSegment} object has the following attributes:
   4403   1.5  christos 
   4404   1.5  christos @defvar RecordFunctionSegment.number
   4405   1.5  christos An integer identifying this function segment.  @code{number} corresponds to
   4406   1.5  christos the numbers seen in @code{record function-call-history}
   4407   1.5  christos (@pxref{Process Record and Replay}).
   4408   1.5  christos @end defvar
   4409   1.5  christos 
   4410   1.5  christos @defvar RecordFunctionSegment.symbol
   4411   1.5  christos A @code{gdb.Symbol} object representing the associated symbol.  May be
   4412   1.5  christos @code{None} if no debug information is available.
   4413   1.5  christos @end defvar
   4414   1.5  christos 
   4415   1.5  christos @defvar RecordFunctionSegment.level
   4416   1.5  christos An integer representing the function call's stack level.  May be
   4417   1.5  christos @code{None} if the function call is a gap.
   4418   1.5  christos @end defvar
   4419   1.5  christos 
   4420   1.5  christos @defvar RecordFunctionSegment.instructions
   4421   1.5  christos A list of @code{gdb.RecordInstruction} or @code{gdb.RecordGap} objects
   4422   1.5  christos associated with this function call.
   4423   1.5  christos @end defvar
   4424   1.5  christos 
   4425   1.5  christos @defvar RecordFunctionSegment.up
   4426   1.5  christos A @code{gdb.RecordFunctionSegment} object representing the caller's
   4427   1.5  christos function segment.  If the call has not been recorded, this will be the
   4428   1.5  christos function segment to which control returns.  If neither the call nor the
   4429   1.5  christos return have been recorded, this will be @code{None}.
   4430   1.5  christos @end defvar
   4431   1.5  christos 
   4432   1.5  christos @defvar RecordFunctionSegment.prev
   4433   1.5  christos A @code{gdb.RecordFunctionSegment} object representing the previous
   4434   1.5  christos segment of this function call.  May be @code{None}.
   4435   1.5  christos @end defvar
   4436   1.5  christos 
   4437   1.5  christos @defvar RecordFunctionSegment.next
   4438   1.5  christos A @code{gdb.RecordFunctionSegment} object representing the next segment of
   4439   1.5  christos this function call.  May be @code{None}.
   4440   1.5  christos @end defvar
   4441   1.5  christos 
   4442   1.5  christos The following example demonstrates the usage of these objects and
   4443   1.5  christos functions to create a function that will rewind a record to the last
   4444   1.5  christos time a function in a different file was executed.  This would typically
   4445   1.5  christos be used to track the execution of user provided callback functions in a
   4446   1.5  christos library which typically are not visible in a back trace.
   4447   1.5  christos 
   4448   1.5  christos @smallexample
   4449   1.5  christos def bringback ():
   4450   1.5  christos     rec = gdb.current_recording ()
   4451   1.5  christos     if not rec:
   4452   1.5  christos         return
   4453   1.5  christos 
   4454   1.5  christos     insn = rec.instruction_history
   4455   1.5  christos     if len (insn) == 0:
   4456   1.5  christos         return
   4457   1.5  christos 
   4458   1.5  christos     try:
   4459   1.5  christos         position = insn.index (rec.replay_position)
   4460   1.5  christos     except:
   4461   1.5  christos         position = -1
   4462   1.5  christos     try:
   4463   1.5  christos         filename = insn[position].sal.symtab.fullname ()
   4464   1.5  christos     except:
   4465   1.5  christos         filename = None
   4466   1.5  christos 
   4467   1.5  christos     for i in reversed (insn[:position]):
   4468   1.5  christos 	try:
   4469   1.5  christos             current = i.sal.symtab.fullname ()
   4470   1.5  christos 	except:
   4471   1.5  christos             current = None
   4472   1.5  christos 
   4473   1.5  christos         if filename == current:
   4474   1.5  christos             continue
   4475   1.5  christos 
   4476   1.5  christos         rec.goto (i)
   4477   1.5  christos         return
   4478   1.5  christos @end smallexample
   4479   1.5  christos 
   4480   1.5  christos Another possible application is to write a function that counts the
   4481   1.5  christos number of code executions in a given line range.  This line range can
   4482   1.5  christos contain parts of functions or span across several functions and is not
   4483   1.5  christos limited to be contiguous.
   4484   1.5  christos 
   4485   1.5  christos @smallexample
   4486   1.5  christos def countrange (filename, linerange):
   4487   1.5  christos     count = 0
   4488   1.5  christos 
   4489   1.5  christos     def filter_only (file_name):
   4490   1.5  christos         for call in gdb.current_recording ().function_call_history:
   4491   1.5  christos             try:
   4492   1.5  christos                 if file_name in call.symbol.symtab.fullname ():
   4493   1.5  christos                     yield call
   4494   1.5  christos             except:
   4495   1.5  christos                 pass
   4496   1.5  christos 
   4497   1.5  christos     for c in filter_only (filename):
   4498   1.5  christos         for i in c.instructions:
   4499   1.5  christos             try:
   4500   1.5  christos                 if i.sal.line in linerange:
   4501   1.5  christos                     count += 1
   4502   1.5  christos                     break;
   4503   1.5  christos             except:
   4504   1.5  christos                     pass
   4505   1.5  christos 
   4506   1.5  christos     return count
   4507   1.5  christos @end smallexample
   4508   1.5  christos 
   4509   1.8  christos @node CLI Commands In Python
   4510   1.8  christos @subsubsection CLI Commands In Python
   4511   1.1  christos 
   4512   1.8  christos @cindex CLI commands in python
   4513   1.8  christos @cindex commands in python, CLI
   4514   1.8  christos @cindex python commands, CLI
   4515   1.1  christos You can implement new @value{GDBN} CLI commands in Python.  A CLI
   4516   1.1  christos command is implemented using an instance of the @code{gdb.Command}
   4517   1.1  christos class, most commonly using a subclass.
   4518   1.1  christos 
   4519   1.9  christos @defun Command.__init__ (name, command_class @r{[}, completer_class @r{[}, prefix@r{]]})
   4520   1.1  christos The object initializer for @code{Command} registers the new command
   4521   1.1  christos with @value{GDBN}.  This initializer is normally invoked from the
   4522   1.1  christos subclass' own @code{__init__} method.
   4523   1.1  christos 
   4524   1.1  christos @var{name} is the name of the command.  If @var{name} consists of
   4525   1.1  christos multiple words, then the initial words are looked for as prefix
   4526   1.1  christos commands.  In this case, if one of the prefix commands does not exist,
   4527   1.1  christos an exception is raised.
   4528   1.1  christos 
   4529   1.1  christos There is no support for multi-line commands.
   4530   1.1  christos 
   4531   1.1  christos @var{command_class} should be one of the @samp{COMMAND_} constants
   4532   1.1  christos defined below.  This argument tells @value{GDBN} how to categorize the
   4533   1.1  christos new command in the help system.
   4534   1.1  christos 
   4535   1.1  christos @var{completer_class} is an optional argument.  If given, it should be
   4536   1.1  christos one of the @samp{COMPLETE_} constants defined below.  This argument
   4537   1.1  christos tells @value{GDBN} how to perform completion for this command.  If not
   4538   1.1  christos given, @value{GDBN} will attempt to complete using the object's
   4539   1.1  christos @code{complete} method (see below); if no such method is found, an
   4540   1.1  christos error will occur when completion is attempted.
   4541   1.1  christos 
   4542   1.1  christos @var{prefix} is an optional argument.  If @code{True}, then the new
   4543   1.1  christos command is a prefix command; sub-commands of this command may be
   4544   1.1  christos registered.
   4545   1.1  christos 
   4546   1.1  christos The help text for the new command is taken from the Python
   4547   1.1  christos documentation string for the command's class, if there is one.  If no
   4548   1.1  christos documentation string is provided, the default value ``This command is
   4549   1.1  christos not documented.'' is used.
   4550   1.1  christos @end defun
   4551   1.1  christos 
   4552   1.1  christos @cindex don't repeat Python command
   4553   1.1  christos @defun Command.dont_repeat ()
   4554   1.1  christos By default, a @value{GDBN} command is repeated when the user enters a
   4555   1.1  christos blank line at the command prompt.  A command can suppress this
   4556   1.8  christos behavior by invoking the @code{dont_repeat} method at some point in
   4557   1.8  christos its @code{invoke} method (normally this is done early in case of
   4558   1.8  christos exception).  This is similar to the user command @code{dont-repeat},
   4559   1.8  christos see @ref{Define, dont-repeat}.
   4560   1.1  christos @end defun
   4561   1.1  christos 
   4562   1.1  christos @defun Command.invoke (argument, from_tty)
   4563   1.1  christos This method is called by @value{GDBN} when this command is invoked.
   4564   1.1  christos 
   4565   1.1  christos @var{argument} is a string.  It is the argument to the command, after
   4566   1.1  christos leading and trailing whitespace has been stripped.
   4567   1.1  christos 
   4568   1.1  christos @var{from_tty} is a boolean argument.  When true, this means that the
   4569   1.1  christos command was entered by the user at the terminal; when false it means
   4570   1.1  christos that the command came from elsewhere.
   4571   1.1  christos 
   4572   1.1  christos If this method throws an exception, it is turned into a @value{GDBN}
   4573   1.1  christos @code{error} call.  Otherwise, the return value is ignored.
   4574   1.1  christos 
   4575   1.1  christos @findex gdb.string_to_argv
   4576   1.1  christos To break @var{argument} up into an argv-like string use
   4577   1.1  christos @code{gdb.string_to_argv}.  This function behaves identically to
   4578   1.1  christos @value{GDBN}'s internal argument lexer @code{buildargv}.
   4579   1.1  christos It is recommended to use this for consistency.
   4580   1.1  christos Arguments are separated by spaces and may be quoted.
   4581   1.1  christos Example:
   4582   1.1  christos 
   4583   1.1  christos @smallexample
   4584   1.1  christos print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
   4585   1.1  christos ['1', '2 "3', '4 "5', "6 '7"]
   4586   1.1  christos @end smallexample
   4587   1.1  christos 
   4588   1.1  christos @end defun
   4589   1.1  christos 
   4590   1.1  christos @cindex completion of Python commands
   4591   1.1  christos @defun Command.complete (text, word)
   4592   1.1  christos This method is called by @value{GDBN} when the user attempts
   4593   1.1  christos completion on this command.  All forms of completion are handled by
   4594   1.1  christos this method, that is, the @key{TAB} and @key{M-?} key bindings
   4595   1.1  christos (@pxref{Completion}), and the @code{complete} command (@pxref{Help,
   4596   1.1  christos complete}).
   4597   1.1  christos 
   4598   1.1  christos The arguments @var{text} and @var{word} are both strings; @var{text}
   4599   1.1  christos holds the complete command line up to the cursor's location, while
   4600   1.1  christos @var{word} holds the last word of the command line; this is computed
   4601   1.1  christos using a word-breaking heuristic.
   4602   1.1  christos 
   4603   1.1  christos The @code{complete} method can return several values:
   4604   1.1  christos @itemize @bullet
   4605   1.1  christos @item
   4606   1.1  christos If the return value is a sequence, the contents of the sequence are
   4607   1.1  christos used as the completions.  It is up to @code{complete} to ensure that the
   4608   1.1  christos contents actually do complete the word.  A zero-length sequence is
   4609   1.1  christos allowed, it means that there were no completions available.  Only
   4610   1.1  christos string elements of the sequence are used; other elements in the
   4611   1.1  christos sequence are ignored.
   4612   1.1  christos 
   4613   1.1  christos @item
   4614   1.1  christos If the return value is one of the @samp{COMPLETE_} constants defined
   4615   1.1  christos below, then the corresponding @value{GDBN}-internal completion
   4616   1.1  christos function is invoked, and its result is used.
   4617   1.1  christos 
   4618   1.1  christos @item
   4619   1.1  christos All other results are treated as though there were no available
   4620   1.1  christos completions.
   4621   1.1  christos @end itemize
   4622   1.1  christos @end defun
   4623   1.1  christos 
   4624   1.1  christos When a new command is registered, it must be declared as a member of
   4625   1.1  christos some general class of commands.  This is used to classify top-level
   4626   1.1  christos commands in the on-line help system; note that prefix commands are not
   4627   1.1  christos listed under their own category but rather that of their top-level
   4628   1.1  christos command.  The available classifications are represented by constants
   4629   1.1  christos defined in the @code{gdb} module:
   4630   1.1  christos 
   4631   1.1  christos @table @code
   4632   1.1  christos @findex COMMAND_NONE
   4633   1.1  christos @findex gdb.COMMAND_NONE
   4634   1.1  christos @item gdb.COMMAND_NONE
   4635   1.1  christos The command does not belong to any particular class.  A command in
   4636   1.1  christos this category will not be displayed in any of the help categories.
   4637   1.1  christos 
   4638   1.1  christos @findex COMMAND_RUNNING
   4639   1.1  christos @findex gdb.COMMAND_RUNNING
   4640   1.1  christos @item gdb.COMMAND_RUNNING
   4641   1.1  christos The command is related to running the inferior.  For example,
   4642   1.1  christos @code{start}, @code{step}, and @code{continue} are in this category.
   4643   1.1  christos Type @kbd{help running} at the @value{GDBN} prompt to see a list of
   4644   1.1  christos commands in this category.
   4645   1.1  christos 
   4646   1.1  christos @findex COMMAND_DATA
   4647   1.1  christos @findex gdb.COMMAND_DATA
   4648   1.1  christos @item gdb.COMMAND_DATA
   4649   1.1  christos The command is related to data or variables.  For example,
   4650   1.1  christos @code{call}, @code{find}, and @code{print} are in this category.  Type
   4651   1.1  christos @kbd{help data} at the @value{GDBN} prompt to see a list of commands
   4652   1.1  christos in this category.
   4653   1.1  christos 
   4654   1.1  christos @findex COMMAND_STACK
   4655   1.1  christos @findex gdb.COMMAND_STACK
   4656   1.1  christos @item gdb.COMMAND_STACK
   4657   1.1  christos The command has to do with manipulation of the stack.  For example,
   4658   1.1  christos @code{backtrace}, @code{frame}, and @code{return} are in this
   4659   1.1  christos category.  Type @kbd{help stack} at the @value{GDBN} prompt to see a
   4660   1.1  christos list of commands in this category.
   4661   1.1  christos 
   4662   1.1  christos @findex COMMAND_FILES
   4663   1.1  christos @findex gdb.COMMAND_FILES
   4664   1.1  christos @item gdb.COMMAND_FILES
   4665   1.1  christos This class is used for file-related commands.  For example,
   4666   1.1  christos @code{file}, @code{list} and @code{section} are in this category.
   4667   1.1  christos Type @kbd{help files} at the @value{GDBN} prompt to see a list of
   4668   1.1  christos commands in this category.
   4669   1.1  christos 
   4670   1.1  christos @findex COMMAND_SUPPORT
   4671   1.1  christos @findex gdb.COMMAND_SUPPORT
   4672   1.1  christos @item gdb.COMMAND_SUPPORT
   4673   1.1  christos This should be used for ``support facilities'', generally meaning
   4674   1.1  christos things that are useful to the user when interacting with @value{GDBN},
   4675   1.1  christos but not related to the state of the inferior.  For example,
   4676   1.1  christos @code{help}, @code{make}, and @code{shell} are in this category.  Type
   4677   1.1  christos @kbd{help support} at the @value{GDBN} prompt to see a list of
   4678   1.1  christos commands in this category.
   4679   1.1  christos 
   4680   1.1  christos @findex COMMAND_STATUS
   4681   1.1  christos @findex gdb.COMMAND_STATUS
   4682   1.1  christos @item gdb.COMMAND_STATUS
   4683   1.1  christos The command is an @samp{info}-related command, that is, related to the
   4684   1.1  christos state of @value{GDBN} itself.  For example, @code{info}, @code{macro},
   4685   1.1  christos and @code{show} are in this category.  Type @kbd{help status} at the
   4686   1.1  christos @value{GDBN} prompt to see a list of commands in this category.
   4687   1.1  christos 
   4688   1.1  christos @findex COMMAND_BREAKPOINTS
   4689   1.1  christos @findex gdb.COMMAND_BREAKPOINTS
   4690   1.1  christos @item gdb.COMMAND_BREAKPOINTS
   4691   1.1  christos The command has to do with breakpoints.  For example, @code{break},
   4692   1.1  christos @code{clear}, and @code{delete} are in this category.  Type @kbd{help
   4693   1.1  christos breakpoints} at the @value{GDBN} prompt to see a list of commands in
   4694   1.1  christos this category.
   4695   1.1  christos 
   4696   1.1  christos @findex COMMAND_TRACEPOINTS
   4697   1.1  christos @findex gdb.COMMAND_TRACEPOINTS
   4698   1.1  christos @item gdb.COMMAND_TRACEPOINTS
   4699   1.1  christos The command has to do with tracepoints.  For example, @code{trace},
   4700   1.1  christos @code{actions}, and @code{tfind} are in this category.  Type
   4701   1.1  christos @kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
   4702   1.1  christos commands in this category.
   4703   1.1  christos 
   4704   1.7  christos @findex COMMAND_TUI
   4705   1.7  christos @findex gdb.COMMAND_TUI
   4706   1.7  christos @item gdb.COMMAND_TUI
   4707   1.7  christos The command has to do with the text user interface (@pxref{TUI}).
   4708   1.7  christos Type @kbd{help tui} at the @value{GDBN} prompt to see a list of
   4709   1.7  christos commands in this category.
   4710   1.7  christos 
   4711   1.1  christos @findex COMMAND_USER
   4712   1.1  christos @findex gdb.COMMAND_USER
   4713   1.1  christos @item gdb.COMMAND_USER
   4714   1.1  christos The command is a general purpose command for the user, and typically
   4715   1.1  christos does not fit in one of the other categories.
   4716   1.1  christos Type @kbd{help user-defined} at the @value{GDBN} prompt to see
   4717   1.1  christos a list of commands in this category, as well as the list of gdb macros
   4718   1.1  christos (@pxref{Sequences}).
   4719   1.1  christos 
   4720   1.1  christos @findex COMMAND_OBSCURE
   4721   1.1  christos @findex gdb.COMMAND_OBSCURE
   4722   1.1  christos @item gdb.COMMAND_OBSCURE
   4723   1.1  christos The command is only used in unusual circumstances, or is not of
   4724   1.1  christos general interest to users.  For example, @code{checkpoint},
   4725   1.1  christos @code{fork}, and @code{stop} are in this category.  Type @kbd{help
   4726   1.1  christos obscure} at the @value{GDBN} prompt to see a list of commands in this
   4727   1.1  christos category.
   4728   1.1  christos 
   4729   1.1  christos @findex COMMAND_MAINTENANCE
   4730   1.1  christos @findex gdb.COMMAND_MAINTENANCE
   4731   1.1  christos @item gdb.COMMAND_MAINTENANCE
   4732   1.1  christos The command is only useful to @value{GDBN} maintainers.  The
   4733   1.1  christos @code{maintenance} and @code{flushregs} commands are in this category.
   4734   1.1  christos Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
   4735   1.1  christos commands in this category.
   4736   1.1  christos @end table
   4737   1.1  christos 
   4738   1.1  christos A new command can use a predefined completion function, either by
   4739   1.1  christos specifying it via an argument at initialization, or by returning it
   4740   1.1  christos from the @code{complete} method.  These predefined completion
   4741   1.1  christos constants are all defined in the @code{gdb} module:
   4742   1.1  christos 
   4743   1.1  christos @vtable @code
   4744   1.1  christos @vindex COMPLETE_NONE
   4745   1.1  christos @item gdb.COMPLETE_NONE
   4746   1.1  christos This constant means that no completion should be done.
   4747   1.1  christos 
   4748   1.1  christos @vindex COMPLETE_FILENAME
   4749   1.1  christos @item gdb.COMPLETE_FILENAME
   4750   1.1  christos This constant means that filename completion should be performed.
   4751   1.1  christos 
   4752   1.1  christos @vindex COMPLETE_LOCATION
   4753   1.1  christos @item gdb.COMPLETE_LOCATION
   4754   1.1  christos This constant means that location completion should be done.
   4755   1.8  christos @xref{Location Specifications}.
   4756   1.1  christos 
   4757   1.1  christos @vindex COMPLETE_COMMAND
   4758   1.1  christos @item gdb.COMPLETE_COMMAND
   4759   1.1  christos This constant means that completion should examine @value{GDBN}
   4760   1.1  christos command names.
   4761   1.1  christos 
   4762   1.1  christos @vindex COMPLETE_SYMBOL
   4763   1.1  christos @item gdb.COMPLETE_SYMBOL
   4764   1.1  christos This constant means that completion should be done using symbol names
   4765   1.1  christos as the source.
   4766   1.1  christos 
   4767   1.1  christos @vindex COMPLETE_EXPRESSION
   4768   1.1  christos @item gdb.COMPLETE_EXPRESSION
   4769   1.1  christos This constant means that completion should be done on expressions.
   4770   1.1  christos Often this means completing on symbol names, but some language
   4771   1.1  christos parsers also have support for completing on field names.
   4772   1.1  christos @end vtable
   4773   1.1  christos 
   4774   1.1  christos The following code snippet shows how a trivial CLI command can be
   4775   1.1  christos implemented in Python:
   4776   1.1  christos 
   4777   1.1  christos @smallexample
   4778   1.1  christos class HelloWorld (gdb.Command):
   4779   1.1  christos   """Greet the whole world."""
   4780   1.1  christos 
   4781   1.1  christos   def __init__ (self):
   4782   1.1  christos     super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
   4783   1.1  christos 
   4784   1.1  christos   def invoke (self, arg, from_tty):
   4785   1.8  christos     print ("Hello, World!")
   4786   1.1  christos 
   4787   1.1  christos HelloWorld ()
   4788   1.1  christos @end smallexample
   4789   1.1  christos 
   4790   1.1  christos The last line instantiates the class, and is necessary to trigger the
   4791   1.1  christos registration of the command with @value{GDBN}.  Depending on how the
   4792   1.1  christos Python code is read into @value{GDBN}, you may need to import the
   4793   1.1  christos @code{gdb} module explicitly.
   4794   1.1  christos 
   4795   1.8  christos @node GDB/MI Commands In Python
   4796   1.9  christos @subsubsection @sc{gdb/mi} Commands In Python
   4797   1.8  christos 
   4798   1.8  christos @cindex MI commands in python
   4799   1.8  christos @cindex commands in python, GDB/MI
   4800   1.8  christos @cindex python commands, GDB/MI
   4801   1.9  christos It is possible to add @sc{gdb/mi} (@pxref{GDB/MI}) commands
   4802   1.9  christos implemented in Python.  A @sc{gdb/mi} command is implemented using an
   4803   1.8  christos instance of the @code{gdb.MICommand} class, most commonly using a
   4804   1.8  christos subclass.
   4805   1.8  christos 
   4806   1.8  christos @defun MICommand.__init__ (name)
   4807   1.8  christos The object initializer for @code{MICommand} registers the new command
   4808   1.8  christos with @value{GDBN}.  This initializer is normally invoked from the
   4809   1.8  christos subclass' own @code{__init__} method.
   4810   1.8  christos 
   4811   1.8  christos @var{name} is the name of the command.  It must be a valid name of a
   4812   1.9  christos @sc{gdb/mi} command, and in particular must start with a hyphen
   4813   1.9  christos (@code{-}).  Reusing the name of a built-in @sc{gdb/mi} is not
   4814   1.8  christos allowed, and a @code{RuntimeError} will be raised.  Using the name
   4815   1.9  christos of an @sc{gdb/mi} command previously defined in Python is allowed, the
   4816   1.8  christos previous command will be replaced with the new command.
   4817   1.8  christos @end defun
   4818   1.8  christos 
   4819   1.8  christos @defun MICommand.invoke (arguments)
   4820   1.8  christos This method is called by @value{GDBN} when the new MI command is
   4821   1.8  christos invoked.
   4822   1.8  christos 
   4823   1.8  christos @var{arguments} is a list of strings.  Note, that @code{--thread}
   4824   1.8  christos and @code{--frame} arguments are handled by @value{GDBN} itself therefore
   4825   1.8  christos they do not show up in @code{arguments}.
   4826   1.8  christos 
   4827   1.8  christos If this method raises an exception, then it is turned into a
   4828   1.9  christos @sc{gdb/mi} @code{^error} response.  Only @code{gdb.GdbError}
   4829   1.8  christos exceptions (or its sub-classes) should be used for reporting errors to
   4830   1.8  christos users, any other exception type is treated as a failure of the
   4831   1.8  christos @code{invoke} method, and the exception will be printed to the error
   4832   1.8  christos stream according to the @kbd{set python print-stack} setting
   4833   1.8  christos (@pxref{set_python_print_stack,,@kbd{set python print-stack}}).
   4834   1.8  christos 
   4835   1.9  christos If this method returns @code{None}, then the @sc{gdb/mi} command will
   4836   1.8  christos return a @code{^done} response with no additional values.
   4837   1.8  christos 
   4838   1.8  christos Otherwise, the return value must be a dictionary, which is converted
   4839   1.9  christos to a @sc{gdb/mi} @var{result-record} (@pxref{GDB/MI Output Syntax}).
   4840   1.8  christos The keys of this dictionary must be strings, and are used as
   4841   1.8  christos @var{variable} names in the @var{result-record}, these strings must
   4842   1.8  christos comply with the naming rules detailed below.  The values of this
   4843   1.8  christos dictionary are recursively handled as follows:
   4844   1.8  christos 
   4845   1.8  christos @itemize
   4846   1.8  christos @item
   4847   1.8  christos If the value is Python sequence or iterator, it is converted to
   4848   1.9  christos @sc{gdb/mi} @var{list} with elements converted recursively.
   4849   1.8  christos 
   4850   1.8  christos @item
   4851   1.8  christos If the value is Python dictionary, it is converted to
   4852   1.9  christos @sc{gdb/mi} @var{tuple}.  Keys in that dictionary must be strings,
   4853   1.8  christos which comply with the @var{variable} naming rules detailed below.
   4854   1.8  christos Values are converted recursively.
   4855   1.8  christos 
   4856   1.8  christos @item
   4857   1.8  christos Otherwise, value is first converted to a Python string using
   4858   1.9  christos @code{str ()} and then converted to @sc{gdb/mi} @var{const}.
   4859   1.8  christos @end itemize
   4860   1.8  christos 
   4861   1.9  christos The strings used for @var{variable} names in the @sc{gdb/mi} output
   4862   1.8  christos must follow the following rules; the string must be at least one
   4863   1.8  christos character long, the first character must be in the set
   4864   1.8  christos @code{[a-zA-Z]}, while every subsequent character must be in the set
   4865   1.8  christos @code{[-_a-zA-Z0-9]}.
   4866   1.8  christos @end defun
   4867   1.8  christos 
   4868   1.8  christos An instance of @code{MICommand} has the following attributes:
   4869   1.8  christos 
   4870   1.8  christos @defvar MICommand.name
   4871   1.9  christos A string, the name of this @sc{gdb/mi} command, as was passed to the
   4872   1.8  christos @code{__init__} method.  This attribute is read-only.
   4873   1.8  christos @end defvar
   4874   1.8  christos 
   4875   1.8  christos @defvar MICommand.installed
   4876   1.8  christos A boolean value indicating if this command is installed ready for a
   4877   1.8  christos user to call from the command line.  Commands are automatically
   4878   1.8  christos installed when they are instantiated, after which this attribute will
   4879   1.8  christos be @code{True}.
   4880   1.8  christos 
   4881   1.8  christos If later, a new command is created with the same name, then the
   4882   1.8  christos original command will become uninstalled, and this attribute will be
   4883   1.8  christos @code{False}.
   4884   1.8  christos 
   4885   1.8  christos This attribute is read-write, setting this attribute to @code{False}
   4886   1.8  christos will uninstall the command, removing it from the set of available
   4887   1.8  christos commands.  Setting this attribute to @code{True} will install the
   4888   1.8  christos command for use.  If there is already a Python command with this name
   4889   1.8  christos installed, the currently installed command will be uninstalled, and
   4890   1.9  christos this command installed in its stead.
   4891   1.8  christos @end defvar
   4892   1.8  christos 
   4893   1.9  christos The following code snippet shows how some trivial MI commands can be
   4894   1.8  christos implemented in Python:
   4895   1.8  christos 
   4896   1.8  christos @smallexample
   4897   1.8  christos class MIEcho(gdb.MICommand):
   4898   1.8  christos     """Echo arguments passed to the command."""
   4899   1.8  christos 
   4900   1.8  christos     def __init__(self, name, mode):
   4901   1.8  christos         self._mode = mode
   4902   1.8  christos         super(MIEcho, self).__init__(name)
   4903   1.8  christos 
   4904   1.8  christos     def invoke(self, argv):
   4905   1.8  christos         if self._mode == 'dict':
   4906   1.8  christos             return @{ 'dict': @{ 'argv' : argv @} @}
   4907   1.8  christos         elif self._mode == 'list':
   4908   1.8  christos             return @{ 'list': argv @}
   4909   1.8  christos         else:
   4910   1.8  christos             return @{ 'string': ", ".join(argv) @}
   4911   1.8  christos 
   4912   1.8  christos 
   4913   1.8  christos MIEcho("-echo-dict", "dict")
   4914   1.8  christos MIEcho("-echo-list", "list")
   4915   1.8  christos MIEcho("-echo-string", "string")
   4916   1.8  christos @end smallexample
   4917   1.8  christos 
   4918   1.8  christos The last three lines instantiate the class three times, creating three
   4919   1.9  christos new @sc{gdb/mi} commands @code{-echo-dict}, @code{-echo-list}, and
   4920   1.8  christos @code{-echo-string}.  Each time a subclass of @code{gdb.MICommand} is
   4921   1.8  christos instantiated, the new command is automatically registered with
   4922   1.8  christos @value{GDBN}.
   4923   1.8  christos 
   4924   1.8  christos Depending on how the Python code is read into @value{GDBN}, you may
   4925   1.8  christos need to import the @code{gdb} module explicitly.
   4926   1.8  christos 
   4927   1.8  christos The following example shows a @value{GDBN} session in which the above
   4928   1.8  christos commands have been added:
   4929   1.8  christos 
   4930   1.8  christos @smallexample
   4931   1.8  christos (@value{GDBP})
   4932   1.8  christos -echo-dict abc def ghi
   4933   1.8  christos ^done,dict=@{argv=["abc","def","ghi"]@}
   4934   1.8  christos (@value{GDBP})
   4935   1.8  christos -echo-list abc def ghi
   4936   1.8  christos ^done,list=["abc","def","ghi"]
   4937   1.8  christos (@value{GDBP})
   4938   1.8  christos -echo-string abc def ghi
   4939   1.8  christos ^done,string="abc, def, ghi"
   4940   1.8  christos (@value{GDBP})
   4941   1.8  christos @end smallexample
   4942   1.8  christos 
   4943   1.9  christos Conversely, it is possible to execute @sc{gdb/mi} commands from
   4944   1.9  christos Python, with the results being a Python object and not a
   4945   1.9  christos specially-formatted string.  This is done with the
   4946   1.9  christos @code{gdb.execute_mi} function.
   4947   1.9  christos 
   4948   1.9  christos @defun gdb.execute_mi (command @r{[}, arg @r{]}@dots{})
   4949   1.9  christos Invoke a @sc{gdb/mi} command.  @var{command} is the name of the
   4950   1.9  christos command, a string.  The arguments, @var{arg}, are passed to the
   4951   1.9  christos command.  Each argument must also be a string.
   4952   1.9  christos 
   4953   1.9  christos This function returns a Python dictionary whose contents reflect the
   4954   1.9  christos corresponding @sc{GDB/MI} command's output.  Refer to the
   4955   1.9  christos documentation for these commands for details.  Lists are represented
   4956   1.9  christos as Python lists, and tuples are represented as Python dictionaries.
   4957   1.9  christos 
   4958   1.9  christos If the command fails, it will raise a Python exception.
   4959   1.9  christos @end defun
   4960   1.9  christos 
   4961   1.9  christos Here is how this works using the commands from the example above:
   4962   1.9  christos 
   4963   1.9  christos @smallexample
   4964   1.9  christos (@value{GDBP}) python print(gdb.execute_mi("-echo-dict", "abc", "def", "ghi"))
   4965   1.9  christos @{'dict': @{'argv': ['abc', 'def', 'ghi']@}@}
   4966   1.9  christos (@value{GDBP}) python print(gdb.execute_mi("-echo-list", "abc", "def", "ghi"))
   4967   1.9  christos @{'list': ['abc', 'def', 'ghi']@}
   4968   1.9  christos (@value{GDBP}) python print(gdb.execute_mi("-echo-string", "abc", "def", "ghi"))
   4969   1.9  christos @{'string': 'abc, def, ghi'@}
   4970   1.9  christos @end smallexample
   4971   1.9  christos 
   4972   1.9  christos @node GDB/MI Notifications In Python
   4973   1.9  christos @subsubsection @sc{gdb/mi} Notifications In Python
   4974   1.9  christos 
   4975   1.9  christos @cindex MI notifications in python
   4976   1.9  christos @cindex notifications in python, GDB/MI
   4977   1.9  christos @cindex python notifications, GDB/MI
   4978   1.9  christos 
   4979   1.9  christos It is possible to emit @sc{gdb/mi} notifications from
   4980   1.9  christos Python.  Use the @code{gdb.notify_mi} function to do that.
   4981   1.9  christos 
   4982   1.9  christos @defun gdb.notify_mi (name @r{[}, data@r{]})
   4983   1.9  christos Emit a @sc{gdb/mi} asynchronous notification.  @var{name} is the name of the
   4984   1.9  christos notification, consisting of alphanumeric characters and a hyphen (@code{-}).
   4985   1.9  christos @var{data} is any additional data to be emitted with the notification, passed
   4986   1.9  christos as a Python dictionary. This argument is optional. The dictionary is converted
   4987   1.9  christos to a @sc{gdb/mi} @var{result} records (@pxref{GDB/MI Output Syntax}) the same way
   4988   1.9  christos as result of Python MI command (@pxref{GDB/MI Commands In Python}).
   4989   1.9  christos 
   4990   1.9  christos If @var{data} is @code{None} then no additional values are emitted.
   4991   1.9  christos @end defun
   4992   1.9  christos 
   4993   1.9  christos While using existing notification names (@pxref{GDB/MI Async Records}) with
   4994   1.9  christos @code{gdb.notify_mi} is allowed, users are encouraged to prefix user-defined
   4995   1.9  christos notification with a hyphen (@code{-}) to avoid possible conflict.
   4996   1.9  christos @value{GDBN} will never introduce notification starting with hyphen.
   4997   1.9  christos 
   4998   1.9  christos Here is how to emit @code{=-connection-removed} whenever a connection to remote
   4999   1.9  christos GDB server is closed (@pxref{Connections In Python}):
   5000   1.9  christos 
   5001   1.9  christos @smallexample
   5002   1.9  christos def notify_connection_removed(event):
   5003   1.9  christos     data = @{"id": event.connection.num, "type": event.connection.type@}
   5004   1.9  christos     gdb.notify_mi("-connection-removed", data)
   5005   1.9  christos 
   5006   1.9  christos 
   5007   1.9  christos gdb.events.connection_removed.connect(notify_connection_removed)
   5008   1.9  christos @end smallexample
   5009   1.9  christos 
   5010   1.9  christos Then, each time a connection is closed, there will be a notification on MI channel:
   5011   1.9  christos 
   5012   1.9  christos @smallexample
   5013   1.9  christos =-connection-removed,id="1",type="remote"
   5014   1.9  christos @end smallexample
   5015   1.9  christos 
   5016   1.1  christos @node Parameters In Python
   5017   1.1  christos @subsubsection Parameters In Python
   5018   1.1  christos 
   5019   1.1  christos @cindex parameters in python
   5020   1.1  christos @cindex python parameters
   5021   1.1  christos @tindex gdb.Parameter
   5022   1.1  christos @tindex Parameter
   5023   1.1  christos You can implement new @value{GDBN} parameters using Python.  A new
   5024   1.1  christos parameter is implemented as an instance of the @code{gdb.Parameter}
   5025   1.1  christos class.
   5026   1.1  christos 
   5027   1.1  christos Parameters are exposed to the user via the @code{set} and
   5028   1.1  christos @code{show} commands.  @xref{Help}.
   5029   1.1  christos 
   5030   1.1  christos There are many parameters that already exist and can be set in
   5031   1.1  christos @value{GDBN}.  Two examples are: @code{set follow fork} and
   5032   1.1  christos @code{set charset}.  Setting these parameters influences certain
   5033   1.1  christos behavior in @value{GDBN}.  Similarly, you can define parameters that
   5034   1.1  christos can be used to influence behavior in custom Python scripts and commands.
   5035   1.1  christos 
   5036   1.9  christos @defun Parameter.__init__ (name, command_class, parameter_class @r{[}, enum_sequence@r{]})
   5037   1.1  christos The object initializer for @code{Parameter} registers the new
   5038   1.1  christos parameter with @value{GDBN}.  This initializer is normally invoked
   5039   1.1  christos from the subclass' own @code{__init__} method.
   5040   1.1  christos 
   5041   1.1  christos @var{name} is the name of the new parameter.  If @var{name} consists
   5042   1.1  christos of multiple words, then the initial words are looked for as prefix
   5043   1.1  christos parameters.  An example of this can be illustrated with the
   5044   1.1  christos @code{set print} set of parameters.  If @var{name} is
   5045   1.1  christos @code{print foo}, then @code{print} will be searched as the prefix
   5046   1.1  christos parameter.  In this case the parameter can subsequently be accessed in
   5047   1.1  christos @value{GDBN} as @code{set print foo}.
   5048   1.1  christos 
   5049   1.1  christos If @var{name} consists of multiple words, and no prefix parameter group
   5050   1.1  christos can be found, an exception is raised.
   5051   1.1  christos 
   5052   1.9  christos @var{command_class} should be one of the @samp{COMMAND_} constants
   5053   1.8  christos (@pxref{CLI Commands In Python}).  This argument tells @value{GDBN} how to
   5054   1.1  christos categorize the new parameter in the help system.
   5055   1.1  christos 
   5056   1.9  christos @var{parameter_class} should be one of the @samp{PARAM_} constants
   5057   1.1  christos defined below.  This argument tells @value{GDBN} the type of the new
   5058   1.1  christos parameter; this information is used for input validation and
   5059   1.1  christos completion.
   5060   1.1  christos 
   5061   1.9  christos If @var{parameter_class} is @code{PARAM_ENUM}, then
   5062   1.9  christos @var{enum_sequence} must be a sequence of strings.  These strings
   5063   1.1  christos represent the possible values for the parameter.
   5064   1.1  christos 
   5065   1.9  christos If @var{parameter_class} is not @code{PARAM_ENUM}, then the presence
   5066   1.1  christos of a fourth argument will cause an exception to be thrown.
   5067   1.1  christos 
   5068   1.8  christos The help text for the new parameter includes the Python documentation
   5069   1.8  christos string from the parameter's class, if there is one.  If there is no
   5070   1.8  christos documentation string, a default value is used.  The documentation
   5071   1.8  christos string is included in the output of the parameters @code{help set} and
   5072   1.8  christos @code{help show} commands, and should be written taking this into
   5073   1.8  christos account.
   5074   1.1  christos @end defun
   5075   1.1  christos 
   5076   1.1  christos @defvar Parameter.set_doc
   5077   1.1  christos If this attribute exists, and is a string, then its value is used as
   5078   1.8  christos the first part of the help text for this parameter's @code{set}
   5079   1.8  christos command.  The second part of the help text is taken from the
   5080   1.8  christos documentation string for the parameter's class, if there is one.
   5081   1.8  christos 
   5082   1.8  christos The value of @code{set_doc} should give a brief summary specific to
   5083   1.8  christos the set action, this text is only displayed when the user runs the
   5084   1.8  christos @code{help set} command for this parameter.  The class documentation
   5085   1.8  christos should be used to give a fuller description of what the parameter
   5086   1.8  christos does, this text is displayed for both the @code{help set} and
   5087   1.8  christos @code{help show} commands.
   5088   1.8  christos 
   5089   1.8  christos The @code{set_doc} value is examined when @code{Parameter.__init__} is
   5090   1.8  christos invoked; subsequent changes have no effect.
   5091   1.1  christos @end defvar
   5092   1.1  christos 
   5093   1.1  christos @defvar Parameter.show_doc
   5094   1.1  christos If this attribute exists, and is a string, then its value is used as
   5095   1.8  christos the first part of the help text for this parameter's @code{show}
   5096   1.8  christos command.  The second part of the help text is taken from the
   5097   1.8  christos documentation string for the parameter's class, if there is one.
   5098   1.8  christos 
   5099   1.8  christos The value of @code{show_doc} should give a brief summary specific to
   5100   1.8  christos the show action, this text is only displayed when the user runs the
   5101   1.8  christos @code{help show} command for this parameter.  The class documentation
   5102   1.8  christos should be used to give a fuller description of what the parameter
   5103   1.8  christos does, this text is displayed for both the @code{help set} and
   5104   1.8  christos @code{help show} commands.
   5105   1.8  christos 
   5106   1.8  christos The @code{show_doc} value is examined when @code{Parameter.__init__}
   5107   1.8  christos is invoked; subsequent changes have no effect.
   5108   1.1  christos @end defvar
   5109   1.1  christos 
   5110   1.1  christos @defvar Parameter.value
   5111   1.1  christos The @code{value} attribute holds the underlying value of the
   5112   1.1  christos parameter.  It can be read and assigned to just as any other
   5113   1.1  christos attribute.  @value{GDBN} does validation when assignments are made.
   5114   1.1  christos @end defvar
   5115   1.1  christos 
   5116   1.6  christos There are two methods that may be implemented in any @code{Parameter}
   5117   1.6  christos class.  These are:
   5118   1.1  christos 
   5119   1.1  christos @defun Parameter.get_set_string (self)
   5120   1.6  christos If this method exists, @value{GDBN} will call it when a
   5121   1.6  christos @var{parameter}'s value has been changed via the @code{set} API (for
   5122   1.6  christos example, @kbd{set foo off}).  The @code{value} attribute has already
   5123   1.6  christos been populated with the new value and may be used in output.  This
   5124   1.6  christos method must return a string.  If the returned string is not empty,
   5125   1.6  christos @value{GDBN} will present it to the user.
   5126   1.6  christos 
   5127   1.6  christos If this method raises the @code{gdb.GdbError} exception
   5128   1.6  christos (@pxref{Exception Handling}), then @value{GDBN} will print the
   5129   1.6  christos exception's string and the @code{set} command will fail.  Note,
   5130   1.6  christos however, that the @code{value} attribute will not be reset in this
   5131   1.6  christos case.  So, if your parameter must validate values, it should store the
   5132   1.6  christos old value internally and reset the exposed value, like so:
   5133   1.6  christos 
   5134   1.6  christos @smallexample
   5135   1.6  christos class ExampleParam (gdb.Parameter):
   5136   1.6  christos    def __init__ (self, name):
   5137   1.6  christos       super (ExampleParam, self).__init__ (name,
   5138   1.6  christos                    gdb.COMMAND_DATA,
   5139   1.6  christos                    gdb.PARAM_BOOLEAN)
   5140   1.6  christos       self.value = True
   5141   1.6  christos       self.saved_value = True
   5142   1.6  christos    def validate(self):
   5143   1.6  christos       return False
   5144   1.6  christos    def get_set_string (self):
   5145   1.6  christos       if not self.validate():
   5146   1.6  christos         self.value = self.saved_value
   5147   1.6  christos         raise gdb.GdbError('Failed to validate')
   5148   1.6  christos       self.saved_value = self.value
   5149   1.8  christos       return ""
   5150   1.6  christos @end smallexample
   5151   1.1  christos @end defun
   5152   1.1  christos 
   5153   1.1  christos @defun Parameter.get_show_string (self, svalue)
   5154   1.1  christos @value{GDBN} will call this method when a @var{parameter}'s
   5155   1.1  christos @code{show} API has been invoked (for example, @kbd{show foo}).  The
   5156   1.1  christos argument @code{svalue} receives the string representation of the
   5157   1.1  christos current value.  This method must return a string.
   5158   1.1  christos @end defun
   5159   1.1  christos 
   5160   1.1  christos When a new parameter is defined, its type must be specified.  The
   5161   1.1  christos available types are represented by constants defined in the @code{gdb}
   5162   1.1  christos module:
   5163   1.1  christos 
   5164   1.1  christos @table @code
   5165   1.1  christos @findex PARAM_BOOLEAN
   5166   1.1  christos @findex gdb.PARAM_BOOLEAN
   5167   1.1  christos @item gdb.PARAM_BOOLEAN
   5168   1.1  christos The value is a plain boolean.  The Python boolean values, @code{True}
   5169   1.1  christos and @code{False} are the only valid values.
   5170   1.1  christos 
   5171   1.1  christos @findex PARAM_AUTO_BOOLEAN
   5172   1.1  christos @findex gdb.PARAM_AUTO_BOOLEAN
   5173   1.1  christos @item gdb.PARAM_AUTO_BOOLEAN
   5174   1.1  christos The value has three possible states: true, false, and @samp{auto}.  In
   5175   1.1  christos Python, true and false are represented using boolean constants, and
   5176   1.1  christos @samp{auto} is represented using @code{None}.
   5177   1.1  christos 
   5178   1.1  christos @findex PARAM_UINTEGER
   5179   1.1  christos @findex gdb.PARAM_UINTEGER
   5180   1.1  christos @item gdb.PARAM_UINTEGER
   5181   1.9  christos The value is an unsigned integer.  The value of @code{None} should be
   5182   1.9  christos interpreted to mean ``unlimited'' (literal @code{'unlimited'} can also
   5183   1.9  christos be used to set that value), and the value of 0 is reserved and should
   5184   1.9  christos not be used.
   5185   1.1  christos 
   5186   1.1  christos @findex PARAM_INTEGER
   5187   1.1  christos @findex gdb.PARAM_INTEGER
   5188   1.1  christos @item gdb.PARAM_INTEGER
   5189   1.9  christos The value is a signed integer.  The value of @code{None} should be
   5190   1.9  christos interpreted to mean ``unlimited'' (literal @code{'unlimited'} can also
   5191   1.9  christos be used to set that value), and the value of 0 is reserved and should
   5192   1.9  christos not be used.
   5193   1.1  christos 
   5194   1.1  christos @findex PARAM_STRING
   5195   1.1  christos @findex gdb.PARAM_STRING
   5196   1.1  christos @item gdb.PARAM_STRING
   5197   1.1  christos The value is a string.  When the user modifies the string, any escape
   5198   1.1  christos sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
   5199   1.1  christos translated into corresponding characters and encoded into the current
   5200   1.1  christos host charset.
   5201   1.1  christos 
   5202   1.1  christos @findex PARAM_STRING_NOESCAPE
   5203   1.1  christos @findex gdb.PARAM_STRING_NOESCAPE
   5204   1.1  christos @item gdb.PARAM_STRING_NOESCAPE
   5205   1.1  christos The value is a string.  When the user modifies the string, escapes are
   5206   1.1  christos passed through untranslated.
   5207   1.1  christos 
   5208   1.1  christos @findex PARAM_OPTIONAL_FILENAME
   5209   1.1  christos @findex gdb.PARAM_OPTIONAL_FILENAME
   5210   1.1  christos @item gdb.PARAM_OPTIONAL_FILENAME
   5211   1.1  christos The value is a either a filename (a string), or @code{None}.
   5212   1.1  christos 
   5213   1.1  christos @findex PARAM_FILENAME
   5214   1.1  christos @findex gdb.PARAM_FILENAME
   5215   1.1  christos @item gdb.PARAM_FILENAME
   5216   1.1  christos The value is a filename.  This is just like
   5217   1.1  christos @code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
   5218   1.1  christos 
   5219   1.1  christos @findex PARAM_ZINTEGER
   5220   1.1  christos @findex gdb.PARAM_ZINTEGER
   5221   1.1  christos @item gdb.PARAM_ZINTEGER
   5222   1.9  christos The value is a signed integer.  This is like @code{PARAM_INTEGER},
   5223   1.9  christos except that 0 is allowed and the value of @code{None} is not supported.
   5224   1.1  christos 
   5225   1.6  christos @findex PARAM_ZUINTEGER
   5226   1.6  christos @findex gdb.PARAM_ZUINTEGER
   5227   1.6  christos @item gdb.PARAM_ZUINTEGER
   5228   1.9  christos The value is an unsigned integer.  This is like @code{PARAM_UINTEGER},
   5229   1.9  christos except that 0 is allowed and the value of @code{None} is not supported.
   5230   1.6  christos 
   5231   1.6  christos @findex PARAM_ZUINTEGER_UNLIMITED
   5232   1.6  christos @findex gdb.PARAM_ZUINTEGER_UNLIMITED
   5233   1.6  christos @item gdb.PARAM_ZUINTEGER_UNLIMITED
   5234   1.9  christos The value is a signed integer.  This is like @code{PARAM_INTEGER}
   5235   1.9  christos including that the value of @code{None} should be interpreted to mean
   5236   1.9  christos ``unlimited'' (literal @code{'unlimited'} can also be used to set that
   5237   1.9  christos value), except that 0 is allowed, and the value cannot be negative,
   5238   1.9  christos except the special value -1 is returned for the setting of ``unlimited''.
   5239   1.6  christos 
   5240   1.1  christos @findex PARAM_ENUM
   5241   1.1  christos @findex gdb.PARAM_ENUM
   5242   1.1  christos @item gdb.PARAM_ENUM
   5243   1.1  christos The value is a string, which must be one of a collection string
   5244   1.1  christos constants provided when the parameter is created.
   5245   1.1  christos @end table
   5246   1.1  christos 
   5247   1.1  christos @node Functions In Python
   5248   1.1  christos @subsubsection Writing new convenience functions
   5249   1.1  christos 
   5250   1.1  christos @cindex writing convenience functions
   5251   1.1  christos @cindex convenience functions in python
   5252   1.1  christos @cindex python convenience functions
   5253   1.1  christos @tindex gdb.Function
   5254   1.1  christos @tindex Function
   5255   1.1  christos You can implement new convenience functions (@pxref{Convenience Vars})
   5256   1.1  christos in Python.  A convenience function is an instance of a subclass of the
   5257   1.1  christos class @code{gdb.Function}.
   5258   1.1  christos 
   5259   1.1  christos @defun Function.__init__ (name)
   5260   1.1  christos The initializer for @code{Function} registers the new function with
   5261   1.1  christos @value{GDBN}.  The argument @var{name} is the name of the function,
   5262   1.1  christos a string.  The function will be visible to the user as a convenience
   5263   1.1  christos variable of type @code{internal function}, whose name is the same as
   5264   1.1  christos the given @var{name}.
   5265   1.1  christos 
   5266   1.1  christos The documentation for the new function is taken from the documentation
   5267   1.1  christos string for the new class.
   5268   1.1  christos @end defun
   5269   1.1  christos 
   5270   1.9  christos @defun Function.invoke (*args)
   5271   1.1  christos When a convenience function is evaluated, its arguments are converted
   5272   1.1  christos to instances of @code{gdb.Value}, and then the function's
   5273   1.1  christos @code{invoke} method is called.  Note that @value{GDBN} does not
   5274   1.1  christos predetermine the arity of convenience functions.  Instead, all
   5275   1.1  christos available arguments are passed to @code{invoke}, following the
   5276   1.1  christos standard Python calling convention.  In particular, a convenience
   5277   1.1  christos function can have default values for parameters without ill effect.
   5278   1.1  christos 
   5279   1.1  christos The return value of this method is used as its value in the enclosing
   5280   1.1  christos expression.  If an ordinary Python value is returned, it is converted
   5281   1.1  christos to a @code{gdb.Value} following the usual rules.
   5282   1.1  christos @end defun
   5283   1.1  christos 
   5284   1.1  christos The following code snippet shows how a trivial convenience function can
   5285   1.1  christos be implemented in Python:
   5286   1.1  christos 
   5287   1.1  christos @smallexample
   5288   1.1  christos class Greet (gdb.Function):
   5289   1.1  christos   """Return string to greet someone.
   5290   1.1  christos Takes a name as argument."""
   5291   1.1  christos 
   5292   1.1  christos   def __init__ (self):
   5293   1.1  christos     super (Greet, self).__init__ ("greet")
   5294   1.1  christos 
   5295   1.1  christos   def invoke (self, name):
   5296   1.1  christos     return "Hello, %s!" % name.string ()
   5297   1.1  christos 
   5298   1.1  christos Greet ()
   5299   1.1  christos @end smallexample
   5300   1.1  christos 
   5301   1.1  christos The last line instantiates the class, and is necessary to trigger the
   5302   1.1  christos registration of the function with @value{GDBN}.  Depending on how the
   5303   1.1  christos Python code is read into @value{GDBN}, you may need to import the
   5304   1.1  christos @code{gdb} module explicitly.
   5305   1.1  christos 
   5306   1.1  christos Now you can use the function in an expression:
   5307   1.1  christos 
   5308   1.1  christos @smallexample
   5309   1.1  christos (gdb) print $greet("Bob")
   5310   1.1  christos $1 = "Hello, Bob!"
   5311   1.1  christos @end smallexample
   5312   1.1  christos 
   5313   1.1  christos @node Progspaces In Python
   5314   1.1  christos @subsubsection Program Spaces In Python
   5315   1.1  christos 
   5316   1.1  christos @cindex progspaces in python
   5317   1.1  christos @tindex gdb.Progspace
   5318   1.1  christos @tindex Progspace
   5319   1.1  christos A program space, or @dfn{progspace}, represents a symbolic view
   5320   1.1  christos of an address space.
   5321   1.1  christos It consists of all of the objfiles of the program.
   5322   1.1  christos @xref{Objfiles In Python}.
   5323   1.7  christos @xref{Inferiors Connections and Programs, program spaces}, for more details
   5324   1.1  christos about program spaces.
   5325   1.1  christos 
   5326   1.1  christos The following progspace-related functions are available in the
   5327   1.1  christos @code{gdb} module:
   5328   1.1  christos 
   5329   1.1  christos @defun gdb.current_progspace ()
   5330   1.1  christos This function returns the program space of the currently selected inferior.
   5331   1.7  christos @xref{Inferiors Connections and Programs}.  This is identical to
   5332   1.6  christos @code{gdb.selected_inferior().progspace} (@pxref{Inferiors In Python}) and is
   5333   1.6  christos included for historical compatibility.
   5334   1.1  christos @end defun
   5335   1.1  christos 
   5336   1.1  christos @defun gdb.progspaces ()
   5337   1.1  christos Return a sequence of all the progspaces currently known to @value{GDBN}.
   5338   1.1  christos @end defun
   5339   1.1  christos 
   5340   1.1  christos Each progspace is represented by an instance of the @code{gdb.Progspace}
   5341   1.1  christos class.
   5342   1.1  christos 
   5343   1.1  christos @defvar Progspace.filename
   5344   1.9  christos The file name, as a string, of the main symbol file (from which debug
   5345   1.9  christos symbols have been loaded) for the progspace, e.g.@: the argument to
   5346   1.9  christos the @kbd{symbol-file} or @kbd{file} commands.
   5347   1.9  christos 
   5348   1.9  christos If there is no main symbol table currently loaded, then this attribute
   5349   1.9  christos will be @code{None}.
   5350   1.9  christos @end defvar
   5351   1.9  christos 
   5352   1.9  christos @defvar Progspace.symbol_file
   5353   1.9  christos The @code{gdb.Objfile} representing the main symbol file (from which
   5354   1.9  christos debug symbols have been loaded) for the @code{gdb.Progspace}.  This is
   5355   1.9  christos the symbol file set by the @kbd{symbol-file} or @kbd{file} commands.
   5356   1.9  christos 
   5357   1.9  christos This will be the @code{gdb.Objfile} representing
   5358   1.9  christos @code{Progspace.filename} when @code{Progspace.filename} is not
   5359   1.9  christos @code{None}.
   5360   1.9  christos 
   5361   1.9  christos If there is no main symbol table currently loaded, then this attribute
   5362   1.9  christos will be @code{None}.
   5363   1.9  christos 
   5364   1.9  christos If the @code{Progspace} is invalid, i.e.@:, when
   5365   1.9  christos @code{Progspace.is_valid()} returns @code{False}, then attempting to
   5366   1.9  christos access this attribute will raise a @code{RuntimeError} exception.
   5367   1.9  christos @end defvar
   5368   1.9  christos 
   5369   1.9  christos @defvar Progspace.executable_filename
   5370   1.9  christos The file name, as a string, of the executable file in use by this
   5371   1.9  christos program space.  The executable file is the file that @value{GDBN} will
   5372   1.9  christos invoke in order to start an inferior when using a native target.  The
   5373   1.9  christos file name within this attribute is updated by the @kbd{exec-file} and
   5374   1.9  christos @kbd{file} commands.
   5375   1.9  christos 
   5376   1.9  christos If no executable is currently set within this @code{Progspace} then
   5377   1.9  christos this attribute contains @code{None}.
   5378   1.9  christos 
   5379   1.9  christos If the @code{Progspace} is invalid, i.e.@:, when
   5380   1.9  christos @code{Progspace.is_valid()} returns @code{False}, then attempting to
   5381   1.9  christos access this attribute will raise a @code{RuntimeError} exception.
   5382   1.1  christos @end defvar
   5383   1.1  christos 
   5384   1.1  christos @defvar Progspace.pretty_printers
   5385   1.1  christos The @code{pretty_printers} attribute is a list of functions.  It is
   5386   1.1  christos used to look up pretty-printers.  A @code{Value} is passed to each
   5387   1.1  christos function in order; if the function returns @code{None}, then the
   5388   1.1  christos search continues.  Otherwise, the return value should be an object
   5389   1.1  christos which is used to format the value.  @xref{Pretty Printing API}, for more
   5390   1.1  christos information.
   5391   1.1  christos @end defvar
   5392   1.1  christos 
   5393   1.1  christos @defvar Progspace.type_printers
   5394   1.1  christos The @code{type_printers} attribute is a list of type printer objects.
   5395   1.1  christos @xref{Type Printing API}, for more information.
   5396   1.1  christos @end defvar
   5397   1.1  christos 
   5398   1.1  christos @defvar Progspace.frame_filters
   5399   1.1  christos The @code{frame_filters} attribute is a dictionary of frame filter
   5400   1.1  christos objects.  @xref{Frame Filter API}, for more information.
   5401   1.1  christos @end defvar
   5402   1.1  christos 
   5403  1.10  christos @defvar Progspace.missing_file_handlers
   5404  1.10  christos The @code{missing_file_handlers} attribute is a list of tuples.  Each
   5405  1.10  christos tuple holds a missing-file handler object for this program space.  For
   5406  1.10  christos more information, @pxref{Missing Debug Info In Python}, and
   5407  1.10  christos @ref{Missing Objfiles In Python}.
   5408   1.9  christos @end defvar
   5409   1.9  christos 
   5410   1.6  christos A program space has the following methods:
   5411   1.6  christos 
   5412   1.6  christos @defun Progspace.block_for_pc (pc)
   5413   1.6  christos Return the innermost @code{gdb.Block} containing the given @var{pc}
   5414   1.6  christos value.  If the block cannot be found for the @var{pc} value specified,
   5415   1.6  christos the function will return @code{None}.
   5416   1.6  christos @end defun
   5417   1.6  christos 
   5418   1.6  christos @defun Progspace.find_pc_line (pc)
   5419   1.6  christos Return the @code{gdb.Symtab_and_line} object corresponding to the
   5420   1.6  christos @var{pc} value.  @xref{Symbol Tables In Python}.  If an invalid value
   5421   1.6  christos of @var{pc} is passed as an argument, then the @code{symtab} and
   5422   1.6  christos @code{line} attributes of the returned @code{gdb.Symtab_and_line}
   5423   1.6  christos object will be @code{None} and 0 respectively.
   5424   1.6  christos @end defun
   5425   1.6  christos 
   5426   1.6  christos @defun Progspace.is_valid ()
   5427   1.6  christos Returns @code{True} if the @code{gdb.Progspace} object is valid,
   5428   1.6  christos @code{False} if not.  A @code{gdb.Progspace} object can become invalid
   5429   1.6  christos if the program space file it refers to is not referenced by any
   5430   1.6  christos inferior.  All other @code{gdb.Progspace} methods will throw an
   5431   1.6  christos exception if it is invalid at the time the method is called.
   5432   1.6  christos @end defun
   5433   1.6  christos 
   5434   1.6  christos @defun Progspace.objfiles ()
   5435   1.6  christos Return a sequence of all the objfiles referenced by this program
   5436   1.6  christos space.  @xref{Objfiles In Python}.
   5437   1.6  christos @end defun
   5438   1.6  christos 
   5439   1.6  christos @defun Progspace.solib_name (address)
   5440   1.6  christos Return the name of the shared library holding the given @var{address}
   5441   1.6  christos as a string, or @code{None}.
   5442   1.6  christos @end defun
   5443   1.6  christos 
   5444   1.9  christos @defun Progspace.objfile_for_address (address)
   5445   1.9  christos Return the @code{gdb.Objfile} holding the given address, or
   5446   1.9  christos @code{None} if no objfile covers it.
   5447   1.9  christos @end defun
   5448   1.9  christos 
   5449   1.1  christos One may add arbitrary attributes to @code{gdb.Progspace} objects
   5450   1.1  christos in the usual Python way.
   5451   1.1  christos This is useful if, for example, one needs to do some extra record keeping
   5452   1.1  christos associated with the program space.
   5453   1.1  christos 
   5454   1.9  christos @xref{choosing attribute names}, for guidance on selecting a suitable
   5455   1.9  christos name for new attributes.
   5456   1.9  christos 
   5457   1.1  christos In this contrived example, we want to perform some processing when
   5458   1.1  christos an objfile with a certain symbol is loaded, but we only want to do
   5459   1.1  christos this once because it is expensive.  To achieve this we record the results
   5460   1.1  christos with the program space because we can't predict when the desired objfile
   5461   1.1  christos will be loaded.
   5462   1.1  christos 
   5463   1.1  christos @smallexample
   5464   1.9  christos (@value{GDBP}) python
   5465   1.9  christos @group
   5466   1.1  christos def clear_objfiles_handler(event):
   5467   1.1  christos     event.progspace.expensive_computation = None
   5468   1.1  christos def expensive(symbol):
   5469   1.1  christos     """A mock routine to perform an "expensive" computation on symbol."""
   5470   1.8  christos     print ("Computing the answer to the ultimate question ...")
   5471   1.1  christos     return 42
   5472   1.9  christos @end group
   5473   1.9  christos @group
   5474   1.1  christos def new_objfile_handler(event):
   5475   1.1  christos     objfile = event.new_objfile
   5476   1.1  christos     progspace = objfile.progspace
   5477   1.1  christos     if not hasattr(progspace, 'expensive_computation') or \
   5478   1.1  christos             progspace.expensive_computation is None:
   5479   1.1  christos         # We use 'main' for the symbol to keep the example simple.
   5480   1.1  christos         # Note: There's no current way to constrain the lookup
   5481   1.1  christos         # to one objfile.
   5482   1.1  christos         symbol = gdb.lookup_global_symbol('main')
   5483   1.1  christos         if symbol is not None:
   5484   1.1  christos             progspace.expensive_computation = expensive(symbol)
   5485   1.1  christos gdb.events.clear_objfiles.connect(clear_objfiles_handler)
   5486   1.1  christos gdb.events.new_objfile.connect(new_objfile_handler)
   5487   1.1  christos end
   5488   1.9  christos @end group
   5489   1.9  christos @group
   5490   1.9  christos (@value{GDBP}) file /tmp/hello
   5491   1.7  christos Reading symbols from /tmp/hello...
   5492   1.1  christos Computing the answer to the ultimate question ...
   5493   1.9  christos (@value{GDBP}) python print(gdb.current_progspace().expensive_computation)
   5494   1.1  christos 42
   5495   1.9  christos (@value{GDBP}) run
   5496   1.1  christos Starting program: /tmp/hello
   5497   1.1  christos Hello.
   5498   1.1  christos [Inferior 1 (process 4242) exited normally]
   5499   1.9  christos @end group
   5500   1.1  christos @end smallexample
   5501   1.1  christos 
   5502   1.1  christos @node Objfiles In Python
   5503   1.1  christos @subsubsection Objfiles In Python
   5504   1.1  christos 
   5505   1.1  christos @cindex objfiles in python
   5506   1.1  christos @tindex gdb.Objfile
   5507   1.1  christos @tindex Objfile
   5508   1.1  christos @value{GDBN} loads symbols for an inferior from various
   5509   1.1  christos symbol-containing files (@pxref{Files}).  These include the primary
   5510   1.1  christos executable file, any shared libraries used by the inferior, and any
   5511   1.1  christos separate debug info files (@pxref{Separate Debug Files}).
   5512   1.1  christos @value{GDBN} calls these symbol-containing files @dfn{objfiles}.
   5513   1.1  christos 
   5514   1.1  christos The following objfile-related functions are available in the
   5515   1.1  christos @code{gdb} module:
   5516   1.1  christos 
   5517   1.1  christos @defun gdb.current_objfile ()
   5518   1.1  christos When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
   5519   1.1  christos sets the ``current objfile'' to the corresponding objfile.  This
   5520   1.1  christos function returns the current objfile.  If there is no current objfile,
   5521   1.1  christos this function returns @code{None}.
   5522   1.1  christos @end defun
   5523   1.1  christos 
   5524   1.1  christos @defun gdb.objfiles ()
   5525   1.6  christos Return a sequence of objfiles referenced by the current program space.
   5526   1.6  christos @xref{Objfiles In Python}, and @ref{Progspaces In Python}.  This is identical
   5527   1.6  christos to @code{gdb.selected_inferior().progspace.objfiles()} and is included for
   5528   1.6  christos historical compatibility.
   5529   1.1  christos @end defun
   5530   1.1  christos 
   5531   1.8  christos @defun gdb.lookup_objfile (name @r{[}, by_build_id@r{]})
   5532   1.1  christos Look up @var{name}, a file name or build ID, in the list of objfiles
   5533   1.1  christos for the current program space (@pxref{Progspaces In Python}).
   5534   1.1  christos If the objfile is not found throw the Python @code{ValueError} exception.
   5535   1.1  christos 
   5536   1.1  christos If @var{name} is a relative file name, then it will match any
   5537   1.1  christos source file name with the same trailing components.  For example, if
   5538   1.1  christos @var{name} is @samp{gcc/expr.c}, then it will match source file
   5539   1.1  christos name of @file{/build/trunk/gcc/expr.c}, but not
   5540   1.1  christos @file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
   5541   1.1  christos 
   5542   1.1  christos If @var{by_build_id} is provided and is @code{True} then @var{name}
   5543   1.1  christos is the build ID of the objfile.  Otherwise, @var{name} is a file name.
   5544   1.1  christos This is supported only on some operating systems, notably those which use
   5545   1.1  christos the ELF format for binary files and the @sc{gnu} Binutils.  For more details
   5546   1.1  christos about this feature, see the description of the @option{--build-id}
   5547   1.6  christos command-line option in @ref{Options, , Command Line Options, ld,
   5548   1.1  christos The GNU Linker}.
   5549   1.1  christos @end defun
   5550   1.1  christos 
   5551   1.1  christos Each objfile is represented by an instance of the @code{gdb.Objfile}
   5552   1.1  christos class.
   5553   1.1  christos 
   5554   1.1  christos @defvar Objfile.filename
   5555   1.3  christos The file name of the objfile as a string, with symbolic links resolved.
   5556   1.3  christos 
   5557   1.3  christos The value is @code{None} if the objfile is no longer valid.
   5558   1.3  christos See the @code{gdb.Objfile.is_valid} method, described below.
   5559   1.3  christos @end defvar
   5560   1.3  christos 
   5561   1.3  christos @defvar Objfile.username
   5562   1.3  christos The file name of the objfile as specified by the user as a string.
   5563   1.3  christos 
   5564   1.3  christos The value is @code{None} if the objfile is no longer valid.
   5565   1.3  christos See the @code{gdb.Objfile.is_valid} method, described below.
   5566   1.1  christos @end defvar
   5567   1.1  christos 
   5568   1.8  christos @defvar Objfile.is_file
   5569   1.8  christos An objfile often comes from an ordinary file, but in some cases it may
   5570   1.8  christos be constructed from the contents of memory.  This attribute is
   5571   1.8  christos @code{True} for file-backed objfiles, and @code{False} for other
   5572   1.8  christos kinds.
   5573   1.8  christos @end defvar
   5574   1.8  christos 
   5575   1.1  christos @defvar Objfile.owner
   5576   1.1  christos For separate debug info objfiles this is the corresponding @code{gdb.Objfile}
   5577   1.1  christos object that debug info is being provided for.
   5578   1.1  christos Otherwise this is @code{None}.
   5579   1.1  christos Separate debug info objfiles are added with the
   5580   1.1  christos @code{gdb.Objfile.add_separate_debug_file} method, described below.
   5581   1.1  christos @end defvar
   5582   1.1  christos 
   5583  1.10  christos @anchor{Objfile.build_id}
   5584   1.1  christos @defvar Objfile.build_id
   5585   1.1  christos The build ID of the objfile as a string.
   5586   1.1  christos If the objfile does not have a build ID then the value is @code{None}.
   5587   1.1  christos 
   5588   1.1  christos This is supported only on some operating systems, notably those which use
   5589   1.1  christos the ELF format for binary files and the @sc{gnu} Binutils.  For more details
   5590   1.1  christos about this feature, see the description of the @option{--build-id}
   5591   1.6  christos command-line option in @ref{Options, , Command Line Options, ld,
   5592   1.1  christos The GNU Linker}.
   5593   1.1  christos @end defvar
   5594   1.1  christos 
   5595   1.1  christos @defvar Objfile.progspace
   5596   1.1  christos The containing program space of the objfile as a @code{gdb.Progspace}
   5597   1.1  christos object.  @xref{Progspaces In Python}.
   5598   1.1  christos @end defvar
   5599   1.1  christos 
   5600   1.1  christos @defvar Objfile.pretty_printers
   5601   1.1  christos The @code{pretty_printers} attribute is a list of functions.  It is
   5602   1.1  christos used to look up pretty-printers.  A @code{Value} is passed to each
   5603   1.1  christos function in order; if the function returns @code{None}, then the
   5604   1.1  christos search continues.  Otherwise, the return value should be an object
   5605   1.1  christos which is used to format the value.  @xref{Pretty Printing API}, for more
   5606   1.1  christos information.
   5607   1.1  christos @end defvar
   5608   1.1  christos 
   5609   1.1  christos @defvar Objfile.type_printers
   5610   1.1  christos The @code{type_printers} attribute is a list of type printer objects.
   5611   1.1  christos @xref{Type Printing API}, for more information.
   5612   1.1  christos @end defvar
   5613   1.1  christos 
   5614   1.1  christos @defvar Objfile.frame_filters
   5615   1.1  christos The @code{frame_filters} attribute is a dictionary of frame filter
   5616   1.1  christos objects.  @xref{Frame Filter API}, for more information.
   5617   1.1  christos @end defvar
   5618   1.1  christos 
   5619   1.1  christos One may add arbitrary attributes to @code{gdb.Objfile} objects
   5620   1.1  christos in the usual Python way.
   5621   1.1  christos This is useful if, for example, one needs to do some extra record keeping
   5622   1.1  christos associated with the objfile.
   5623   1.1  christos 
   5624   1.9  christos @xref{choosing attribute names}, for guidance on selecting a suitable
   5625   1.9  christos name for new attributes.
   5626   1.9  christos 
   5627   1.1  christos In this contrived example we record the time when @value{GDBN}
   5628   1.1  christos loaded the objfile.
   5629   1.1  christos 
   5630   1.1  christos @smallexample
   5631   1.9  christos @group
   5632   1.9  christos (@value{GDBP}) python
   5633   1.1  christos import datetime
   5634   1.1  christos def new_objfile_handler(event):
   5635   1.1  christos     # Set the time_loaded attribute of the new objfile.
   5636   1.1  christos     event.new_objfile.time_loaded = datetime.datetime.today()
   5637   1.1  christos gdb.events.new_objfile.connect(new_objfile_handler)
   5638   1.1  christos end
   5639   1.9  christos @end group
   5640   1.9  christos @group
   5641   1.9  christos (@value{GDBP}) file ./hello
   5642   1.7  christos Reading symbols from ./hello...
   5643   1.9  christos (@value{GDBP}) python print(gdb.objfiles()[0].time_loaded)
   5644   1.1  christos 2014-10-09 11:41:36.770345
   5645   1.9  christos @end group
   5646   1.1  christos @end smallexample
   5647   1.1  christos 
   5648   1.1  christos A @code{gdb.Objfile} object has the following methods:
   5649   1.1  christos 
   5650   1.1  christos @defun Objfile.is_valid ()
   5651   1.1  christos Returns @code{True} if the @code{gdb.Objfile} object is valid,
   5652   1.1  christos @code{False} if not.  A @code{gdb.Objfile} object can become invalid
   5653   1.1  christos if the object file it refers to is not loaded in @value{GDBN} any
   5654   1.1  christos longer.  All other @code{gdb.Objfile} methods will throw an exception
   5655   1.1  christos if it is invalid at the time the method is called.
   5656   1.1  christos @end defun
   5657   1.1  christos 
   5658   1.1  christos @defun Objfile.add_separate_debug_file (file)
   5659   1.1  christos Add @var{file} to the list of files that @value{GDBN} will search for
   5660   1.1  christos debug information for the objfile.
   5661   1.1  christos This is useful when the debug info has been removed from the program
   5662   1.1  christos and stored in a separate file.  @value{GDBN} has built-in support for
   5663   1.1  christos finding separate debug info files (@pxref{Separate Debug Files}), but if
   5664   1.1  christos the file doesn't live in one of the standard places that @value{GDBN}
   5665   1.1  christos searches then this function can be used to add a debug info file
   5666   1.1  christos from a different place.
   5667   1.1  christos @end defun
   5668   1.1  christos 
   5669   1.7  christos @defun Objfile.lookup_global_symbol (name @r{[}, domain@r{]})
   5670   1.7  christos Search for a global symbol named @var{name} in this objfile.  Optionally, the
   5671   1.7  christos search scope can be restricted with the @var{domain} argument.
   5672   1.7  christos The @var{domain} argument must be a domain constant defined in the @code{gdb}
   5673   1.7  christos module and described in @ref{Symbols In Python}.  This function is similar to
   5674   1.7  christos @code{gdb.lookup_global_symbol}, except that the search is limited to this
   5675   1.7  christos objfile.
   5676   1.7  christos 
   5677   1.7  christos The result is a @code{gdb.Symbol} object or @code{None} if the symbol
   5678   1.7  christos is not found.
   5679   1.7  christos @end defun
   5680   1.7  christos 
   5681   1.7  christos @defun Objfile.lookup_static_symbol (name @r{[}, domain@r{]})
   5682   1.7  christos Like @code{Objfile.lookup_global_symbol}, but searches for a global
   5683   1.7  christos symbol with static linkage named @var{name} in this objfile.
   5684   1.7  christos @end defun
   5685   1.7  christos 
   5686   1.1  christos @node Frames In Python
   5687   1.6  christos @subsubsection Accessing inferior stack frames from Python
   5688   1.1  christos 
   5689   1.1  christos @cindex frames in python
   5690   1.1  christos When the debugged program stops, @value{GDBN} is able to analyze its call
   5691   1.1  christos stack (@pxref{Frames,,Stack frames}).  The @code{gdb.Frame} class
   5692   1.1  christos represents a frame in the stack.  A @code{gdb.Frame} object is only valid
   5693   1.1  christos while its corresponding frame exists in the inferior's stack.  If you try
   5694   1.1  christos to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
   5695   1.1  christos exception (@pxref{Exception Handling}).
   5696   1.1  christos 
   5697   1.1  christos Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
   5698   1.1  christos operator, like:
   5699   1.1  christos 
   5700   1.1  christos @smallexample
   5701   1.1  christos (@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
   5702   1.1  christos True
   5703   1.1  christos @end smallexample
   5704   1.1  christos 
   5705   1.1  christos The following frame-related functions are available in the @code{gdb} module:
   5706   1.1  christos 
   5707   1.1  christos @defun gdb.selected_frame ()
   5708   1.1  christos Return the selected frame object.  (@pxref{Selection,,Selecting a Frame}).
   5709   1.1  christos @end defun
   5710   1.1  christos 
   5711   1.1  christos @defun gdb.newest_frame ()
   5712   1.1  christos Return the newest frame object for the selected thread.
   5713   1.1  christos @end defun
   5714   1.1  christos 
   5715   1.1  christos @defun gdb.frame_stop_reason_string (reason)
   5716   1.1  christos Return a string explaining the reason why @value{GDBN} stopped unwinding
   5717   1.1  christos frames, as expressed by the given @var{reason} code (an integer, see the
   5718   1.1  christos @code{unwind_stop_reason} method further down in this section).
   5719   1.1  christos @end defun
   5720   1.1  christos 
   5721   1.4  christos @defun gdb.invalidate_cached_frames
   5722   1.4  christos @value{GDBN} internally keeps a cache of the frames that have been
   5723   1.4  christos unwound.  This function invalidates this cache.
   5724   1.4  christos 
   5725   1.4  christos This function should not generally be called by ordinary Python code.
   5726   1.4  christos It is documented for the sake of completeness.
   5727   1.4  christos @end defun
   5728   1.4  christos 
   5729   1.1  christos A @code{gdb.Frame} object has the following methods:
   5730   1.1  christos 
   5731   1.1  christos @defun Frame.is_valid ()
   5732   1.1  christos Returns true if the @code{gdb.Frame} object is valid, false if not.
   5733   1.1  christos A frame object can become invalid if the frame it refers to doesn't
   5734   1.1  christos exist anymore in the inferior.  All @code{gdb.Frame} methods will throw
   5735   1.1  christos an exception if it is invalid at the time the method is called.
   5736   1.1  christos @end defun
   5737   1.1  christos 
   5738   1.1  christos @defun Frame.name ()
   5739   1.1  christos Returns the function name of the frame, or @code{None} if it can't be
   5740   1.1  christos obtained.
   5741   1.1  christos @end defun
   5742   1.1  christos 
   5743   1.1  christos @defun Frame.architecture ()
   5744   1.1  christos Returns the @code{gdb.Architecture} object corresponding to the frame's
   5745   1.1  christos architecture.  @xref{Architectures In Python}.
   5746   1.1  christos @end defun
   5747   1.1  christos 
   5748   1.1  christos @defun Frame.type ()
   5749   1.1  christos Returns the type of the frame.  The value can be one of:
   5750   1.1  christos @table @code
   5751   1.1  christos @item gdb.NORMAL_FRAME
   5752   1.1  christos An ordinary stack frame.
   5753   1.1  christos 
   5754   1.1  christos @item gdb.DUMMY_FRAME
   5755   1.1  christos A fake stack frame that was created by @value{GDBN} when performing an
   5756   1.1  christos inferior function call.
   5757   1.1  christos 
   5758   1.1  christos @item gdb.INLINE_FRAME
   5759   1.1  christos A frame representing an inlined function.  The function was inlined
   5760   1.1  christos into a @code{gdb.NORMAL_FRAME} that is older than this one.
   5761   1.1  christos 
   5762   1.1  christos @item gdb.TAILCALL_FRAME
   5763   1.1  christos A frame representing a tail call.  @xref{Tail Call Frames}.
   5764   1.1  christos 
   5765   1.1  christos @item gdb.SIGTRAMP_FRAME
   5766   1.1  christos A signal trampoline frame.  This is the frame created by the OS when
   5767   1.1  christos it calls into a signal handler.
   5768   1.1  christos 
   5769   1.1  christos @item gdb.ARCH_FRAME
   5770   1.1  christos A fake stack frame representing a cross-architecture call.
   5771   1.1  christos 
   5772   1.1  christos @item gdb.SENTINEL_FRAME
   5773   1.1  christos This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
   5774   1.1  christos newest frame.
   5775   1.1  christos @end table
   5776   1.1  christos @end defun
   5777   1.1  christos 
   5778   1.1  christos @defun Frame.unwind_stop_reason ()
   5779   1.1  christos Return an integer representing the reason why it's not possible to find
   5780   1.1  christos more frames toward the outermost frame.  Use
   5781   1.1  christos @code{gdb.frame_stop_reason_string} to convert the value returned by this
   5782   1.1  christos function to a string. The value can be one of:
   5783   1.1  christos 
   5784   1.1  christos @table @code
   5785   1.1  christos @item gdb.FRAME_UNWIND_NO_REASON
   5786   1.1  christos No particular reason (older frames should be available).
   5787   1.1  christos 
   5788   1.1  christos @item gdb.FRAME_UNWIND_NULL_ID
   5789   1.1  christos The previous frame's analyzer returns an invalid result.  This is no
   5790   1.1  christos longer used by @value{GDBN}, and is kept only for backward
   5791   1.1  christos compatibility.
   5792   1.1  christos 
   5793   1.1  christos @item gdb.FRAME_UNWIND_OUTERMOST
   5794   1.1  christos This frame is the outermost.
   5795   1.1  christos 
   5796   1.1  christos @item gdb.FRAME_UNWIND_UNAVAILABLE
   5797   1.1  christos Cannot unwind further, because that would require knowing the 
   5798   1.1  christos values of registers or memory that have not been collected.
   5799   1.1  christos 
   5800   1.1  christos @item gdb.FRAME_UNWIND_INNER_ID
   5801   1.1  christos This frame ID looks like it ought to belong to a NEXT frame,
   5802   1.1  christos but we got it for a PREV frame.  Normally, this is a sign of
   5803   1.1  christos unwinder failure.  It could also indicate stack corruption.
   5804   1.1  christos 
   5805   1.1  christos @item gdb.FRAME_UNWIND_SAME_ID
   5806   1.1  christos This frame has the same ID as the previous one.  That means
   5807   1.1  christos that unwinding further would almost certainly give us another
   5808   1.1  christos frame with exactly the same ID, so break the chain.  Normally,
   5809   1.1  christos this is a sign of unwinder failure.  It could also indicate
   5810   1.1  christos stack corruption.
   5811   1.1  christos 
   5812   1.1  christos @item gdb.FRAME_UNWIND_NO_SAVED_PC
   5813   1.1  christos The frame unwinder did not find any saved PC, but we needed
   5814   1.1  christos one to unwind further.
   5815   1.1  christos 
   5816   1.1  christos @item gdb.FRAME_UNWIND_MEMORY_ERROR
   5817   1.1  christos The frame unwinder caused an error while trying to access memory.
   5818   1.1  christos 
   5819   1.1  christos @item gdb.FRAME_UNWIND_FIRST_ERROR
   5820   1.1  christos Any stop reason greater or equal to this value indicates some kind
   5821   1.1  christos of error.  This special value facilitates writing code that tests
   5822   1.1  christos for errors in unwinding in a way that will work correctly even if
   5823   1.1  christos the list of the other values is modified in future @value{GDBN}
   5824   1.1  christos versions.  Using it, you could write:
   5825   1.1  christos @smallexample
   5826   1.1  christos reason = gdb.selected_frame().unwind_stop_reason ()
   5827   1.1  christos reason_str =  gdb.frame_stop_reason_string (reason)
   5828   1.1  christos if reason >=  gdb.FRAME_UNWIND_FIRST_ERROR:
   5829   1.9  christos     print ("An error occurred: %s" % reason_str)
   5830   1.1  christos @end smallexample
   5831   1.1  christos @end table
   5832   1.1  christos 
   5833   1.1  christos @end defun
   5834   1.1  christos 
   5835   1.1  christos @defun Frame.pc ()
   5836   1.1  christos Returns the frame's resume address.
   5837   1.1  christos @end defun
   5838   1.1  christos 
   5839   1.1  christos @defun Frame.block ()
   5840   1.6  christos Return the frame's code block.  @xref{Blocks In Python}.  If the frame
   5841   1.6  christos does not have a block -- for example, if there is no debugging
   5842   1.6  christos information for the code in question -- then this will throw an
   5843   1.6  christos exception.
   5844   1.1  christos @end defun
   5845   1.1  christos 
   5846   1.1  christos @defun Frame.function ()
   5847   1.1  christos Return the symbol for the function corresponding to this frame.
   5848   1.1  christos @xref{Symbols In Python}.
   5849   1.1  christos @end defun
   5850   1.1  christos 
   5851   1.1  christos @defun Frame.older ()
   5852   1.9  christos Return the frame that called this frame.  If this is the oldest frame,
   5853   1.9  christos return @code{None}.
   5854   1.1  christos @end defun
   5855   1.1  christos 
   5856   1.1  christos @defun Frame.newer ()
   5857   1.9  christos Return the frame called by this frame.  If this is the newest frame,
   5858   1.9  christos return @code{None}.
   5859   1.1  christos @end defun
   5860   1.1  christos 
   5861   1.1  christos @defun Frame.find_sal ()
   5862   1.1  christos Return the frame's symtab and line object.
   5863   1.1  christos @xref{Symbol Tables In Python}.
   5864   1.1  christos @end defun
   5865   1.1  christos 
   5866   1.7  christos @anchor{gdbpy_frame_read_register}
   5867   1.1  christos @defun Frame.read_register (register)
   5868   1.7  christos Return the value of @var{register} in this frame.  Returns a
   5869   1.7  christos @code{Gdb.Value} object.  Throws an exception if @var{register} does
   5870   1.7  christos not exist.  The @var{register} argument must be one of the following:
   5871   1.7  christos @enumerate
   5872   1.7  christos @item
   5873   1.7  christos A string that is the name of a valid register (e.g., @code{'sp'} or
   5874   1.7  christos @code{'rax'}).
   5875   1.7  christos @item
   5876   1.7  christos A @code{gdb.RegisterDescriptor} object (@pxref{Registers In Python}).
   5877   1.7  christos @item
   5878   1.7  christos A @value{GDBN} internal, platform specific number.  Using these
   5879   1.7  christos numbers is supported for historic reasons, but is not recommended as
   5880   1.7  christos future changes to @value{GDBN} could change the mapping between
   5881   1.7  christos numbers and the registers they represent, breaking any Python code
   5882   1.7  christos that uses the platform-specific numbers.  The numbers are usually
   5883   1.7  christos found in the corresponding @file{@var{platform}-tdep.h} file in the
   5884   1.7  christos @value{GDBN} source tree.
   5885   1.7  christos @end enumerate
   5886   1.7  christos Using a string to access registers will be slightly slower than the
   5887   1.7  christos other two methods as @value{GDBN} must look up the mapping between
   5888   1.7  christos name and internal register number.  If performance is critical
   5889   1.7  christos consider looking up and caching a @code{gdb.RegisterDescriptor}
   5890   1.7  christos object.
   5891   1.1  christos @end defun
   5892   1.1  christos 
   5893   1.1  christos @defun Frame.read_var (variable @r{[}, block@r{]})
   5894   1.1  christos Return the value of @var{variable} in this frame.  If the optional
   5895   1.1  christos argument @var{block} is provided, search for the variable from that
   5896   1.1  christos block; otherwise start at the frame's current block (which is
   5897   1.1  christos determined by the frame's current program counter).  The @var{variable}
   5898   1.1  christos argument must be a string or a @code{gdb.Symbol} object; @var{block} must be a
   5899   1.1  christos @code{gdb.Block} object.
   5900   1.1  christos @end defun
   5901   1.1  christos 
   5902   1.1  christos @defun Frame.select ()
   5903   1.1  christos Set this frame to be the selected frame.  @xref{Stack, ,Examining the
   5904   1.1  christos Stack}.
   5905   1.1  christos @end defun
   5906   1.1  christos 
   5907   1.9  christos @defun Frame.static_link ()
   5908   1.9  christos In some languages (e.g., Ada, but also a GNU C extension), a nested
   5909   1.9  christos function can access the variables in the outer scope.  This is done
   5910   1.9  christos via a ``static link'', which is a reference from the nested frame to
   5911   1.9  christos the appropriate outer frame.
   5912   1.9  christos 
   5913   1.9  christos This method returns this frame's static link frame, if one exists.  If
   5914   1.9  christos there is no static link, this method returns @code{None}.
   5915   1.9  christos @end defun
   5916   1.9  christos 
   5917   1.8  christos @defun Frame.level ()
   5918   1.8  christos Return an integer, the stack frame level for this frame.  @xref{Frames, ,Stack Frames}.
   5919   1.8  christos @end defun
   5920   1.8  christos 
   5921   1.8  christos @defun Frame.language ()
   5922   1.8  christos Return a string, the source language for this frame.
   5923   1.8  christos @end defun
   5924   1.8  christos 
   5925   1.1  christos @node Blocks In Python
   5926   1.6  christos @subsubsection Accessing blocks from Python
   5927   1.1  christos 
   5928   1.1  christos @cindex blocks in python
   5929   1.1  christos @tindex gdb.Block
   5930   1.1  christos 
   5931   1.1  christos In @value{GDBN}, symbols are stored in blocks.  A block corresponds
   5932   1.1  christos roughly to a scope in the source code.  Blocks are organized
   5933   1.1  christos hierarchically, and are represented individually in Python as a
   5934   1.1  christos @code{gdb.Block}.  Blocks rely on debugging information being
   5935   1.1  christos available.
   5936   1.1  christos 
   5937   1.1  christos A frame has a block.  Please see @ref{Frames In Python}, for a more
   5938   1.1  christos in-depth discussion of frames.
   5939   1.1  christos 
   5940   1.1  christos The outermost block is known as the @dfn{global block}.  The global
   5941   1.1  christos block typically holds public global variables and functions.
   5942   1.1  christos 
   5943   1.1  christos The block nested just inside the global block is the @dfn{static
   5944   1.1  christos block}.  The static block typically holds file-scoped variables and
   5945   1.1  christos functions.
   5946   1.1  christos 
   5947   1.1  christos @value{GDBN} provides a method to get a block's superblock, but there
   5948   1.1  christos is currently no way to examine the sub-blocks of a block, or to
   5949   1.1  christos iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
   5950   1.1  christos Python}).
   5951   1.1  christos 
   5952   1.1  christos Here is a short example that should help explain blocks:
   5953   1.1  christos 
   5954   1.1  christos @smallexample
   5955   1.1  christos /* This is in the global block.  */
   5956   1.1  christos int global;
   5957   1.1  christos 
   5958   1.1  christos /* This is in the static block.  */
   5959   1.1  christos static int file_scope;
   5960   1.1  christos 
   5961   1.1  christos /* 'function' is in the global block, and 'argument' is
   5962   1.1  christos    in a block nested inside of 'function'.  */
   5963   1.1  christos int function (int argument)
   5964   1.1  christos @{
   5965   1.1  christos   /* 'local' is in a block inside 'function'.  It may or may
   5966   1.1  christos      not be in the same block as 'argument'.  */
   5967   1.1  christos   int local;
   5968   1.1  christos 
   5969   1.1  christos   @{
   5970   1.1  christos      /* 'inner' is in a block whose superblock is the one holding
   5971   1.1  christos         'local'.  */
   5972   1.1  christos      int inner;
   5973   1.1  christos 
   5974   1.1  christos      /* If this call is expanded by the compiler, you may see
   5975   1.1  christos         a nested block here whose function is 'inline_function'
   5976   1.1  christos         and whose superblock is the one holding 'inner'.  */
   5977   1.1  christos      inline_function ();
   5978   1.1  christos   @}
   5979   1.1  christos @}
   5980   1.1  christos @end smallexample
   5981   1.1  christos 
   5982   1.1  christos A @code{gdb.Block} is iterable.  The iterator returns the symbols
   5983   1.1  christos (@pxref{Symbols In Python}) local to the block.  Python programs
   5984   1.1  christos should not assume that a specific block object will always contain a
   5985   1.1  christos given symbol, since changes in @value{GDBN} features and
   5986   1.1  christos infrastructure may cause symbols move across blocks in a symbol
   5987   1.7  christos table.  You can also use Python's @dfn{dictionary syntax} to access
   5988   1.7  christos variables in this block, e.g.:
   5989   1.7  christos 
   5990   1.7  christos @smallexample
   5991   1.7  christos symbol = some_block['variable']  # symbol is of type gdb.Symbol
   5992   1.7  christos @end smallexample
   5993   1.1  christos 
   5994   1.1  christos The following block-related functions are available in the @code{gdb}
   5995   1.1  christos module:
   5996   1.1  christos 
   5997   1.1  christos @defun gdb.block_for_pc (pc)
   5998   1.1  christos Return the innermost @code{gdb.Block} containing the given @var{pc}
   5999   1.1  christos value.  If the block cannot be found for the @var{pc} value specified,
   6000   1.6  christos the function will return @code{None}.  This is identical to
   6001   1.6  christos @code{gdb.current_progspace().block_for_pc(pc)} and is included for
   6002   1.6  christos historical compatibility.
   6003   1.1  christos @end defun
   6004   1.1  christos 
   6005   1.1  christos A @code{gdb.Block} object has the following methods:
   6006   1.1  christos 
   6007   1.1  christos @defun Block.is_valid ()
   6008   1.1  christos Returns @code{True} if the @code{gdb.Block} object is valid,
   6009   1.1  christos @code{False} if not.  A block object can become invalid if the block it
   6010   1.1  christos refers to doesn't exist anymore in the inferior.  All other
   6011   1.1  christos @code{gdb.Block} methods will throw an exception if it is invalid at
   6012   1.1  christos the time the method is called.  The block's validity is also checked
   6013   1.1  christos during iteration over symbols of the block.
   6014   1.1  christos @end defun
   6015   1.1  christos 
   6016   1.1  christos A @code{gdb.Block} object has the following attributes:
   6017   1.1  christos 
   6018   1.1  christos @defvar Block.start
   6019   1.1  christos The start address of the block.  This attribute is not writable.
   6020   1.1  christos @end defvar
   6021   1.1  christos 
   6022   1.1  christos @defvar Block.end
   6023   1.6  christos One past the last address that appears in the block.  This attribute
   6024   1.6  christos is not writable.
   6025   1.1  christos @end defvar
   6026   1.1  christos 
   6027   1.1  christos @defvar Block.function
   6028   1.1  christos The name of the block represented as a @code{gdb.Symbol}.  If the
   6029   1.1  christos block is not named, then this attribute holds @code{None}.  This
   6030   1.1  christos attribute is not writable.
   6031   1.1  christos 
   6032   1.1  christos For ordinary function blocks, the superblock is the static block.
   6033   1.1  christos However, you should note that it is possible for a function block to
   6034   1.1  christos have a superblock that is not the static block -- for instance this
   6035   1.1  christos happens for an inlined function.
   6036   1.1  christos @end defvar
   6037   1.1  christos 
   6038   1.1  christos @defvar Block.superblock
   6039   1.1  christos The block containing this block.  If this parent block does not exist,
   6040   1.1  christos this attribute holds @code{None}.  This attribute is not writable.
   6041   1.1  christos @end defvar
   6042   1.1  christos 
   6043   1.1  christos @defvar Block.global_block
   6044   1.1  christos The global block associated with this block.  This attribute is not
   6045   1.1  christos writable.
   6046   1.1  christos @end defvar
   6047   1.1  christos 
   6048   1.1  christos @defvar Block.static_block
   6049   1.1  christos The static block associated with this block.  This attribute is not
   6050   1.1  christos writable.
   6051   1.1  christos @end defvar
   6052   1.1  christos 
   6053   1.1  christos @defvar Block.is_global
   6054   1.1  christos @code{True} if the @code{gdb.Block} object is a global block,
   6055   1.1  christos @code{False} if not.  This attribute is not
   6056   1.1  christos writable.
   6057   1.1  christos @end defvar
   6058   1.1  christos 
   6059   1.1  christos @defvar Block.is_static
   6060   1.1  christos @code{True} if the @code{gdb.Block} object is a static block,
   6061   1.1  christos @code{False} if not.  This attribute is not writable.
   6062   1.1  christos @end defvar
   6063   1.1  christos 
   6064   1.1  christos @node Symbols In Python
   6065   1.6  christos @subsubsection Python representation of Symbols
   6066   1.1  christos 
   6067   1.1  christos @cindex symbols in python
   6068   1.1  christos @tindex gdb.Symbol
   6069   1.1  christos 
   6070   1.1  christos @value{GDBN} represents every variable, function and type as an
   6071   1.1  christos entry in a symbol table.  @xref{Symbols, ,Examining the Symbol Table}.
   6072   1.1  christos Similarly, Python represents these symbols in @value{GDBN} with the
   6073   1.1  christos @code{gdb.Symbol} object.
   6074   1.1  christos 
   6075   1.1  christos The following symbol-related functions are available in the @code{gdb}
   6076   1.1  christos module:
   6077   1.1  christos 
   6078   1.1  christos @defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
   6079   1.1  christos This function searches for a symbol by name.  The search scope can be
   6080   1.1  christos restricted to the parameters defined in the optional domain and block
   6081   1.1  christos arguments.
   6082   1.1  christos 
   6083   1.1  christos @var{name} is the name of the symbol.  It must be a string.  The
   6084   1.1  christos optional @var{block} argument restricts the search to symbols visible
   6085   1.1  christos in that @var{block}.  The @var{block} argument must be a
   6086   1.1  christos @code{gdb.Block} object.  If omitted, the block for the current frame
   6087   1.1  christos is used.  The optional @var{domain} argument restricts
   6088   1.1  christos the search to the domain type.  The @var{domain} argument must be a
   6089   1.1  christos domain constant defined in the @code{gdb} module and described later
   6090   1.1  christos in this chapter.
   6091   1.1  christos 
   6092   1.1  christos The result is a tuple of two elements.
   6093   1.1  christos The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
   6094   1.1  christos is not found.
   6095   1.1  christos If the symbol is found, the second element is @code{True} if the symbol
   6096   1.1  christos is a field of a method's object (e.g., @code{this} in C@t{++}),
   6097   1.1  christos otherwise it is @code{False}.
   6098   1.1  christos If the symbol is not found, the second element is @code{False}.
   6099   1.1  christos @end defun
   6100   1.1  christos 
   6101   1.1  christos @defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
   6102   1.1  christos This function searches for a global symbol by name.
   6103   1.1  christos The search scope can be restricted to by the domain argument.
   6104   1.1  christos 
   6105   1.1  christos @var{name} is the name of the symbol.  It must be a string.
   6106   1.1  christos The optional @var{domain} argument restricts the search to the domain type.
   6107   1.1  christos The @var{domain} argument must be a domain constant defined in the @code{gdb}
   6108   1.1  christos module and described later in this chapter.
   6109   1.1  christos 
   6110   1.1  christos The result is a @code{gdb.Symbol} object or @code{None} if the symbol
   6111   1.1  christos is not found.
   6112   1.1  christos @end defun
   6113   1.1  christos 
   6114   1.7  christos @defun gdb.lookup_static_symbol (name @r{[}, domain@r{]})
   6115   1.7  christos This function searches for a global symbol with static linkage by name.
   6116   1.7  christos The search scope can be restricted to by the domain argument.
   6117   1.7  christos 
   6118   1.7  christos @var{name} is the name of the symbol.  It must be a string.
   6119   1.7  christos The optional @var{domain} argument restricts the search to the domain type.
   6120   1.7  christos The @var{domain} argument must be a domain constant defined in the @code{gdb}
   6121   1.7  christos module and described later in this chapter.
   6122   1.7  christos 
   6123   1.7  christos The result is a @code{gdb.Symbol} object or @code{None} if the symbol
   6124   1.7  christos is not found.
   6125   1.7  christos 
   6126   1.7  christos Note that this function will not find function-scoped static variables. To look
   6127   1.7  christos up such variables, iterate over the variables of the function's
   6128   1.7  christos @code{gdb.Block} and check that @code{block.addr_class} is
   6129   1.7  christos @code{gdb.SYMBOL_LOC_STATIC}.
   6130   1.7  christos 
   6131   1.7  christos There can be multiple global symbols with static linkage with the same
   6132   1.7  christos name.  This function will only return the first matching symbol that
   6133   1.7  christos it finds.  Which symbol is found depends on where @value{GDBN} is
   6134   1.7  christos currently stopped, as @value{GDBN} will first search for matching
   6135   1.7  christos symbols in the current object file, and then search all other object
   6136   1.7  christos files.  If the application is not yet running then @value{GDBN} will
   6137   1.7  christos search all object files in the order they appear in the debug
   6138   1.7  christos information.
   6139   1.7  christos @end defun
   6140   1.7  christos 
   6141   1.7  christos @defun gdb.lookup_static_symbols (name @r{[}, domain@r{]})
   6142   1.7  christos Similar to @code{gdb.lookup_static_symbol}, this function searches for
   6143   1.7  christos global symbols with static linkage by name, and optionally restricted
   6144   1.7  christos by the domain argument.  However, this function returns a list of all
   6145   1.7  christos matching symbols found, not just the first one.
   6146   1.7  christos 
   6147   1.7  christos @var{name} is the name of the symbol.  It must be a string.
   6148   1.7  christos The optional @var{domain} argument restricts the search to the domain type.
   6149   1.7  christos The @var{domain} argument must be a domain constant defined in the @code{gdb}
   6150   1.7  christos module and described later in this chapter.
   6151   1.7  christos 
   6152   1.7  christos The result is a list of @code{gdb.Symbol} objects which could be empty
   6153   1.7  christos if no matching symbols were found.
   6154   1.7  christos 
   6155   1.7  christos Note that this function will not find function-scoped static variables. To look
   6156   1.7  christos up such variables, iterate over the variables of the function's
   6157   1.7  christos @code{gdb.Block} and check that @code{block.addr_class} is
   6158   1.7  christos @code{gdb.SYMBOL_LOC_STATIC}.
   6159   1.7  christos @end defun
   6160   1.7  christos 
   6161   1.1  christos A @code{gdb.Symbol} object has the following attributes:
   6162   1.1  christos 
   6163   1.1  christos @defvar Symbol.type
   6164   1.1  christos The type of the symbol or @code{None} if no type is recorded.
   6165   1.1  christos This attribute is represented as a @code{gdb.Type} object.
   6166   1.1  christos @xref{Types In Python}.  This attribute is not writable.
   6167   1.1  christos @end defvar
   6168   1.1  christos 
   6169   1.1  christos @defvar Symbol.symtab
   6170   1.1  christos The symbol table in which the symbol appears.  This attribute is
   6171   1.1  christos represented as a @code{gdb.Symtab} object.  @xref{Symbol Tables In
   6172   1.1  christos Python}.  This attribute is not writable.
   6173   1.1  christos @end defvar
   6174   1.1  christos 
   6175   1.1  christos @defvar Symbol.line
   6176   1.1  christos The line number in the source code at which the symbol was defined.
   6177   1.1  christos This is an integer.
   6178   1.1  christos @end defvar
   6179   1.1  christos 
   6180   1.1  christos @defvar Symbol.name
   6181   1.1  christos The name of the symbol as a string.  This attribute is not writable.
   6182   1.1  christos @end defvar
   6183   1.1  christos 
   6184   1.1  christos @defvar Symbol.linkage_name
   6185   1.1  christos The name of the symbol, as used by the linker (i.e., may be mangled).
   6186   1.1  christos This attribute is not writable.
   6187   1.1  christos @end defvar
   6188   1.1  christos 
   6189   1.1  christos @defvar Symbol.print_name
   6190   1.1  christos The name of the symbol in a form suitable for output.  This is either
   6191   1.1  christos @code{name} or @code{linkage_name}, depending on whether the user
   6192   1.1  christos asked @value{GDBN} to display demangled or mangled names.
   6193   1.1  christos @end defvar
   6194   1.1  christos 
   6195   1.1  christos @defvar Symbol.addr_class
   6196   1.1  christos The address class of the symbol.  This classifies how to find the value
   6197   1.1  christos of a symbol.  Each address class is a constant defined in the
   6198   1.1  christos @code{gdb} module and described later in this chapter.
   6199   1.1  christos @end defvar
   6200   1.1  christos 
   6201   1.1  christos @defvar Symbol.needs_frame
   6202   1.1  christos This is @code{True} if evaluating this symbol's value requires a frame
   6203   1.1  christos (@pxref{Frames In Python}) and @code{False} otherwise.  Typically,
   6204   1.1  christos local variables will require a frame, but other symbols will not.
   6205   1.1  christos @end defvar
   6206   1.1  christos 
   6207   1.1  christos @defvar Symbol.is_argument
   6208   1.1  christos @code{True} if the symbol is an argument of a function.
   6209   1.1  christos @end defvar
   6210   1.1  christos 
   6211  1.10  christos @defvar Symbol.is_artificial
   6212  1.10  christos @code{True} if the symbol is artificial.  An artificial symbol is one
   6213  1.10  christos that is introduced by the compiler.
   6214  1.10  christos @end defvar
   6215  1.10  christos 
   6216   1.1  christos @defvar Symbol.is_constant
   6217   1.1  christos @code{True} if the symbol is a constant.
   6218   1.1  christos @end defvar
   6219   1.1  christos 
   6220   1.1  christos @defvar Symbol.is_function
   6221   1.1  christos @code{True} if the symbol is a function or a method.
   6222   1.1  christos @end defvar
   6223   1.1  christos 
   6224   1.1  christos @defvar Symbol.is_variable
   6225   1.9  christos @code{True} if the symbol is a variable, as opposed to something like
   6226   1.9  christos a function or type.  Note that this also returns @code{False} for
   6227   1.9  christos arguments.
   6228   1.1  christos @end defvar
   6229   1.1  christos 
   6230   1.1  christos A @code{gdb.Symbol} object has the following methods:
   6231   1.1  christos 
   6232   1.1  christos @defun Symbol.is_valid ()
   6233   1.1  christos Returns @code{True} if the @code{gdb.Symbol} object is valid,
   6234   1.1  christos @code{False} if not.  A @code{gdb.Symbol} object can become invalid if
   6235   1.1  christos the symbol it refers to does not exist in @value{GDBN} any longer.
   6236   1.1  christos All other @code{gdb.Symbol} methods will throw an exception if it is
   6237   1.1  christos invalid at the time the method is called.
   6238   1.1  christos @end defun
   6239   1.1  christos 
   6240   1.1  christos @defun Symbol.value (@r{[}frame@r{]})
   6241   1.1  christos Compute the value of the symbol, as a @code{gdb.Value}.  For
   6242   1.1  christos functions, this computes the address of the function, cast to the
   6243   1.1  christos appropriate type.  If the symbol requires a frame in order to compute
   6244   1.1  christos its value, then @var{frame} must be given.  If @var{frame} is not
   6245   1.1  christos given, or if @var{frame} is invalid, then this method will throw an
   6246   1.1  christos exception.
   6247   1.1  christos @end defun
   6248   1.1  christos 
   6249   1.1  christos The available domain categories in @code{gdb.Symbol} are represented
   6250   1.1  christos as constants in the @code{gdb} module:
   6251   1.1  christos 
   6252   1.1  christos @vtable @code
   6253   1.1  christos @vindex SYMBOL_UNDEF_DOMAIN
   6254   1.1  christos @item gdb.SYMBOL_UNDEF_DOMAIN
   6255   1.1  christos This is used when a domain has not been discovered or none of the
   6256   1.1  christos following domains apply.  This usually indicates an error either
   6257   1.1  christos in the symbol information or in @value{GDBN}'s handling of symbols.
   6258   1.1  christos 
   6259   1.1  christos @vindex SYMBOL_VAR_DOMAIN
   6260   1.1  christos @item gdb.SYMBOL_VAR_DOMAIN
   6261   1.9  christos This domain contains variables.
   6262   1.9  christos 
   6263   1.9  christos @vindex SYMBOL_FUNCTION_DOMAIN
   6264   1.9  christos @item gdb.SYMBOL_FUNCTION_DOMAIN
   6265   1.9  christos This domain contains functions.
   6266   1.9  christos 
   6267   1.9  christos @vindex SYMBOL_TYPE_DOMAIN
   6268   1.9  christos @item gdb.SYMBOL_TYPE_DOMAIN
   6269   1.9  christos This domain contains types.  In a C-like language, types using a tag
   6270   1.9  christos (the name appearing after a @code{struct}, @code{union}, or
   6271   1.9  christos @code{enum} keyword) will not appear here; in other languages, all
   6272   1.9  christos types are in this domain.
   6273   1.1  christos 
   6274   1.1  christos @vindex SYMBOL_STRUCT_DOMAIN
   6275   1.1  christos @item gdb.SYMBOL_STRUCT_DOMAIN
   6276   1.9  christos This domain holds struct, union and enum tag names.  This domain is
   6277   1.9  christos only used for C-like languages.  For example, in this code:
   6278   1.9  christos @smallexample
   6279   1.9  christos struct type_one @{ int x; @};
   6280   1.9  christos typedef struct type_one type_two;
   6281   1.9  christos @end smallexample
   6282   1.9  christos Here @code{type_one} will be in @code{SYMBOL_STRUCT_DOMAIN}, but
   6283   1.9  christos @code{type_two} will be in @code{SYMBOL_TYPE_DOMAIN}.
   6284   1.1  christos 
   6285   1.1  christos @vindex SYMBOL_LABEL_DOMAIN
   6286   1.1  christos @item gdb.SYMBOL_LABEL_DOMAIN
   6287   1.1  christos This domain contains names of labels (for gotos).
   6288   1.1  christos 
   6289   1.6  christos @vindex SYMBOL_MODULE_DOMAIN
   6290   1.6  christos @item gdb.SYMBOL_MODULE_DOMAIN
   6291   1.6  christos This domain contains names of Fortran module types.
   6292   1.6  christos 
   6293   1.6  christos @vindex SYMBOL_COMMON_BLOCK_DOMAIN
   6294   1.6  christos @item gdb.SYMBOL_COMMON_BLOCK_DOMAIN
   6295   1.6  christos This domain contains names of Fortran common blocks.
   6296   1.1  christos @end vtable
   6297   1.1  christos 
   6298   1.9  christos When searching for a symbol, the desired domain constant can be passed
   6299   1.9  christos verbatim to the lookup function.  For example:
   6300   1.9  christos @smallexample
   6301   1.9  christos symbol = gdb.lookup_symbol ("name", domain=gdb.SYMBOL_VAR_DOMAIN)
   6302   1.9  christos @end smallexample
   6303   1.9  christos 
   6304   1.9  christos For more complex searches, there is a corresponding set of constants,
   6305   1.9  christos each named after one of the preceding constants, but with the
   6306   1.9  christos @samp{SEARCH} prefix replacing the @samp{SYMBOL} prefix; for example,
   6307   1.9  christos @code{SEARCH_LABEL_DOMAIN}.  These may be or'd together to form a
   6308   1.9  christos search constant, e.g.:
   6309   1.9  christos @smallexample
   6310   1.9  christos symbol = gdb.lookup_symbol ("name",
   6311   1.9  christos                             domain=gdb.SEARCH_VAR_DOMAIN | gdb.SEARCH_TYPE_DOMAIN)
   6312   1.9  christos @end smallexample
   6313   1.9  christos 
   6314   1.1  christos The available address class categories in @code{gdb.Symbol} are represented
   6315   1.1  christos as constants in the @code{gdb} module:
   6316   1.1  christos 
   6317   1.1  christos @vtable @code
   6318   1.1  christos @vindex SYMBOL_LOC_UNDEF
   6319   1.1  christos @item gdb.SYMBOL_LOC_UNDEF
   6320   1.1  christos If this is returned by address class, it indicates an error either in
   6321   1.1  christos the symbol information or in @value{GDBN}'s handling of symbols.
   6322   1.1  christos 
   6323   1.1  christos @vindex SYMBOL_LOC_CONST
   6324   1.1  christos @item gdb.SYMBOL_LOC_CONST
   6325   1.1  christos Value is constant int.
   6326   1.1  christos 
   6327   1.1  christos @vindex SYMBOL_LOC_STATIC
   6328   1.1  christos @item gdb.SYMBOL_LOC_STATIC
   6329   1.1  christos Value is at a fixed address.
   6330   1.1  christos 
   6331   1.1  christos @vindex SYMBOL_LOC_REGISTER
   6332   1.1  christos @item gdb.SYMBOL_LOC_REGISTER
   6333   1.1  christos Value is in a register.
   6334   1.1  christos 
   6335   1.1  christos @vindex SYMBOL_LOC_ARG
   6336   1.1  christos @item gdb.SYMBOL_LOC_ARG
   6337   1.1  christos Value is an argument.  This value is at the offset stored within the
   6338   1.1  christos symbol inside the frame's argument list.
   6339   1.1  christos 
   6340   1.1  christos @vindex SYMBOL_LOC_REF_ARG
   6341   1.1  christos @item gdb.SYMBOL_LOC_REF_ARG
   6342   1.1  christos Value address is stored in the frame's argument list.  Just like
   6343   1.1  christos @code{LOC_ARG} except that the value's address is stored at the
   6344   1.1  christos offset, not the value itself.
   6345   1.1  christos 
   6346   1.1  christos @vindex SYMBOL_LOC_REGPARM_ADDR
   6347   1.1  christos @item gdb.SYMBOL_LOC_REGPARM_ADDR
   6348   1.1  christos Value is a specified register.  Just like @code{LOC_REGISTER} except
   6349   1.1  christos the register holds the address of the argument instead of the argument
   6350   1.1  christos itself.
   6351   1.1  christos 
   6352   1.1  christos @vindex SYMBOL_LOC_LOCAL
   6353   1.1  christos @item gdb.SYMBOL_LOC_LOCAL
   6354   1.1  christos Value is a local variable.
   6355   1.1  christos 
   6356   1.1  christos @vindex SYMBOL_LOC_TYPEDEF
   6357   1.1  christos @item gdb.SYMBOL_LOC_TYPEDEF
   6358   1.1  christos Value not used.  Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
   6359   1.1  christos have this class.
   6360   1.1  christos 
   6361   1.8  christos @vindex SYMBOL_LOC_LABEL
   6362   1.8  christos @item gdb.SYMBOL_LOC_LABEL
   6363   1.8  christos Value is a label.
   6364   1.8  christos 
   6365   1.1  christos @vindex SYMBOL_LOC_BLOCK
   6366   1.1  christos @item gdb.SYMBOL_LOC_BLOCK
   6367   1.1  christos Value is a block.
   6368   1.1  christos 
   6369   1.1  christos @vindex SYMBOL_LOC_CONST_BYTES
   6370   1.1  christos @item gdb.SYMBOL_LOC_CONST_BYTES
   6371   1.1  christos Value is a byte-sequence.
   6372   1.1  christos 
   6373   1.1  christos @vindex SYMBOL_LOC_UNRESOLVED
   6374   1.1  christos @item gdb.SYMBOL_LOC_UNRESOLVED
   6375   1.1  christos Value is at a fixed address, but the address of the variable has to be
   6376   1.1  christos determined from the minimal symbol table whenever the variable is
   6377   1.1  christos referenced.
   6378   1.1  christos 
   6379   1.1  christos @vindex SYMBOL_LOC_OPTIMIZED_OUT
   6380   1.1  christos @item gdb.SYMBOL_LOC_OPTIMIZED_OUT
   6381   1.1  christos The value does not actually exist in the program.
   6382   1.1  christos 
   6383   1.1  christos @vindex SYMBOL_LOC_COMPUTED
   6384   1.1  christos @item gdb.SYMBOL_LOC_COMPUTED
   6385   1.1  christos The value's address is a computed location.
   6386   1.6  christos 
   6387   1.8  christos @vindex SYMBOL_LOC_COMMON_BLOCK
   6388   1.8  christos @item gdb.SYMBOL_LOC_COMMON_BLOCK
   6389   1.6  christos The value's address is a symbol.  This is only used for Fortran common
   6390   1.6  christos blocks.
   6391   1.1  christos @end vtable
   6392   1.1  christos 
   6393   1.1  christos @node Symbol Tables In Python
   6394   1.6  christos @subsubsection Symbol table representation in Python
   6395   1.1  christos 
   6396   1.1  christos @cindex symbol tables in python
   6397   1.1  christos @tindex gdb.Symtab
   6398   1.1  christos @tindex gdb.Symtab_and_line
   6399   1.1  christos 
   6400   1.1  christos Access to symbol table data maintained by @value{GDBN} on the inferior
   6401   1.1  christos is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
   6402   1.1  christos @code{gdb.Symtab}.  Symbol table and line data for a frame is returned
   6403   1.1  christos from the @code{find_sal} method in @code{gdb.Frame} object.
   6404   1.1  christos @xref{Frames In Python}.
   6405   1.1  christos 
   6406   1.1  christos For more information on @value{GDBN}'s symbol table management, see
   6407   1.1  christos @ref{Symbols, ,Examining the Symbol Table}, for more information.
   6408   1.1  christos 
   6409   1.1  christos A @code{gdb.Symtab_and_line} object has the following attributes:
   6410   1.1  christos 
   6411   1.1  christos @defvar Symtab_and_line.symtab
   6412   1.1  christos The symbol table object (@code{gdb.Symtab}) for this frame.
   6413   1.1  christos This attribute is not writable.
   6414   1.1  christos @end defvar
   6415   1.1  christos 
   6416   1.1  christos @defvar Symtab_and_line.pc
   6417   1.1  christos Indicates the start of the address range occupied by code for the
   6418   1.1  christos current source line.  This attribute is not writable.
   6419   1.1  christos @end defvar
   6420   1.1  christos 
   6421   1.1  christos @defvar Symtab_and_line.last
   6422   1.1  christos Indicates the end of the address range occupied by code for the current
   6423   1.1  christos source line.  This attribute is not writable.
   6424   1.1  christos @end defvar
   6425   1.1  christos 
   6426   1.1  christos @defvar Symtab_and_line.line
   6427   1.1  christos Indicates the current line number for this object.  This
   6428   1.1  christos attribute is not writable.
   6429   1.1  christos @end defvar
   6430   1.1  christos 
   6431   1.1  christos A @code{gdb.Symtab_and_line} object has the following methods:
   6432   1.1  christos 
   6433   1.1  christos @defun Symtab_and_line.is_valid ()
   6434   1.1  christos Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
   6435   1.1  christos @code{False} if not.  A @code{gdb.Symtab_and_line} object can become
   6436   1.1  christos invalid if the Symbol table and line object it refers to does not
   6437   1.1  christos exist in @value{GDBN} any longer.  All other
   6438   1.1  christos @code{gdb.Symtab_and_line} methods will throw an exception if it is
   6439   1.1  christos invalid at the time the method is called.
   6440   1.1  christos @end defun
   6441   1.1  christos 
   6442   1.1  christos A @code{gdb.Symtab} object has the following attributes:
   6443   1.1  christos 
   6444   1.1  christos @defvar Symtab.filename
   6445   1.1  christos The symbol table's source filename.  This attribute is not writable.
   6446   1.1  christos @end defvar
   6447   1.1  christos 
   6448   1.1  christos @defvar Symtab.objfile
   6449   1.1  christos The symbol table's backing object file.  @xref{Objfiles In Python}.
   6450   1.1  christos This attribute is not writable.
   6451   1.1  christos @end defvar
   6452   1.1  christos 
   6453   1.1  christos @defvar Symtab.producer
   6454   1.1  christos The name and possibly version number of the program that
   6455   1.1  christos compiled the code in the symbol table.
   6456   1.1  christos The contents of this string is up to the compiler.
   6457   1.1  christos If no producer information is available then @code{None} is returned.
   6458   1.1  christos This attribute is not writable.
   6459   1.1  christos @end defvar
   6460   1.1  christos 
   6461   1.1  christos A @code{gdb.Symtab} object has the following methods:
   6462   1.1  christos 
   6463   1.1  christos @defun Symtab.is_valid ()
   6464   1.1  christos Returns @code{True} if the @code{gdb.Symtab} object is valid,
   6465   1.1  christos @code{False} if not.  A @code{gdb.Symtab} object can become invalid if
   6466   1.1  christos the symbol table it refers to does not exist in @value{GDBN} any
   6467   1.1  christos longer.  All other @code{gdb.Symtab} methods will throw an exception
   6468   1.1  christos if it is invalid at the time the method is called.
   6469   1.1  christos @end defun
   6470   1.1  christos 
   6471   1.1  christos @defun Symtab.fullname ()
   6472   1.1  christos Return the symbol table's source absolute file name.
   6473   1.1  christos @end defun
   6474   1.1  christos 
   6475   1.1  christos @defun Symtab.global_block ()
   6476   1.1  christos Return the global block of the underlying symbol table.
   6477   1.1  christos @xref{Blocks In Python}.
   6478   1.1  christos @end defun
   6479   1.1  christos 
   6480   1.1  christos @defun Symtab.static_block ()
   6481   1.1  christos Return the static block of the underlying symbol table.
   6482   1.1  christos @xref{Blocks In Python}.
   6483   1.1  christos @end defun
   6484   1.1  christos 
   6485   1.1  christos @defun Symtab.linetable ()
   6486   1.1  christos Return the line table associated with the symbol table.
   6487   1.1  christos @xref{Line Tables In Python}.
   6488   1.1  christos @end defun
   6489   1.1  christos 
   6490   1.1  christos @node Line Tables In Python
   6491   1.1  christos @subsubsection Manipulating line tables using Python
   6492   1.1  christos 
   6493   1.1  christos @cindex line tables in python
   6494   1.1  christos @tindex gdb.LineTable
   6495   1.1  christos 
   6496   1.1  christos Python code can request and inspect line table information from a
   6497   1.1  christos symbol table that is loaded in @value{GDBN}.  A line table is a
   6498   1.1  christos mapping of source lines to their executable locations in memory.  To
   6499   1.1  christos acquire the line table information for a particular symbol table, use
   6500   1.1  christos the @code{linetable} function (@pxref{Symbol Tables In Python}).
   6501   1.1  christos 
   6502   1.1  christos A @code{gdb.LineTable} is iterable.  The iterator returns
   6503   1.1  christos @code{LineTableEntry} objects that correspond to the source line and
   6504   1.1  christos address for each line table entry.  @code{LineTableEntry} objects have
   6505   1.1  christos the following attributes:
   6506   1.1  christos 
   6507   1.1  christos @defvar LineTableEntry.line
   6508   1.1  christos The source line number for this line table entry.  This number
   6509   1.1  christos corresponds to the actual line of source.  This attribute is not
   6510   1.1  christos writable.
   6511   1.1  christos @end defvar
   6512   1.1  christos 
   6513   1.1  christos @defvar LineTableEntry.pc
   6514   1.1  christos The address that is associated with the line table entry where the
   6515   1.1  christos executable code for that source line resides in memory.  This
   6516   1.1  christos attribute is not writable.
   6517   1.1  christos @end defvar
   6518   1.1  christos 
   6519   1.1  christos As there can be multiple addresses for a single source line, you may
   6520   1.1  christos receive multiple @code{LineTableEntry} objects with matching
   6521   1.1  christos @code{line} attributes, but with different @code{pc} attributes.  The
   6522   1.1  christos iterator is sorted in ascending @code{pc} order.  Here is a small
   6523   1.1  christos example illustrating iterating over a line table.
   6524   1.1  christos 
   6525   1.1  christos @smallexample
   6526   1.1  christos symtab = gdb.selected_frame().find_sal().symtab
   6527   1.1  christos linetable = symtab.linetable()
   6528   1.1  christos for line in linetable:
   6529   1.8  christos    print ("Line: "+str(line.line)+" Address: "+hex(line.pc))
   6530   1.1  christos @end smallexample
   6531   1.1  christos 
   6532   1.1  christos This will have the following output:
   6533   1.1  christos 
   6534   1.1  christos @smallexample
   6535   1.1  christos Line: 33 Address: 0x4005c8L
   6536   1.1  christos Line: 37 Address: 0x4005caL
   6537   1.1  christos Line: 39 Address: 0x4005d2L
   6538   1.1  christos Line: 40 Address: 0x4005f8L
   6539   1.1  christos Line: 42 Address: 0x4005ffL
   6540   1.1  christos Line: 44 Address: 0x400608L
   6541   1.1  christos Line: 42 Address: 0x40060cL
   6542   1.1  christos Line: 45 Address: 0x400615L
   6543   1.1  christos @end smallexample
   6544   1.1  christos 
   6545   1.1  christos In addition to being able to iterate over a @code{LineTable}, it also
   6546   1.1  christos has the following direct access methods:
   6547   1.1  christos 
   6548   1.1  christos @defun LineTable.line (line)
   6549   1.1  christos Return a Python @code{Tuple} of @code{LineTableEntry} objects for any
   6550   1.1  christos entries in the line table for the given @var{line}, which specifies
   6551   1.1  christos the source code line.  If there are no entries for that source code
   6552   1.1  christos @var{line}, the Python @code{None} is returned.
   6553   1.1  christos @end defun
   6554   1.1  christos 
   6555   1.1  christos @defun LineTable.has_line (line)
   6556   1.1  christos Return a Python @code{Boolean} indicating whether there is an entry in
   6557   1.1  christos the line table for this source line.  Return @code{True} if an entry
   6558   1.1  christos is found, or @code{False} if not.
   6559   1.1  christos @end defun
   6560   1.1  christos 
   6561   1.1  christos @defun LineTable.source_lines ()
   6562   1.1  christos Return a Python @code{List} of the source line numbers in the symbol
   6563   1.1  christos table.  Only lines with executable code locations are returned.  The
   6564   1.1  christos contents of the @code{List} will just be the source line entries
   6565   1.1  christos represented as Python @code{Long} values.
   6566   1.1  christos @end defun
   6567   1.1  christos 
   6568   1.1  christos @node Breakpoints In Python
   6569   1.1  christos @subsubsection Manipulating breakpoints using Python
   6570   1.1  christos 
   6571   1.1  christos @cindex breakpoints in python
   6572   1.1  christos @tindex gdb.Breakpoint
   6573   1.1  christos 
   6574   1.1  christos Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
   6575   1.1  christos class.
   6576   1.1  christos 
   6577   1.6  christos A breakpoint can be created using one of the two forms of the
   6578   1.6  christos @code{gdb.Breakpoint} constructor.  The first one accepts a string
   6579   1.6  christos like one would pass to the @code{break}
   6580   1.6  christos (@pxref{Set Breaks,,Setting Breakpoints}) and @code{watch}
   6581   1.6  christos (@pxref{Set Watchpoints, , Setting Watchpoints}) commands, and can be used to
   6582   1.6  christos create both breakpoints and watchpoints.  The second accepts separate Python
   6583   1.6  christos arguments similar to @ref{Explicit Locations}, and can only be used to create
   6584   1.6  christos breakpoints.
   6585   1.6  christos 
   6586   1.6  christos @defun Breakpoint.__init__ (spec @r{[}, type @r{][}, wp_class @r{][}, internal @r{][}, temporary @r{][}, qualified @r{]})
   6587   1.6  christos Create a new breakpoint according to @var{spec}, which is a string naming the
   6588   1.6  christos location of a breakpoint, or an expression that defines a watchpoint.  The
   6589   1.6  christos string should describe a location in a format recognized by the @code{break}
   6590   1.6  christos command (@pxref{Set Breaks,,Setting Breakpoints}) or, in the case of a
   6591   1.6  christos watchpoint, by the @code{watch} command
   6592   1.6  christos (@pxref{Set Watchpoints, , Setting Watchpoints}).
   6593   1.6  christos 
   6594   1.6  christos The optional @var{type} argument specifies the type of the breakpoint to create,
   6595   1.6  christos as defined below.
   6596   1.6  christos 
   6597   1.6  christos The optional @var{wp_class} argument defines the class of watchpoint to create,
   6598   1.6  christos if @var{type} is @code{gdb.BP_WATCHPOINT}.  If @var{wp_class} is omitted, it
   6599   1.6  christos defaults to @code{gdb.WP_WRITE}.
   6600   1.6  christos 
   6601   1.6  christos The optional @var{internal} argument allows the breakpoint to become invisible
   6602   1.6  christos to the user.  The breakpoint will neither be reported when created, nor will it
   6603   1.6  christos be listed in the output from @code{info breakpoints} (but will be listed with
   6604   1.6  christos the @code{maint info breakpoints} command).
   6605   1.6  christos 
   6606   1.6  christos The optional @var{temporary} argument makes the breakpoint a temporary
   6607   1.6  christos breakpoint.  Temporary breakpoints are deleted after they have been hit.  Any
   6608   1.6  christos further access to the Python breakpoint after it has been hit will result in a
   6609   1.6  christos runtime error (as that breakpoint has now been automatically deleted).
   6610   1.6  christos 
   6611   1.6  christos The optional @var{qualified} argument is a boolean that allows interpreting
   6612   1.6  christos the function passed in @code{spec} as a fully-qualified name.  It is equivalent
   6613   1.6  christos to @code{break}'s @code{-qualified} flag (@pxref{Linespec Locations} and
   6614   1.6  christos @ref{Explicit Locations}).
   6615   1.6  christos 
   6616   1.6  christos @end defun
   6617   1.6  christos 
   6618   1.6  christos @defun Breakpoint.__init__ (@r{[} source @r{][}, function @r{][}, label @r{][}, line @r{]}, @r{][} internal @r{][}, temporary @r{][}, qualified @r{]})
   6619   1.6  christos This second form of creating a new breakpoint specifies the explicit
   6620   1.6  christos location (@pxref{Explicit Locations}) using keywords.  The new breakpoint will
   6621   1.6  christos be created in the specified source file @var{source}, at the specified
   6622   1.6  christos @var{function}, @var{label} and @var{line}.
   6623   1.6  christos 
   6624   1.6  christos @var{internal}, @var{temporary} and @var{qualified} have the same usage as
   6625   1.6  christos explained previously.
   6626   1.1  christos @end defun
   6627   1.1  christos 
   6628   1.4  christos The available types are represented by constants defined in the @code{gdb}
   6629   1.4  christos module:
   6630   1.4  christos 
   6631   1.4  christos @vtable @code
   6632   1.4  christos @vindex BP_BREAKPOINT
   6633   1.4  christos @item gdb.BP_BREAKPOINT
   6634   1.4  christos Normal code breakpoint.
   6635   1.4  christos 
   6636   1.8  christos @vindex BP_HARDWARE_BREAKPOINT
   6637   1.8  christos @item gdb.BP_HARDWARE_BREAKPOINT
   6638   1.8  christos Hardware assisted code breakpoint.
   6639   1.8  christos 
   6640   1.4  christos @vindex BP_WATCHPOINT
   6641   1.4  christos @item gdb.BP_WATCHPOINT
   6642   1.4  christos Watchpoint breakpoint.
   6643   1.4  christos 
   6644   1.4  christos @vindex BP_HARDWARE_WATCHPOINT
   6645   1.4  christos @item gdb.BP_HARDWARE_WATCHPOINT
   6646   1.4  christos Hardware assisted watchpoint.
   6647   1.4  christos 
   6648   1.4  christos @vindex BP_READ_WATCHPOINT
   6649   1.4  christos @item gdb.BP_READ_WATCHPOINT
   6650   1.4  christos Hardware assisted read watchpoint.
   6651   1.4  christos 
   6652   1.4  christos @vindex BP_ACCESS_WATCHPOINT
   6653   1.4  christos @item gdb.BP_ACCESS_WATCHPOINT
   6654   1.4  christos Hardware assisted access watchpoint.
   6655   1.8  christos 
   6656   1.8  christos @vindex BP_CATCHPOINT
   6657   1.8  christos @item gdb.BP_CATCHPOINT
   6658   1.8  christos Catchpoint.  Currently, this type can't be used when creating
   6659   1.8  christos @code{gdb.Breakpoint} objects, but will be present in
   6660   1.8  christos @code{gdb.Breakpoint} objects reported from
   6661   1.8  christos @code{gdb.BreakpointEvent}s (@pxref{Events In Python}).
   6662   1.4  christos @end vtable
   6663   1.4  christos 
   6664   1.8  christos The available watchpoint types are represented by constants defined in the
   6665   1.4  christos @code{gdb} module:
   6666   1.4  christos 
   6667   1.4  christos @vtable @code
   6668   1.4  christos @vindex WP_READ
   6669   1.4  christos @item gdb.WP_READ
   6670   1.4  christos Read only watchpoint.
   6671   1.4  christos 
   6672   1.4  christos @vindex WP_WRITE
   6673   1.4  christos @item gdb.WP_WRITE
   6674   1.4  christos Write only watchpoint.
   6675   1.4  christos 
   6676   1.4  christos @vindex WP_ACCESS
   6677   1.4  christos @item gdb.WP_ACCESS
   6678   1.4  christos Read/Write watchpoint.
   6679   1.4  christos @end vtable
   6680   1.4  christos 
   6681   1.1  christos @defun Breakpoint.stop (self)
   6682   1.1  christos The @code{gdb.Breakpoint} class can be sub-classed and, in
   6683   1.1  christos particular, you may choose to implement the @code{stop} method.
   6684   1.1  christos If this method is defined in a sub-class of @code{gdb.Breakpoint},
   6685   1.1  christos it will be called when the inferior reaches any location of a
   6686   1.1  christos breakpoint which instantiates that sub-class.  If the method returns
   6687   1.1  christos @code{True}, the inferior will be stopped at the location of the
   6688   1.1  christos breakpoint, otherwise the inferior will continue.
   6689   1.1  christos 
   6690   1.1  christos If there are multiple breakpoints at the same location with a
   6691   1.1  christos @code{stop} method, each one will be called regardless of the
   6692   1.1  christos return status of the previous.  This ensures that all @code{stop}
   6693   1.1  christos methods have a chance to execute at that location.  In this scenario
   6694   1.1  christos if one of the methods returns @code{True} but the others return
   6695   1.1  christos @code{False}, the inferior will still be stopped.
   6696   1.1  christos 
   6697   1.1  christos You should not alter the execution state of the inferior (i.e.@:, step,
   6698   1.1  christos next, etc.), alter the current frame context (i.e.@:, change the current
   6699   1.1  christos active frame), or alter, add or delete any breakpoint.  As a general
   6700   1.1  christos rule, you should not alter any data within @value{GDBN} or the inferior
   6701   1.1  christos at this time.
   6702   1.1  christos 
   6703   1.1  christos Example @code{stop} implementation:
   6704   1.1  christos 
   6705   1.1  christos @smallexample
   6706   1.1  christos class MyBreakpoint (gdb.Breakpoint):
   6707   1.1  christos       def stop (self):
   6708   1.1  christos         inf_val = gdb.parse_and_eval("foo")
   6709   1.1  christos         if inf_val == 3:
   6710   1.1  christos           return True
   6711   1.1  christos         return False
   6712   1.1  christos @end smallexample
   6713   1.1  christos @end defun
   6714   1.1  christos 
   6715   1.1  christos @defun Breakpoint.is_valid ()
   6716   1.1  christos Return @code{True} if this @code{Breakpoint} object is valid,
   6717   1.1  christos @code{False} otherwise.  A @code{Breakpoint} object can become invalid
   6718   1.1  christos if the user deletes the breakpoint.  In this case, the object still
   6719   1.1  christos exists, but the underlying breakpoint does not.  In the cases of
   6720   1.1  christos watchpoint scope, the watchpoint remains valid even if execution of the
   6721   1.1  christos inferior leaves the scope of that watchpoint.
   6722   1.1  christos @end defun
   6723   1.1  christos 
   6724   1.1  christos @defun Breakpoint.delete ()
   6725   1.1  christos Permanently deletes the @value{GDBN} breakpoint.  This also
   6726   1.1  christos invalidates the Python @code{Breakpoint} object.  Any further access
   6727   1.1  christos to this object's attributes or methods will raise an error.
   6728   1.1  christos @end defun
   6729   1.1  christos 
   6730   1.1  christos @defvar Breakpoint.enabled
   6731   1.1  christos This attribute is @code{True} if the breakpoint is enabled, and
   6732   1.1  christos @code{False} otherwise.  This attribute is writable.  You can use it to enable
   6733   1.1  christos or disable the breakpoint.
   6734   1.1  christos @end defvar
   6735   1.1  christos 
   6736   1.1  christos @defvar Breakpoint.silent
   6737   1.1  christos This attribute is @code{True} if the breakpoint is silent, and
   6738   1.1  christos @code{False} otherwise.  This attribute is writable.
   6739   1.1  christos 
   6740   1.1  christos Note that a breakpoint can also be silent if it has commands and the
   6741   1.1  christos first command is @code{silent}.  This is not reported by the
   6742   1.1  christos @code{silent} attribute.
   6743   1.1  christos @end defvar
   6744   1.1  christos 
   6745   1.4  christos @defvar Breakpoint.pending
   6746   1.4  christos This attribute is @code{True} if the breakpoint is pending, and
   6747   1.4  christos @code{False} otherwise.  @xref{Set Breaks}.  This attribute is
   6748   1.4  christos read-only.
   6749   1.4  christos @end defvar
   6750   1.4  christos 
   6751   1.4  christos @anchor{python_breakpoint_thread}
   6752   1.1  christos @defvar Breakpoint.thread
   6753   1.9  christos If the breakpoint is thread-specific (@pxref{Thread-Specific
   6754   1.9  christos Breakpoints}), this attribute holds the thread's global id.  If the
   6755   1.9  christos breakpoint is not thread-specific, this attribute is @code{None}.
   6756   1.9  christos This attribute is writable.
   6757   1.9  christos 
   6758   1.9  christos Only one of @code{Breakpoint.thread} or @code{Breakpoint.inferior} can
   6759   1.9  christos be set to a valid id at any time, that is, a breakpoint can be thread
   6760   1.9  christos specific, or inferior specific, but not both.
   6761   1.9  christos @end defvar
   6762   1.9  christos 
   6763   1.9  christos @anchor{python_breakpoint_inferior}
   6764   1.9  christos @defvar Breakpoint.inferior
   6765   1.9  christos If the breakpoint is inferior-specific (@pxref{Inferior-Specific
   6766   1.9  christos Breakpoints}), this attribute holds the inferior's id.  If the
   6767   1.9  christos breakpoint is not inferior-specific, this attribute is @code{None}.
   6768   1.9  christos 
   6769   1.9  christos This attribute can be written for breakpoints of type
   6770   1.9  christos @code{gdb.BP_BREAKPOINT} and @code{gdb.BP_HARDWARE_BREAKPOINT}.
   6771   1.1  christos @end defvar
   6772   1.1  christos 
   6773   1.1  christos @defvar Breakpoint.task
   6774   1.1  christos If the breakpoint is Ada task-specific, this attribute holds the Ada task
   6775   1.1  christos id.  If the breakpoint is not task-specific (or the underlying
   6776   1.1  christos language is not Ada), this attribute is @code{None}.  This attribute
   6777   1.1  christos is writable.
   6778   1.1  christos @end defvar
   6779   1.1  christos 
   6780   1.1  christos @defvar Breakpoint.ignore_count
   6781   1.1  christos This attribute holds the ignore count for the breakpoint, an integer.
   6782   1.1  christos This attribute is writable.
   6783   1.1  christos @end defvar
   6784   1.1  christos 
   6785   1.1  christos @defvar Breakpoint.number
   6786   1.1  christos This attribute holds the breakpoint's number --- the identifier used by
   6787   1.1  christos the user to manipulate the breakpoint.  This attribute is not writable.
   6788   1.1  christos @end defvar
   6789   1.1  christos 
   6790   1.1  christos @defvar Breakpoint.type
   6791   1.1  christos This attribute holds the breakpoint's type --- the identifier used to
   6792   1.1  christos determine the actual breakpoint type or use-case.  This attribute is not
   6793   1.1  christos writable.
   6794   1.1  christos @end defvar
   6795   1.1  christos 
   6796   1.1  christos @defvar Breakpoint.visible
   6797   1.1  christos This attribute tells whether the breakpoint is visible to the user
   6798   1.1  christos when set, or when the @samp{info breakpoints} command is run.  This
   6799   1.1  christos attribute is not writable.
   6800   1.1  christos @end defvar
   6801   1.1  christos 
   6802   1.1  christos @defvar Breakpoint.temporary
   6803   1.1  christos This attribute indicates whether the breakpoint was created as a
   6804   1.1  christos temporary breakpoint.  Temporary breakpoints are automatically deleted
   6805   1.1  christos after that breakpoint has been hit.  Access to this attribute, and all
   6806   1.1  christos other attributes and functions other than the @code{is_valid}
   6807   1.1  christos function, will result in an error after the breakpoint has been hit
   6808   1.1  christos (as it has been automatically deleted).  This attribute is not
   6809   1.1  christos writable.
   6810   1.1  christos @end defvar
   6811   1.1  christos 
   6812   1.1  christos @defvar Breakpoint.hit_count
   6813   1.1  christos This attribute holds the hit count for the breakpoint, an integer.
   6814   1.1  christos This attribute is writable, but currently it can only be set to zero.
   6815   1.1  christos @end defvar
   6816   1.1  christos 
   6817   1.1  christos @defvar Breakpoint.location
   6818   1.1  christos This attribute holds the location of the breakpoint, as specified by
   6819   1.1  christos the user.  It is a string.  If the breakpoint does not have a location
   6820   1.1  christos (that is, it is a watchpoint) the attribute's value is @code{None}.  This
   6821   1.1  christos attribute is not writable.
   6822   1.1  christos @end defvar
   6823   1.1  christos 
   6824   1.8  christos @defvar Breakpoint.locations
   6825   1.8  christos Get the most current list of breakpoint locations that are inserted for this
   6826   1.8  christos breakpoint, with elements of type @code{gdb.BreakpointLocation}
   6827   1.8  christos (described below).  This functionality matches that of the
   6828   1.8  christos @code{info breakpoint} command (@pxref{Set Breaks}), in that it only retrieves
   6829   1.8  christos the most current list of locations, thus the list itself when returned is
   6830   1.8  christos not updated behind the scenes.  This attribute is not writable.
   6831   1.8  christos @end defvar
   6832   1.8  christos 
   6833   1.1  christos @defvar Breakpoint.expression
   6834   1.1  christos This attribute holds a breakpoint expression, as specified by
   6835   1.1  christos the user.  It is a string.  If the breakpoint does not have an
   6836   1.1  christos expression (the breakpoint is not a watchpoint) the attribute's value
   6837   1.1  christos is @code{None}.  This attribute is not writable.
   6838   1.1  christos @end defvar
   6839   1.1  christos 
   6840   1.1  christos @defvar Breakpoint.condition
   6841   1.1  christos This attribute holds the condition of the breakpoint, as specified by
   6842   1.1  christos the user.  It is a string.  If there is no condition, this attribute's
   6843   1.1  christos value is @code{None}.  This attribute is writable.
   6844   1.1  christos @end defvar
   6845   1.1  christos 
   6846   1.1  christos @defvar Breakpoint.commands
   6847   1.1  christos This attribute holds the commands attached to the breakpoint.  If
   6848   1.1  christos there are commands, this attribute's value is a string holding all the
   6849   1.1  christos commands, separated by newlines.  If there are no commands, this
   6850   1.6  christos attribute is @code{None}.  This attribute is writable.
   6851   1.1  christos @end defvar
   6852   1.1  christos 
   6853   1.8  christos @subheading Breakpoint Locations
   6854   1.8  christos 
   6855   1.8  christos A breakpoint location is one of the actual places where a breakpoint has been
   6856   1.8  christos set, represented in the Python API by the @code{gdb.BreakpointLocation}
   6857   1.8  christos type.  This type is never instantiated by the user directly, but is retrieved
   6858   1.8  christos from @code{Breakpoint.locations} which returns a list of breakpoint
   6859   1.8  christos locations where it is currently set.  Breakpoint locations can become
   6860   1.8  christos invalid if new symbol files are loaded or dynamically loaded libraries are
   6861   1.8  christos closed.  Accessing the attributes of an invalidated breakpoint location will
   6862   1.8  christos throw a @code{RuntimeError} exception.  Access the @code{Breakpoint.locations}
   6863   1.8  christos attribute again to retrieve the new and valid breakpoints location list.
   6864   1.8  christos 
   6865   1.8  christos @defvar BreakpointLocation.source
   6866   1.8  christos This attribute returns the source file path and line number where this location
   6867   1.8  christos was set. The type of the attribute is a tuple of @var{string} and
   6868   1.8  christos @var{long}.  If the breakpoint location doesn't have a source location,
   6869   1.8  christos it returns None, which is the case for watchpoints and catchpoints.
   6870   1.8  christos This will throw a @code{RuntimeError} exception if the location
   6871   1.8  christos has been invalidated. This attribute is not writable.
   6872   1.8  christos @end defvar
   6873   1.8  christos 
   6874   1.8  christos @defvar BreakpointLocation.address
   6875   1.8  christos This attribute returns the address where this location was set.
   6876   1.8  christos This attribute is of type long.  This will throw a @code{RuntimeError}
   6877   1.8  christos exception if the location has been invalidated.  This attribute is
   6878   1.8  christos not writable.
   6879   1.8  christos @end defvar
   6880   1.8  christos 
   6881   1.8  christos @defvar BreakpointLocation.enabled
   6882   1.8  christos This attribute holds the value for whether or not this location is enabled.
   6883   1.8  christos This attribute is writable (boolean).  This will throw a @code{RuntimeError}
   6884   1.8  christos exception if the location has been invalidated.
   6885   1.8  christos @end defvar
   6886   1.8  christos 
   6887   1.8  christos @defvar BreakpointLocation.owner
   6888   1.8  christos This attribute holds a reference to the @code{gdb.Breakpoint} owner object,
   6889   1.8  christos from which this @code{gdb.BreakpointLocation} was retrieved from.
   6890   1.8  christos This will throw a @code{RuntimeError} exception if the location has been
   6891   1.8  christos invalidated.  This attribute is not writable.
   6892   1.8  christos @end defvar
   6893   1.8  christos 
   6894   1.8  christos @defvar BreakpointLocation.function
   6895   1.8  christos This attribute gets the name of the function where this location was set.
   6896   1.8  christos If no function could be found this attribute returns @code{None}.
   6897   1.8  christos This will throw a @code{RuntimeError} exception if the location has
   6898   1.8  christos been invalidated.  This attribute is not writable.
   6899   1.8  christos @end defvar
   6900   1.8  christos 
   6901   1.8  christos @defvar BreakpointLocation.fullname
   6902   1.8  christos This attribute gets the full name of where this location was set.  If no
   6903   1.8  christos full name could be found, this attribute returns @code{None}.
   6904   1.8  christos This will throw a @code{RuntimeError} exception if the location has
   6905   1.8  christos been invalidated.  This attribute is not writable.
   6906   1.8  christos @end defvar
   6907   1.8  christos 
   6908   1.8  christos @defvar BreakpointLocation.thread_groups
   6909   1.8  christos This attribute gets the thread groups it was set in.  It returns a @code{List}
   6910   1.8  christos of the thread group ID's.  This will throw a @code{RuntimeError}
   6911   1.8  christos exception if the location has been invalidated.  This attribute
   6912   1.8  christos is not writable.
   6913   1.8  christos @end defvar
   6914   1.8  christos 
   6915   1.1  christos @node Finish Breakpoints in Python
   6916   1.1  christos @subsubsection Finish Breakpoints
   6917   1.1  christos 
   6918   1.1  christos @cindex python finish breakpoints
   6919   1.1  christos @tindex gdb.FinishBreakpoint
   6920   1.1  christos 
   6921   1.1  christos A finish breakpoint is a temporary breakpoint set at the return address of
   6922   1.1  christos a frame, based on the @code{finish} command.  @code{gdb.FinishBreakpoint}
   6923   1.1  christos extends @code{gdb.Breakpoint}.  The underlying breakpoint will be disabled 
   6924   1.1  christos and deleted when the execution will run out of the breakpoint scope (i.e.@: 
   6925   1.1  christos @code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
   6926   1.1  christos Finish breakpoints are thread specific and must be create with the right 
   6927   1.1  christos thread selected.  
   6928   1.1  christos  
   6929   1.1  christos @defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
   6930   1.1  christos Create a finish breakpoint at the return address of the @code{gdb.Frame}
   6931   1.1  christos object @var{frame}.  If @var{frame} is not provided, this defaults to the
   6932   1.1  christos newest frame.  The optional @var{internal} argument allows the breakpoint to
   6933   1.1  christos become invisible to the user.  @xref{Breakpoints In Python}, for further 
   6934   1.1  christos details about this argument.
   6935   1.1  christos @end defun
   6936   1.1  christos 
   6937   1.1  christos @defun FinishBreakpoint.out_of_scope (self)
   6938   1.1  christos In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN} 
   6939   1.1  christos @code{return} command, @dots{}), a function may not properly terminate, and
   6940   1.1  christos thus never hit the finish breakpoint.  When @value{GDBN} notices such a
   6941   1.1  christos situation, the @code{out_of_scope} callback will be triggered.
   6942   1.1  christos 
   6943   1.1  christos You may want to sub-class @code{gdb.FinishBreakpoint} and override this
   6944   1.1  christos method:
   6945   1.1  christos 
   6946   1.1  christos @smallexample
   6947   1.1  christos class MyFinishBreakpoint (gdb.FinishBreakpoint)
   6948   1.1  christos     def stop (self):
   6949   1.8  christos         print ("normal finish")
   6950   1.1  christos         return True
   6951   1.1  christos     
   6952   1.1  christos     def out_of_scope ():
   6953   1.8  christos         print ("abnormal finish")
   6954   1.1  christos @end smallexample 
   6955   1.1  christos @end defun
   6956   1.1  christos 
   6957   1.1  christos @defvar FinishBreakpoint.return_value
   6958   1.1  christos When @value{GDBN} is stopped at a finish breakpoint and the frame 
   6959   1.1  christos used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
   6960   1.1  christos attribute will contain a @code{gdb.Value} object corresponding to the return
   6961   1.1  christos value of the function.  The value will be @code{None} if the function return 
   6962   1.1  christos type is @code{void} or if the return value was not computable.  This attribute
   6963   1.1  christos is not writable.
   6964   1.1  christos @end defvar
   6965   1.1  christos 
   6966   1.1  christos @node Lazy Strings In Python
   6967   1.6  christos @subsubsection Python representation of lazy strings
   6968   1.1  christos 
   6969   1.1  christos @cindex lazy strings in python
   6970   1.1  christos @tindex gdb.LazyString
   6971   1.1  christos 
   6972   1.1  christos A @dfn{lazy string} is a string whose contents is not retrieved or
   6973   1.1  christos encoded until it is needed.
   6974   1.1  christos 
   6975   1.1  christos A @code{gdb.LazyString} is represented in @value{GDBN} as an
   6976   1.1  christos @code{address} that points to a region of memory, an @code{encoding}
   6977   1.1  christos that will be used to encode that region of memory, and a @code{length}
   6978   1.1  christos to delimit the region of memory that represents the string.  The
   6979   1.1  christos difference between a @code{gdb.LazyString} and a string wrapped within
   6980  1.10  christos a @code{gdb.Value} is that a @code{gdb.LazyString} will only be
   6981   1.1  christos retrieved and encoded during printing, while a @code{gdb.Value}
   6982   1.1  christos wrapping a string is immediately retrieved and encoded on creation.
   6983   1.1  christos 
   6984  1.10  christos A @code{gdb.LazyString} can be created using the
   6985  1.10  christos @code{gdb.Value.lazy_string} method (@pxref{Values From Inferior}).
   6986  1.10  christos 
   6987   1.1  christos A @code{gdb.LazyString} object has the following functions:
   6988   1.1  christos 
   6989   1.1  christos @defun LazyString.value ()
   6990   1.1  christos Convert the @code{gdb.LazyString} to a @code{gdb.Value}.  This value
   6991   1.1  christos will point to the string in memory, but will lose all the delayed
   6992   1.1  christos retrieval, encoding and handling that @value{GDBN} applies to a
   6993   1.1  christos @code{gdb.LazyString}.
   6994   1.1  christos @end defun
   6995   1.1  christos 
   6996   1.1  christos @defvar LazyString.address
   6997   1.1  christos This attribute holds the address of the string.  This attribute is not
   6998   1.1  christos writable.
   6999   1.1  christos @end defvar
   7000   1.1  christos 
   7001   1.1  christos @defvar LazyString.length
   7002   1.1  christos This attribute holds the length of the string in characters.  If the
   7003   1.1  christos length is -1, then the string will be fetched and encoded up to the
   7004   1.1  christos first null of appropriate width.  This attribute is not writable.
   7005   1.1  christos @end defvar
   7006   1.1  christos 
   7007   1.1  christos @defvar LazyString.encoding
   7008   1.1  christos This attribute holds the encoding that will be applied to the string
   7009   1.1  christos when the string is printed by @value{GDBN}.  If the encoding is not
   7010   1.1  christos set, or contains an empty string,  then @value{GDBN} will select the
   7011   1.1  christos most appropriate encoding when the string is printed.  This attribute
   7012   1.1  christos is not writable.
   7013   1.1  christos @end defvar
   7014   1.1  christos 
   7015   1.1  christos @defvar LazyString.type
   7016   1.1  christos This attribute holds the type that is represented by the lazy string's
   7017   1.5  christos type.  For a lazy string this is a pointer or array type.  To
   7018   1.1  christos resolve this to the lazy string's character type, use the type's
   7019   1.1  christos @code{target} method.  @xref{Types In Python}.  This attribute is not
   7020   1.1  christos writable.
   7021   1.1  christos @end defvar
   7022   1.1  christos 
   7023   1.1  christos @node Architectures In Python
   7024   1.1  christos @subsubsection Python representation of architectures
   7025   1.1  christos @cindex Python architectures
   7026   1.1  christos 
   7027   1.1  christos @value{GDBN} uses architecture specific parameters and artifacts in a
   7028   1.1  christos number of its various computations.  An architecture is represented
   7029   1.1  christos by an instance of the @code{gdb.Architecture} class.
   7030   1.1  christos 
   7031   1.1  christos A @code{gdb.Architecture} class has the following methods:
   7032   1.1  christos 
   7033   1.8  christos @anchor{gdbpy_architecture_name}
   7034   1.1  christos @defun Architecture.name ()
   7035   1.1  christos Return the name (string value) of the architecture.
   7036   1.1  christos @end defun
   7037   1.1  christos 
   7038   1.9  christos @defun Architecture.disassemble (start_pc @r{[}, end_pc @r{[}, count@r{]]})
   7039   1.1  christos Return a list of disassembled instructions starting from the memory
   7040   1.1  christos address @var{start_pc}.  The optional arguments @var{end_pc} and
   7041   1.1  christos @var{count} determine the number of instructions in the returned list.
   7042   1.1  christos If both the optional arguments @var{end_pc} and @var{count} are
   7043   1.1  christos specified, then a list of at most @var{count} disassembled instructions
   7044   1.1  christos whose start address falls in the closed memory address interval from
   7045   1.1  christos @var{start_pc} to @var{end_pc} are returned.  If @var{end_pc} is not
   7046   1.1  christos specified, but @var{count} is specified, then @var{count} number of
   7047   1.1  christos instructions starting from the address @var{start_pc} are returned.  If
   7048   1.1  christos @var{count} is not specified but @var{end_pc} is specified, then all
   7049   1.1  christos instructions whose start address falls in the closed memory address
   7050   1.1  christos interval from @var{start_pc} to @var{end_pc} are returned.  If neither
   7051   1.1  christos @var{end_pc} nor @var{count} are specified, then a single instruction at
   7052   1.1  christos @var{start_pc} is returned.  For all of these cases, each element of the
   7053   1.1  christos returned list is a Python @code{dict} with the following string keys:
   7054   1.1  christos 
   7055   1.1  christos @table @code
   7056   1.1  christos 
   7057   1.1  christos @item addr
   7058   1.1  christos The value corresponding to this key is a Python long integer capturing
   7059   1.1  christos the memory address of the instruction.
   7060   1.1  christos 
   7061   1.1  christos @item asm
   7062   1.1  christos The value corresponding to this key is a string value which represents
   7063   1.1  christos the instruction with assembly language mnemonics.  The assembly
   7064   1.1  christos language flavor used is the same as that specified by the current CLI
   7065   1.1  christos variable @code{disassembly-flavor}.  @xref{Machine Code}.
   7066   1.1  christos 
   7067   1.1  christos @item length
   7068   1.1  christos The value corresponding to this key is the length (integer value) of the
   7069   1.1  christos instruction in bytes.
   7070   1.1  christos 
   7071   1.1  christos @end table
   7072   1.1  christos @end defun
   7073   1.1  christos 
   7074   1.8  christos @defun Architecture.integer_type (size @r{[}, signed@r{]})
   7075   1.8  christos This function looks up an integer type by its @var{size}, and
   7076   1.8  christos optionally whether or not it is signed.
   7077   1.8  christos 
   7078   1.8  christos @var{size} is the size, in bits, of the desired integer type.  Only
   7079   1.8  christos certain sizes are currently supported: 0, 8, 16, 24, 32, 64, and 128.
   7080   1.8  christos 
   7081   1.8  christos If @var{signed} is not specified, it defaults to @code{True}.  If
   7082   1.8  christos @var{signed} is @code{False}, the returned type will be unsigned.
   7083   1.8  christos 
   7084   1.8  christos If the indicated type cannot be found, this function will throw a
   7085   1.8  christos @code{ValueError} exception.
   7086   1.8  christos @end defun
   7087   1.8  christos 
   7088   1.7  christos @anchor{gdbpy_architecture_registers}
   7089   1.9  christos @defun Architecture.registers (@r{[} reggroup @r{]})
   7090   1.7  christos Return a @code{gdb.RegisterDescriptorIterator} (@pxref{Registers In
   7091   1.7  christos Python}) for all of the registers in @var{reggroup}, a string that is
   7092   1.7  christos the name of a register group.  If @var{reggroup} is omitted, or is the
   7093   1.7  christos empty string, then the register group @samp{all} is assumed.
   7094   1.7  christos @end defun
   7095   1.7  christos 
   7096   1.7  christos @anchor{gdbpy_architecture_reggroups}
   7097   1.7  christos @defun Architecture.register_groups ()
   7098   1.7  christos Return a @code{gdb.RegisterGroupsIterator} (@pxref{Registers In
   7099   1.7  christos Python}) for all of the register groups available for the
   7100   1.7  christos @code{gdb.Architecture}.
   7101   1.7  christos @end defun
   7102   1.7  christos 
   7103   1.7  christos @node Registers In Python
   7104   1.7  christos @subsubsection Registers In Python
   7105   1.7  christos @cindex Registers In Python
   7106   1.7  christos 
   7107   1.7  christos Python code can request from a @code{gdb.Architecture} information
   7108   1.7  christos about the set of registers available
   7109   1.7  christos (@pxref{gdbpy_architecture_registers,,@code{Architecture.registers}}).
   7110   1.7  christos The register information is returned as a
   7111   1.7  christos @code{gdb.RegisterDescriptorIterator}, which is an iterator that in
   7112   1.7  christos turn returns @code{gdb.RegisterDescriptor} objects.
   7113   1.7  christos 
   7114   1.7  christos A @code{gdb.RegisterDescriptor} does not provide the value of a
   7115   1.7  christos register (@pxref{gdbpy_frame_read_register,,@code{Frame.read_register}}
   7116   1.7  christos for reading a register's value), instead the @code{RegisterDescriptor}
   7117   1.7  christos is a way to discover which registers are available for a particular
   7118   1.7  christos architecture.
   7119   1.7  christos 
   7120   1.7  christos A @code{gdb.RegisterDescriptor} has the following read-only properties:
   7121   1.7  christos 
   7122   1.7  christos @defvar RegisterDescriptor.name
   7123   1.7  christos The name of this register.
   7124   1.7  christos @end defvar
   7125   1.7  christos 
   7126   1.7  christos It is also possible to lookup a register descriptor based on its name
   7127   1.7  christos using the following @code{gdb.RegisterDescriptorIterator} function:
   7128   1.7  christos 
   7129   1.9  christos @defun RegisterDescriptorIterator.find (name)
   7130   1.7  christos Takes @var{name} as an argument, which must be a string, and returns a
   7131   1.7  christos @code{gdb.RegisterDescriptor} for the register with that name, or
   7132   1.7  christos @code{None} if there is no register with that name.
   7133   1.7  christos @end defun
   7134   1.7  christos 
   7135   1.7  christos Python code can also request from a @code{gdb.Architecture}
   7136   1.7  christos information about the set of register groups available on a given
   7137   1.7  christos architecture
   7138   1.7  christos (@pxref{gdbpy_architecture_reggroups,,@code{Architecture.register_groups}}).
   7139   1.7  christos 
   7140   1.7  christos Every register can be a member of zero or more register groups.  Some
   7141   1.7  christos register groups are used internally within @value{GDBN} to control
   7142   1.7  christos things like which registers must be saved when calling into the
   7143   1.7  christos program being debugged (@pxref{Calling,,Calling Program Functions}).
   7144   1.7  christos Other register groups exist to allow users to easily see related sets
   7145   1.7  christos of registers in commands like @code{info registers}
   7146   1.7  christos (@pxref{info_registers_reggroup,,@code{info registers
   7147   1.7  christos @var{reggroup}}}).
   7148   1.7  christos 
   7149   1.7  christos The register groups information is returned as a
   7150   1.7  christos @code{gdb.RegisterGroupsIterator}, which is an iterator that in turn
   7151   1.7  christos returns @code{gdb.RegisterGroup} objects.
   7152   1.7  christos 
   7153   1.7  christos A @code{gdb.RegisterGroup} object has the following read-only
   7154   1.7  christos properties:
   7155   1.7  christos 
   7156   1.7  christos @defvar RegisterGroup.name
   7157   1.7  christos A string that is the name of this register group.
   7158   1.7  christos @end defvar
   7159   1.7  christos 
   7160   1.8  christos @node Connections In Python
   7161   1.8  christos @subsubsection Connections In Python
   7162   1.8  christos @cindex connections in python
   7163   1.8  christos @value{GDBN} lets you run and debug multiple programs in a single
   7164   1.8  christos session.  Each program being debugged has a connection, the connection
   7165   1.8  christos describes how @value{GDBN} controls the program being debugged.
   7166   1.8  christos Examples of different connection types are @samp{native} and
   7167   1.8  christos @samp{remote}.  @xref{Inferiors Connections and Programs}.
   7168   1.8  christos 
   7169   1.8  christos Connections in @value{GDBN} are represented as instances of
   7170   1.8  christos @code{gdb.TargetConnection}, or as one of its sub-classes.  To get a
   7171   1.8  christos list of all connections use @code{gdb.connections}
   7172   1.8  christos (@pxref{gdbpy_connections,,gdb.connections}).
   7173   1.8  christos 
   7174   1.8  christos To get the connection for a single @code{gdb.Inferior} read its
   7175   1.8  christos @code{gdb.Inferior.connection} attribute
   7176   1.8  christos (@pxref{gdbpy_inferior_connection,,gdb.Inferior.connection}).
   7177   1.8  christos 
   7178   1.8  christos Currently there is only a single sub-class of
   7179   1.8  christos @code{gdb.TargetConnection}, @code{gdb.RemoteTargetConnection},
   7180   1.8  christos however, additional sub-classes may be added in future releases of
   7181   1.8  christos @value{GDBN}.  As a result you should avoid writing code like:
   7182   1.8  christos 
   7183   1.8  christos @smallexample
   7184   1.8  christos conn = gdb.selected_inferior().connection
   7185   1.8  christos if type(conn) is gdb.RemoteTargetConnection:
   7186   1.8  christos   print("This is a remote target connection")
   7187   1.8  christos @end smallexample
   7188   1.8  christos 
   7189   1.8  christos @noindent
   7190   1.8  christos as this may fail when more connection types are added.  Instead, you
   7191   1.8  christos should write:
   7192   1.8  christos 
   7193   1.8  christos @smallexample
   7194   1.8  christos conn = gdb.selected_inferior().connection
   7195   1.8  christos if isinstance(conn, gdb.RemoteTargetConnection):
   7196   1.8  christos   print("This is a remote target connection")
   7197   1.8  christos @end smallexample
   7198   1.8  christos 
   7199   1.8  christos A @code{gdb.TargetConnection} has the following method:
   7200   1.8  christos 
   7201   1.8  christos @defun TargetConnection.is_valid ()
   7202   1.8  christos Return @code{True} if the @code{gdb.TargetConnection} object is valid,
   7203   1.8  christos @code{False} if not.  A @code{gdb.TargetConnection} will become
   7204   1.8  christos invalid if the connection no longer exists within @value{GDBN}, this
   7205   1.8  christos might happen when no inferiors are using the connection, but could be
   7206   1.8  christos delayed until the user replaces the current target.
   7207   1.8  christos 
   7208   1.8  christos Reading any of the @code{gdb.TargetConnection} properties will throw
   7209   1.8  christos an exception if the connection is invalid.
   7210   1.8  christos @end defun
   7211   1.8  christos 
   7212   1.8  christos A @code{gdb.TargetConnection} has the following read-only properties:
   7213   1.8  christos 
   7214   1.8  christos @defvar TargetConnection.num
   7215   1.8  christos An integer assigned by @value{GDBN} to uniquely identify this
   7216   1.8  christos connection.  This is the same value as displayed in the @samp{Num}
   7217   1.8  christos column of the @code{info connections} command output (@pxref{Inferiors
   7218   1.8  christos Connections and Programs,,info connections}).
   7219   1.8  christos @end defvar
   7220   1.8  christos 
   7221   1.8  christos @defvar TargetConnection.type
   7222   1.8  christos A string that describes what type of connection this is.  This string
   7223   1.8  christos will be one of the valid names that can be passed to the @code{target}
   7224   1.8  christos command (@pxref{Target Commands,,target command}).
   7225   1.8  christos @end defvar
   7226   1.8  christos 
   7227   1.8  christos @defvar TargetConnection.description
   7228   1.8  christos A string that gives a short description of this target type.  This is
   7229   1.8  christos the same string that is displayed in the @samp{Description} column of
   7230   1.8  christos the @code{info connection} command output (@pxref{Inferiors
   7231   1.8  christos Connections and Programs,,info connections}).
   7232   1.8  christos @end defvar
   7233   1.8  christos 
   7234   1.8  christos @defvar TargetConnection.details
   7235   1.8  christos An optional string that gives additional information about this
   7236   1.8  christos connection.  This attribute can be @code{None} if there are no
   7237   1.8  christos additional details for this connection.
   7238   1.8  christos 
   7239   1.8  christos An example of a connection type that might have additional details is
   7240   1.8  christos the @samp{remote} connection, in this case the details string can
   7241   1.8  christos contain the @samp{@var{hostname}:@var{port}} that was used to connect
   7242   1.8  christos to the remote target.
   7243   1.8  christos @end defvar
   7244   1.8  christos 
   7245   1.8  christos The @code{gdb.RemoteTargetConnection} class is a sub-class of
   7246   1.8  christos @code{gdb.TargetConnection}, and is used to represent @samp{remote}
   7247   1.8  christos and @samp{extended-remote} connections.  In addition to the attributes
   7248   1.8  christos and methods available from the @code{gdb.TargetConnection} base class,
   7249   1.8  christos a @code{gdb.RemoteTargetConnection} has the following method:
   7250   1.8  christos 
   7251   1.8  christos @kindex maint packet
   7252   1.9  christos @defun RemoteTargetConnection.send_packet (packet)
   7253   1.8  christos This method sends @var{packet} to the remote target and returns the
   7254   1.8  christos response.  The @var{packet} should either be a @code{bytes} object, or
   7255   1.8  christos a @code{Unicode} string.
   7256   1.8  christos 
   7257   1.8  christos If @var{packet} is a @code{Unicode} string, then the string is encoded
   7258   1.8  christos to a @code{bytes} object using the @sc{ascii} codec.  If the string
   7259   1.8  christos can't be encoded then an @code{UnicodeError} is raised.
   7260   1.8  christos 
   7261   1.8  christos If @var{packet} is not a @code{bytes} object, or a @code{Unicode}
   7262   1.8  christos string, then a @code{TypeError} is raised.  If @var{packet} is empty
   7263   1.8  christos then a @code{ValueError} is raised.
   7264   1.8  christos 
   7265   1.9  christos The response is returned as a @code{bytes} object.  If it is known
   7266   1.9  christos that the response can be represented as a string then this can be
   7267   1.9  christos decoded from the buffer.  For example, if it is known that the
   7268   1.8  christos response is an @sc{ascii} string:
   7269   1.8  christos 
   7270   1.8  christos @smallexample
   7271   1.8  christos remote_connection.send_packet("some_packet").decode("ascii")
   7272   1.8  christos @end smallexample
   7273   1.8  christos 
   7274   1.8  christos The prefix, suffix, and checksum (as required by the remote serial
   7275   1.8  christos protocol) are automatically added to the outgoing packet, and removed
   7276   1.8  christos from the incoming packet before the contents of the reply are
   7277   1.8  christos returned.
   7278   1.8  christos 
   7279   1.8  christos This is equivalent to the @code{maintenance packet} command
   7280   1.8  christos (@pxref{maint packet}).
   7281   1.8  christos @end defun
   7282   1.8  christos 
   7283   1.7  christos @node TUI Windows In Python
   7284   1.7  christos @subsubsection Implementing new TUI windows
   7285   1.7  christos @cindex Python TUI Windows
   7286   1.7  christos 
   7287   1.7  christos New TUI (@pxref{TUI}) windows can be implemented in Python.
   7288   1.7  christos 
   7289   1.9  christos @defun gdb.register_window_type (name, factory)
   7290   1.7  christos Because TUI windows are created and destroyed depending on the layout
   7291   1.7  christos the user chooses, new window types are implemented by registering a
   7292   1.7  christos factory function with @value{GDBN}.
   7293   1.7  christos 
   7294   1.7  christos @var{name} is the name of the new window.  It's an error to try to
   7295   1.7  christos replace one of the built-in windows, but other window types can be
   7296   1.8  christos replaced.  The @var{name} should match the regular expression
   7297   1.8  christos @code{[a-zA-Z][-_.a-zA-Z0-9]*}, it is an error to try and create a
   7298   1.8  christos window with an invalid name.
   7299   1.7  christos 
   7300   1.7  christos @var{function} is a factory function that is called to create the TUI
   7301   1.7  christos window.  This is called with a single argument of type
   7302   1.7  christos @code{gdb.TuiWindow}, described below.  It should return an object
   7303   1.7  christos that implements the TUI window protocol, also described below.
   7304   1.7  christos @end defun
   7305   1.7  christos 
   7306   1.8  christos As mentioned above, when a factory function is called, it is passed
   7307   1.7  christos an object of type @code{gdb.TuiWindow}.  This object has these
   7308   1.7  christos methods and attributes:
   7309   1.7  christos 
   7310   1.7  christos @defun TuiWindow.is_valid ()
   7311   1.7  christos This method returns @code{True} when this window is valid.  When the
   7312   1.7  christos user changes the TUI layout, windows no longer visible in the new
   7313   1.7  christos layout will be destroyed.  At this point, the @code{gdb.TuiWindow}
   7314   1.7  christos will no longer be valid, and methods (and attributes) other than
   7315   1.7  christos @code{is_valid} will throw an exception.
   7316   1.8  christos 
   7317   1.8  christos When the TUI is disabled using @code{tui disable} (@pxref{TUI
   7318   1.8  christos Commands,,tui disable}) the window is hidden rather than destroyed,
   7319   1.8  christos but @code{is_valid} will still return @code{False} and other methods
   7320   1.8  christos (and attributes) will still throw an exception.
   7321   1.7  christos @end defun
   7322   1.7  christos 
   7323   1.7  christos @defvar TuiWindow.width
   7324   1.7  christos This attribute holds the width of the window.  It is not writable.
   7325   1.7  christos @end defvar
   7326   1.7  christos 
   7327   1.7  christos @defvar TuiWindow.height
   7328   1.7  christos This attribute holds the height of the window.  It is not writable.
   7329   1.7  christos @end defvar
   7330   1.7  christos 
   7331   1.7  christos @defvar TuiWindow.title
   7332   1.7  christos This attribute holds the window's title, a string.  This is normally
   7333   1.7  christos displayed above the window.  This attribute can be modified.
   7334   1.7  christos @end defvar
   7335   1.7  christos 
   7336   1.7  christos @defun TuiWindow.erase ()
   7337   1.7  christos Remove all the contents of the window.
   7338   1.7  christos @end defun
   7339   1.7  christos 
   7340   1.9  christos @defun TuiWindow.write (string @r{[}, full_window@r{]})
   7341   1.7  christos Write @var{string} to the window.  @var{string} can contain ANSI
   7342   1.7  christos terminal escape styling sequences; @value{GDBN} will translate these
   7343   1.7  christos as appropriate for the terminal.
   7344   1.8  christos 
   7345   1.8  christos If the @var{full_window} parameter is @code{True}, then @var{string}
   7346   1.8  christos contains the full contents of the window.  This is similar to calling
   7347   1.8  christos @code{erase} before @code{write}, but avoids the flickering.
   7348   1.7  christos @end defun
   7349   1.7  christos 
   7350   1.7  christos The factory function that you supply should return an object
   7351  1.10  christos conforming to the TUI window protocol.  These are the methods that can
   7352   1.7  christos be called on this object, which is referred to below as the ``window
   7353   1.7  christos object''.  The methods documented below are optional; if the object
   7354   1.7  christos does not implement one of these methods, @value{GDBN} will not attempt
   7355   1.7  christos to call it.  Additional new methods may be added to the window
   7356   1.7  christos protocol in the future.  @value{GDBN} guarantees that they will begin
   7357   1.7  christos with a lower-case letter, so you can start implementation methods with
   7358   1.7  christos upper-case letters or underscore to avoid any future conflicts.
   7359   1.7  christos 
   7360   1.7  christos @defun Window.close ()
   7361   1.7  christos When the TUI window is closed, the @code{gdb.TuiWindow} object will be
   7362   1.7  christos put into an invalid state.  At this time, @value{GDBN} will call
   7363   1.7  christos @code{close} method on the window object.
   7364   1.7  christos 
   7365   1.7  christos After this method is called, @value{GDBN} will discard any references
   7366   1.7  christos it holds on this window object, and will no longer call methods on
   7367   1.7  christos this object.
   7368   1.7  christos @end defun
   7369   1.7  christos 
   7370   1.7  christos @defun Window.render ()
   7371   1.7  christos In some situations, a TUI window can change size.  For example, this
   7372   1.7  christos can happen if the user resizes the terminal, or changes the layout.
   7373   1.7  christos When this happens, @value{GDBN} will call the @code{render} method on
   7374   1.7  christos the window object.
   7375   1.7  christos 
   7376   1.7  christos If your window is intended to update in response to changes in the
   7377   1.7  christos inferior, you will probably also want to register event listeners and
   7378   1.7  christos send output to the @code{gdb.TuiWindow}.
   7379   1.7  christos @end defun
   7380   1.7  christos 
   7381   1.9  christos @defun Window.hscroll (num)
   7382   1.7  christos This is a request to scroll the window horizontally.  @var{num} is the
   7383   1.7  christos amount by which to scroll, with negative numbers meaning to scroll
   7384   1.7  christos right.  In the TUI model, it is the viewport that moves, not the
   7385   1.7  christos contents.  A positive argument should cause the viewport to move
   7386   1.7  christos right, and so the content should appear to move to the left.
   7387   1.7  christos @end defun
   7388   1.7  christos 
   7389   1.9  christos @defun Window.vscroll (num)
   7390   1.7  christos This is a request to scroll the window vertically.  @var{num} is the
   7391   1.7  christos amount by which to scroll, with negative numbers meaning to scroll
   7392   1.7  christos backward.  In the TUI model, it is the viewport that moves, not the
   7393   1.7  christos contents.  A positive argument should cause the viewport to move down,
   7394   1.7  christos and so the content should appear to move up.
   7395   1.7  christos @end defun
   7396   1.7  christos 
   7397   1.9  christos @anchor{python-window-click}
   7398   1.9  christos @defun Window.click (x, y, button)
   7399   1.8  christos This is called on a mouse click in this window.  @var{x} and @var{y} are
   7400   1.8  christos the mouse coordinates inside the window (0-based, from the top left
   7401   1.8  christos corner), and @var{button} specifies which mouse button was used, whose
   7402   1.8  christos values can be 1 (left), 2 (middle), or 3 (right).
   7403   1.9  christos 
   7404   1.9  christos When TUI mouse events are disabled by turning off the @code{tui mouse-events}
   7405   1.9  christos setting (@pxref{tui-mouse-events,,set tui mouse-events}), then @code{click} will
   7406   1.9  christos not be called.
   7407   1.8  christos @end defun
   7408   1.8  christos 
   7409   1.8  christos @node Disassembly In Python
   7410   1.8  christos @subsubsection Instruction Disassembly In Python
   7411   1.8  christos @cindex python instruction disassembly
   7412   1.8  christos 
   7413   1.8  christos @value{GDBN}'s builtin disassembler can be extended, or even replaced,
   7414   1.8  christos using the Python API.  The disassembler related features are contained
   7415   1.8  christos within the @code{gdb.disassembler} module:
   7416   1.8  christos 
   7417   1.9  christos @anchor{DisassembleInfo Class}
   7418   1.8  christos @deftp {class} gdb.disassembler.DisassembleInfo
   7419   1.8  christos Disassembly is driven by instances of this class.  Each time
   7420   1.8  christos @value{GDBN} needs to disassemble an instruction, an instance of this
   7421   1.8  christos class is created and passed to a registered disassembler.  The
   7422   1.8  christos disassembler is then responsible for disassembling an instruction and
   7423   1.8  christos returning a result.
   7424   1.8  christos 
   7425   1.8  christos Instances of this type are usually created within @value{GDBN},
   7426   1.8  christos however, it is possible to create a copy of an instance of this type,
   7427   1.8  christos see the description of @code{__init__} for more details.
   7428   1.8  christos 
   7429   1.8  christos This class has the following properties and methods:
   7430   1.8  christos 
   7431   1.8  christos @defvar DisassembleInfo.address
   7432   1.8  christos A read-only integer containing the address at which @value{GDBN}
   7433   1.8  christos wishes to disassemble a single instruction.
   7434   1.8  christos @end defvar
   7435   1.8  christos 
   7436   1.8  christos @defvar DisassembleInfo.architecture
   7437   1.8  christos The @code{gdb.Architecture} (@pxref{Architectures In Python}) for
   7438   1.8  christos which @value{GDBN} is currently disassembling, this property is
   7439   1.8  christos read-only.
   7440   1.8  christos @end defvar
   7441   1.8  christos 
   7442   1.8  christos @defvar DisassembleInfo.progspace
   7443   1.8  christos The @code{gdb.Progspace} (@pxref{Progspaces In Python,,Program Spaces
   7444   1.8  christos In Python}) for which @value{GDBN} is currently disassembling, this
   7445   1.8  christos property is read-only.
   7446   1.8  christos @end defvar
   7447   1.8  christos 
   7448   1.8  christos @defun DisassembleInfo.is_valid ()
   7449   1.8  christos Returns @code{True} if the @code{DisassembleInfo} object is valid,
   7450   1.8  christos @code{False} if not.  A @code{DisassembleInfo} object will become
   7451   1.8  christos invalid once the disassembly call for which the @code{DisassembleInfo}
   7452   1.8  christos was created, has returned.  Calling other @code{DisassembleInfo}
   7453   1.8  christos methods, or accessing @code{DisassembleInfo} properties, will raise a
   7454   1.8  christos @code{RuntimeError} exception if it is invalid.
   7455   1.8  christos @end defun
   7456   1.8  christos 
   7457   1.8  christos @defun DisassembleInfo.__init__ (info)
   7458   1.8  christos This can be used to create a new @code{DisassembleInfo} object that is
   7459   1.8  christos a copy of @var{info}.  The copy will have the same @code{address},
   7460   1.8  christos @code{architecture}, and @code{progspace} values as @var{info}, and
   7461   1.8  christos will become invalid at the same time as @var{info}.
   7462   1.8  christos 
   7463   1.8  christos This method exists so that sub-classes of @code{DisassembleInfo} can
   7464   1.8  christos be created, these sub-classes must be initialized as copies of an
   7465   1.8  christos existing @code{DisassembleInfo} object, but sub-classes might choose
   7466   1.8  christos to override the @code{read_memory} method, and so control what
   7467   1.8  christos @value{GDBN} sees when reading from memory
   7468   1.8  christos (@pxref{builtin_disassemble}).
   7469   1.8  christos @end defun
   7470   1.8  christos 
   7471   1.8  christos @defun DisassembleInfo.read_memory (length, offset)
   7472   1.8  christos This method allows the disassembler to read the bytes of the
   7473   1.8  christos instruction to be disassembled.  The method reads @var{length} bytes,
   7474   1.8  christos starting at @var{offset} from
   7475   1.8  christos @code{DisassembleInfo.address}.
   7476   1.8  christos 
   7477   1.8  christos It is important that the disassembler read the instruction bytes using
   7478   1.8  christos this method, rather than reading inferior memory directly, as in some
   7479   1.8  christos cases @value{GDBN} disassembles from an internal buffer rather than
   7480   1.8  christos directly from inferior memory, calling this method handles this
   7481   1.8  christos detail.
   7482   1.8  christos 
   7483   1.8  christos Returns a buffer object, which behaves much like an array or a string,
   7484   1.8  christos just as @code{Inferior.read_memory} does
   7485   1.8  christos (@pxref{gdbpy_inferior_read_memory,,Inferior.read_memory}).  The
   7486   1.8  christos length of the returned buffer will always be exactly @var{length}.
   7487   1.8  christos 
   7488   1.8  christos If @value{GDBN} is unable to read the required memory then a
   7489   1.8  christos @code{gdb.MemoryError} exception is raised (@pxref{Exception
   7490   1.8  christos Handling}).
   7491   1.8  christos 
   7492   1.8  christos This method can be overridden by a sub-class in order to control what
   7493   1.8  christos @value{GDBN} sees when reading from memory
   7494   1.8  christos (@pxref{builtin_disassemble}).  When overriding this method it is
   7495   1.8  christos important to understand how @code{builtin_disassemble} makes use of
   7496   1.8  christos this method.
   7497   1.8  christos 
   7498   1.8  christos While disassembling a single instruction there could be multiple calls
   7499   1.8  christos to this method, and the same bytes might be read multiple times.  Any
   7500   1.8  christos single call might only read a subset of the total instruction bytes.
   7501   1.8  christos 
   7502   1.8  christos If an implementation of @code{read_memory} is unable to read the
   7503   1.8  christos requested memory contents, for example, if there's a request to read
   7504   1.8  christos from an invalid memory address, then a @code{gdb.MemoryError} should
   7505   1.8  christos be raised.
   7506   1.8  christos 
   7507   1.8  christos Raising a @code{MemoryError} inside @code{read_memory} does not
   7508   1.8  christos automatically mean a @code{MemoryError} will be raised by
   7509   1.8  christos @code{builtin_disassemble}.  It is possible the @value{GDBN}'s builtin
   7510   1.8  christos disassembler is probing to see how many bytes are available.  When
   7511   1.8  christos @code{read_memory} raises the @code{MemoryError} the builtin
   7512   1.8  christos disassembler might be able to perform a complete disassembly with the
   7513   1.8  christos bytes it has available, in this case @code{builtin_disassemble} will
   7514   1.8  christos not itself raise a @code{MemoryError}.
   7515   1.8  christos 
   7516   1.8  christos Any other exception type raised in @code{read_memory} will propagate
   7517   1.8  christos back and be re-raised by @code{builtin_disassemble}.
   7518   1.8  christos @end defun
   7519   1.9  christos 
   7520   1.9  christos @defun DisassembleInfo.text_part (style, string)
   7521   1.9  christos Create a new @code{DisassemblerTextPart} representing a piece of a
   7522   1.9  christos disassembled instruction.  @var{string} should be a non-empty string,
   7523   1.9  christos and @var{style} should be an appropriate style constant
   7524   1.9  christos (@pxref{Disassembler Style Constants}).
   7525   1.9  christos 
   7526   1.9  christos Disassembler parts are used when creating a @code{DisassemblerResult}
   7527   1.9  christos in order to represent the styling within an instruction
   7528   1.9  christos (@pxref{DisassemblerResult Class}).
   7529   1.9  christos @end defun
   7530   1.9  christos 
   7531   1.9  christos @defun DisassembleInfo.address_part (address)
   7532   1.9  christos Create a new @code{DisassemblerAddressPart}.  @var{address} is the
   7533   1.9  christos value of the absolute address this part represents.  A
   7534   1.9  christos @code{DisassemblerAddressPart} is displayed as an absolute address and
   7535   1.9  christos an associated symbol, the address and symbol are styled appropriately.
   7536   1.9  christos @end defun
   7537   1.9  christos 
   7538   1.8  christos @end deftp
   7539   1.8  christos 
   7540   1.9  christos @anchor{Disassembler Class}
   7541   1.9  christos @deftp {class} gdb.disassembler.Disassembler
   7542   1.8  christos This is a base class from which all user implemented disassemblers
   7543   1.8  christos must inherit.
   7544   1.8  christos 
   7545   1.8  christos @defun Disassembler.__init__ (name)
   7546   1.8  christos The constructor takes @var{name}, a string, which should be a short
   7547   1.8  christos name for this disassembler.
   7548   1.8  christos @end defun
   7549   1.8  christos 
   7550   1.8  christos @defun Disassembler.__call__ (info)
   7551   1.8  christos The @code{__call__} method must be overridden by sub-classes to
   7552   1.8  christos perform disassembly.  Calling @code{__call__} on this base class will
   7553   1.8  christos raise a @code{NotImplementedError} exception.
   7554   1.8  christos 
   7555   1.8  christos The @var{info} argument is an instance of @code{DisassembleInfo}, and
   7556   1.8  christos describes the instruction that @value{GDBN} wants disassembling.
   7557   1.8  christos 
   7558   1.8  christos If this function returns @code{None}, this indicates to @value{GDBN}
   7559   1.8  christos that this sub-class doesn't wish to disassemble the requested
   7560   1.8  christos instruction.  @value{GDBN} will then use its builtin disassembler to
   7561   1.8  christos perform the disassembly.
   7562   1.8  christos 
   7563   1.8  christos Alternatively, this function can return a @code{DisassemblerResult}
   7564   1.8  christos that represents the disassembled instruction, this type is described
   7565   1.8  christos in more detail below.
   7566   1.8  christos 
   7567   1.8  christos The @code{__call__} method can raise a @code{gdb.MemoryError}
   7568   1.8  christos exception (@pxref{Exception Handling}) to indicate to @value{GDBN}
   7569   1.8  christos that there was a problem accessing the required memory, this will then
   7570   1.8  christos be displayed by @value{GDBN} within the disassembler output.
   7571   1.8  christos 
   7572   1.8  christos Ideally, the only three outcomes from invoking @code{__call__} would
   7573   1.8  christos be a return of @code{None}, a successful disassembly returned in a
   7574   1.8  christos @code{DisassemblerResult}, or a @code{MemoryError} indicating that
   7575   1.8  christos there was a problem reading memory.
   7576   1.8  christos 
   7577   1.8  christos However, as an implementation of @code{__call__} could fail due to
   7578   1.8  christos other reasons, e.g.@: some external resource required to perform
   7579   1.8  christos disassembly is temporarily unavailable, then, if @code{__call__}
   7580   1.8  christos raises a @code{GdbError}, the exception will be converted to a string
   7581   1.8  christos and printed at the end of the disassembly output, the disassembly
   7582   1.8  christos request will then stop.
   7583   1.8  christos 
   7584   1.8  christos Any other exception type raised by the @code{__call__} method is
   7585   1.8  christos considered an error in the user code, the exception will be printed to
   7586   1.8  christos the error stream according to the @kbd{set python print-stack} setting
   7587   1.8  christos (@pxref{set_python_print_stack,,@kbd{set python print-stack}}).
   7588   1.8  christos @end defun
   7589   1.8  christos @end deftp
   7590   1.8  christos 
   7591   1.9  christos @anchor{DisassemblerResult Class}
   7592   1.9  christos @deftp {class} gdb.disassembler.DisassemblerResult
   7593   1.9  christos This class represents the result of disassembling a single
   7594   1.9  christos instruction.  An instance of this class will be returned from
   7595   1.9  christos @code{builtin_disassemble} (@pxref{builtin_disassemble}), and an
   7596   1.9  christos instance of this class should be returned from
   7597   1.9  christos @w{@code{Disassembler.__call__}} (@pxref{Disassembler Class}) if an
   7598   1.9  christos instruction was successfully disassembled.
   7599   1.9  christos 
   7600   1.9  christos It is not possible to sub-class the @code{DisassemblerResult} class.
   7601   1.8  christos 
   7602   1.9  christos The @code{DisassemblerResult} class has the following properties and
   7603   1.9  christos methods:
   7604   1.9  christos 
   7605   1.9  christos @defun DisassemblerResult.__init__ (length, string, parts)
   7606   1.8  christos Initialize an instance of this class, @var{length} is the length of
   7607   1.8  christos the disassembled instruction in bytes, which must be greater than
   7608   1.9  christos zero.
   7609   1.9  christos 
   7610   1.9  christos Only one of @var{string} or @var{parts} should be used to initialize a
   7611   1.9  christos new @code{DisassemblerResult}; the other one should be passed the
   7612   1.9  christos value @code{None}.  Alternatively, the arguments can be passed by
   7613   1.9  christos name, and the unused argument can be ignored.
   7614   1.9  christos 
   7615   1.9  christos The @var{string} argument, if not @code{None}, is a non-empty string
   7616   1.9  christos that represents the entire disassembled instruction.  Building a result
   7617   1.9  christos object using the @var{string} argument does not allow for any styling
   7618   1.9  christos information to be included in the result.  @value{GDBN} will style the
   7619   1.9  christos result as a single @code{DisassemblerTextPart} with @code{STYLE_TEXT}
   7620   1.9  christos style (@pxref{Disassembler Styling Parts}).
   7621   1.9  christos 
   7622   1.9  christos The @var{parts} argument, if not @code{None}, is a non-empty sequence
   7623   1.9  christos of @code{DisassemblerPart} objects.  Each part represents a small part
   7624   1.9  christos of the disassembled instruction along with associated styling
   7625   1.9  christos information.  A result object built using @var{parts} can be displayed
   7626   1.9  christos by @value{GDBN} with full styling information
   7627   1.9  christos (@pxref{style_disassembler_enabled,,@kbd{set style disassembler
   7628   1.9  christos enabled}}).
   7629   1.8  christos @end defun
   7630   1.8  christos 
   7631   1.8  christos @defvar DisassemblerResult.length
   7632   1.8  christos A read-only property containing the length of the disassembled
   7633   1.8  christos instruction in bytes, this will always be greater than zero.
   7634   1.8  christos @end defvar
   7635   1.8  christos 
   7636   1.8  christos @defvar DisassemblerResult.string
   7637   1.8  christos A read-only property containing a non-empty string representing the
   7638   1.9  christos disassembled instruction.  The @var{string} is a representation of the
   7639   1.9  christos disassembled instruction without any styling information.  To see how
   7640   1.9  christos the instruction will be styled use the @var{parts} property.
   7641   1.9  christos 
   7642   1.9  christos If this instance was initialized using separate
   7643   1.9  christos @code{DisassemblerPart} objects, the @var{string} property will still
   7644   1.9  christos be valid.  The @var{string} value is created by concatenating the
   7645   1.9  christos @code{DisassemblerPart.string} values of each component part
   7646   1.9  christos (@pxref{Disassembler Styling Parts}).
   7647   1.9  christos @end defvar
   7648   1.9  christos 
   7649   1.9  christos @defvar DisassemblerResult.parts
   7650   1.9  christos A read-only property containing a non-empty sequence of
   7651   1.9  christos @code{DisassemblerPart} objects.  Each @code{DisassemblerPart} object
   7652   1.9  christos contains a small part of the instruction along with information about
   7653   1.9  christos how that part should be styled.  @value{GDBN} uses this information to
   7654   1.9  christos create styled disassembler output
   7655   1.9  christos (@pxref{style_disassembler_enabled,,@kbd{set style disassembler
   7656   1.9  christos enabled}}).
   7657   1.9  christos 
   7658   1.9  christos If this instance was initialized using a single string rather than
   7659   1.9  christos with a sequence of @code{DisassemblerPart} objects, the @var{parts}
   7660   1.9  christos property will still be valid.  In this case the @var{parts} property
   7661   1.9  christos will hold a sequence containing a single @code{DisassemblerTextPart}
   7662   1.9  christos object, the string of which will represent the entire instruction, and
   7663   1.9  christos the style of which will be @code{STYLE_TEXT}.
   7664   1.9  christos @end defvar
   7665   1.9  christos @end deftp
   7666   1.9  christos 
   7667   1.9  christos @anchor{Disassembler Styling Parts}
   7668   1.9  christos @deftp {class} gdb.disassembler.DisassemblerPart
   7669   1.9  christos This is a parent class from which the different part sub-classes
   7670   1.9  christos inherit.  Only instances of the sub-classes detailed below will be
   7671   1.9  christos returned by the Python API.
   7672   1.9  christos 
   7673   1.9  christos It is not possible to directly create instances of either this parent
   7674   1.9  christos class, or any of the sub-classes listed below.  Instances of the
   7675   1.9  christos sub-classes listed below are created by calling
   7676   1.9  christos @code{builtin_disassemble} (@pxref{builtin_disassemble}) and are
   7677   1.9  christos returned within the @code{DisassemblerResult} object, or can be
   7678   1.9  christos created by calling the @code{text_part} and @code{address_part}
   7679   1.9  christos methods on the @code{DisassembleInfo} class (@pxref{DisassembleInfo
   7680   1.9  christos Class}).
   7681   1.9  christos 
   7682   1.9  christos The @code{DisassemblerPart} class has a single property:
   7683   1.9  christos 
   7684   1.9  christos @defvar DisassemblerPart.string
   7685   1.9  christos A read-only property that contains a non-empty string representing
   7686   1.9  christos this part of the disassembled instruction.  The string within this
   7687   1.9  christos property doesn't include any styling information.
   7688   1.9  christos @end defvar
   7689   1.9  christos @end deftp
   7690   1.9  christos 
   7691   1.9  christos @deftp {class} gdb.disassembler.DisassemblerTextPart
   7692   1.9  christos The @code{DisassemblerTextPart} class represents a piece of the
   7693   1.9  christos disassembled instruction and the associated style for that piece.
   7694   1.9  christos Instances of this class can't be created directly, instead call
   7695   1.9  christos @code{DisassembleInfo.text_part} to create a new instance of this
   7696   1.9  christos class (@pxref{DisassembleInfo Class}).
   7697   1.9  christos 
   7698   1.9  christos As well as the properties of its parent class, the
   7699   1.9  christos @code{DisassemblerTextPart} has the following additional property:
   7700   1.9  christos 
   7701   1.9  christos @defvar DisassemblerTextPart.style
   7702   1.9  christos A read-only property that contains one of the defined style constants.
   7703   1.9  christos @value{GDBN} will use this style when styling this part of the
   7704   1.9  christos disassembled instruction (@pxref{Disassembler Style Constants}).
   7705   1.9  christos @end defvar
   7706   1.9  christos @end deftp
   7707   1.9  christos 
   7708   1.9  christos @deftp {class} gdb.disassembler.DisassemblerAddressPart
   7709   1.9  christos The @code{DisassemblerAddressPart} class represents an absolute
   7710   1.9  christos address within a disassembled instruction.  Using a
   7711   1.9  christos @code{DisassemblerAddressPart} instead of a
   7712   1.9  christos @code{DisassemblerTextPart} with @code{STYLE_ADDRESS} is preferred,
   7713   1.9  christos @value{GDBN} will display the address as both an absolute address, and
   7714   1.9  christos will look up a suitable symbol to display next to the address.  Using
   7715   1.9  christos @code{DisassemblerAddressPart} also ensures that user settings such as
   7716   1.9  christos @code{set print max-symbolic-offset} are respected.
   7717   1.9  christos 
   7718   1.9  christos Here is an example of an x86-64 instruction:
   7719   1.9  christos 
   7720   1.9  christos @smallexample
   7721   1.9  christos call   0x401136 <foo>
   7722   1.9  christos @end smallexample
   7723   1.9  christos 
   7724   1.9  christos @noindent
   7725   1.9  christos In this instruction the @code{0x401136 <foo>} was generated from a
   7726   1.9  christos single @code{DisassemblerAddressPart}.  The @code{0x401136} will be
   7727   1.9  christos styled with @code{STYLE_ADDRESS}, and @code{foo} will be styled with
   7728   1.9  christos @code{STYLE_SYMBOL}.  The @code{<} and @code{>} will be styled as
   7729   1.9  christos @code{STYLE_TEXT}.
   7730   1.9  christos 
   7731   1.9  christos If the inclusion of the symbol name is not required then a
   7732   1.9  christos @code{DisassemblerTextPart} with style @code{STYLE_ADDRESS} can be
   7733   1.9  christos used instead.
   7734   1.9  christos 
   7735   1.9  christos Instances of this class can't be created directly, instead call
   7736   1.9  christos @code{DisassembleInfo.address_part} to create a new instance of this
   7737   1.9  christos class (@pxref{DisassembleInfo Class}).
   7738   1.9  christos 
   7739   1.9  christos As well as the properties of its parent class, the
   7740   1.9  christos @code{DisassemblerAddressPart} has the following additional property:
   7741   1.9  christos 
   7742   1.9  christos @defvar DisassemblerAddressPart.address
   7743   1.9  christos A read-only property that contains the @var{address} passed to this
   7744   1.9  christos object's @code{__init__} method.
   7745   1.8  christos @end defvar
   7746   1.8  christos @end deftp
   7747   1.8  christos 
   7748   1.9  christos @anchor{Disassembler Style Constants}
   7749   1.9  christos 
   7750   1.9  christos The following table lists all of the disassembler styles that are
   7751   1.9  christos available.  @value{GDBN} maps these style constants onto its style
   7752   1.9  christos settings (@pxref{Output Styling}).  In some cases, several style
   7753   1.9  christos constants produce the same style settings, and thus will produce the
   7754   1.9  christos same visual effect on the screen.  This could change in future
   7755   1.9  christos releases of @value{GDBN}, so care should be taken to select the
   7756   1.9  christos correct style constant to ensure correct output styling in future
   7757   1.9  christos releases of @value{GDBN}.
   7758   1.9  christos 
   7759   1.9  christos @vtable @code
   7760   1.9  christos @vindex STYLE_TEXT
   7761   1.9  christos @item gdb.disassembler.STYLE_TEXT
   7762   1.9  christos This is the default style used by @value{GDBN} when styling
   7763   1.9  christos disassembler output.  This style should be used for any parts of the
   7764   1.9  christos instruction that don't fit any of the other styles listed below.
   7765   1.9  christos @value{GDBN} styles text with this style using its default style.
   7766   1.9  christos 
   7767   1.9  christos @vindex STYLE_MNEMONIC
   7768   1.9  christos @item gdb.disassembler.STYLE_MNEMONIC
   7769   1.9  christos This style is used for styling the primary instruction mnemonic, which
   7770   1.9  christos usually appears at, or near, the start of the disassembled instruction
   7771   1.9  christos string.
   7772   1.9  christos 
   7773   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7774   1.9  christos mnemonic} style setting.
   7775   1.9  christos 
   7776   1.9  christos @vindex STYLE_SUB_MNEMONIC
   7777   1.9  christos @item gdb.disassembler.STYLE_SUB_MNEMONIC
   7778   1.9  christos This style is used for styling any sub-mnemonics within a disassembled
   7779   1.9  christos instruction.  A sub-mnemonic is any text within the instruction that
   7780   1.9  christos controls the function of the instruction, but which is disjoint from
   7781   1.9  christos the primary mnemonic (which will have styled @code{STYLE_MNEMONIC}).
   7782   1.9  christos 
   7783   1.9  christos As an example, consider this AArch64 instruction:
   7784   1.9  christos 
   7785   1.9  christos @smallexample
   7786   1.9  christos add	w16, w7, w1, lsl #1
   7787   1.9  christos @end smallexample
   7788   1.9  christos 
   7789   1.9  christos @noindent
   7790   1.9  christos The @code{add} is the primary instruction mnemonic, and would be given
   7791   1.9  christos style @code{STYLE_MNEMONIC}, while @code{lsl} is the sub-mnemonic, and
   7792   1.9  christos would be given the style @code{STYLE_SUB_MNEMONIC}.
   7793   1.9  christos 
   7794   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7795   1.9  christos mnemonic} style setting.
   7796   1.9  christos 
   7797   1.9  christos @vindex STYLE_ASSEMBLER_DIRECTIVE
   7798   1.9  christos @item gdb.disassembler.STYLE_ASSEMBLER_DIRECTIVE
   7799   1.9  christos Sometimes a series of bytes doesn't decode to a valid instruction.  In
   7800   1.9  christos this case the disassembler may choose to represent the result of
   7801   1.9  christos disassembling using an assembler directive, for example:
   7802   1.9  christos 
   7803   1.9  christos @smallexample
   7804   1.9  christos .word	0x1234
   7805   1.9  christos @end smallexample
   7806   1.9  christos 
   7807   1.9  christos @noindent
   7808   1.9  christos In this case, the @code{.word} would be give the
   7809   1.9  christos @code{STYLE_ASSEMBLER_DIRECTIVE} style.  An assembler directive is
   7810   1.9  christos similar to a mnemonic in many ways but is something that is not part
   7811   1.9  christos of the architecture's instruction set.
   7812   1.9  christos 
   7813   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7814   1.9  christos mnemonic} style setting.
   7815   1.9  christos 
   7816   1.9  christos @vindex STYLE_REGISTER
   7817   1.9  christos @item gdb.disassembler.STYLE_REGISTER
   7818   1.9  christos This style is used for styling any text that represents a register
   7819   1.9  christos name, or register number, within a disassembled instruction.
   7820   1.9  christos 
   7821   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7822   1.9  christos register} style setting.
   7823   1.9  christos 
   7824   1.9  christos @vindex STYLE_ADDRESS
   7825   1.9  christos @item gdb.disassembler.STYLE_ADDRESS
   7826   1.9  christos This style is used for styling numerical values that represent
   7827   1.9  christos absolute addresses within the disassembled instruction.
   7828   1.9  christos 
   7829   1.9  christos When creating a @code{DisassemblerTextPart} with this style, you
   7830   1.9  christos should consider if a @code{DisassemblerAddressPart} would be more
   7831   1.9  christos appropriate.  See @ref{Disassembler Styling Parts} for a description
   7832   1.9  christos of what each part offers.
   7833   1.9  christos 
   7834   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7835   1.9  christos address} style setting.
   7836   1.9  christos 
   7837   1.9  christos @vindex STYLE_ADDRESS_OFFSET
   7838   1.9  christos @item gdb.disassembler.STYLE_ADDRESS_OFFSET
   7839   1.9  christos This style is used for styling numerical values that represent offsets
   7840   1.9  christos to addresses within the disassembled instruction.  A value is
   7841   1.9  christos considered an address offset when the instruction itself is going to
   7842   1.9  christos access memory, and the value is being used to offset which address is
   7843   1.9  christos accessed.
   7844   1.9  christos 
   7845   1.9  christos For example, an architecture might have an instruction that loads from
   7846   1.9  christos memory using an address within a register.  If that instruction also
   7847   1.9  christos allowed for an immediate offset to be encoded into the instruction,
   7848   1.9  christos this would be an address offset.  Similarly, a branch instruction
   7849   1.9  christos might jump to an address in a register plus an address offset that is
   7850   1.9  christos encoded into the instruction.
   7851   1.9  christos 
   7852   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7853   1.9  christos immediate} style setting.
   7854   1.9  christos 
   7855   1.9  christos @vindex STYLE_IMMEDIATE
   7856   1.9  christos @item gdb.disassembler.STYLE_IMMEDIATE
   7857   1.9  christos Use @code{STYLE_IMMEDIATE} for any numerical values within a
   7858   1.9  christos disassembled instruction when those values are not addresses, address
   7859   1.9  christos offsets, or register numbers (The styles @code{STYLE_ADDRESS},
   7860   1.9  christos @code{STYLE_ADDRESS_OFFSET}, or @code{STYLE_REGISTER} can be used in
   7861   1.9  christos those cases).
   7862   1.9  christos 
   7863   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7864   1.9  christos immediate} style setting.
   7865   1.9  christos 
   7866   1.9  christos @vindex STYLE_SYMBOL
   7867   1.9  christos @item gdb.disassembler.STYLE_SYMBOL
   7868   1.9  christos This style is used for styling the textual name of a symbol that is
   7869   1.9  christos included within a disassembled instruction.  A symbol name is often
   7870   1.9  christos included next to an absolute address within a disassembled instruction
   7871   1.9  christos to make it easier for the user to understand what the address is
   7872   1.9  christos referring too.  For example:
   7873   1.9  christos 
   7874   1.9  christos @smallexample
   7875   1.9  christos call   0x401136 <foo>
   7876   1.9  christos @end smallexample
   7877   1.9  christos 
   7878   1.9  christos @noindent
   7879   1.9  christos Here @code{foo} is the name of a symbol, and should be given the
   7880   1.9  christos @code{STYLE_SYMBOL} style.
   7881   1.9  christos 
   7882   1.9  christos Adding symbols next to absolute addresses like this is handled
   7883   1.9  christos automatically by the @code{DisassemblerAddressPart} class
   7884   1.9  christos (@pxref{Disassembler Styling Parts}).
   7885   1.9  christos 
   7886   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7887   1.9  christos symbol} style setting.
   7888   1.9  christos 
   7889   1.9  christos @vindex STYLE_COMMENT_START
   7890   1.9  christos @item gdb.disassembler.STYLE_COMMENT_START
   7891   1.9  christos This style is used to start a line comment in the disassembly output.
   7892   1.9  christos Unlike other styles, which only apply to the single
   7893   1.9  christos @code{DisassemblerTextPiece} to which they are applied, the comment
   7894   1.9  christos style is sticky, and overrides the style of any further pieces within
   7895   1.9  christos this instruction.
   7896   1.9  christos 
   7897   1.9  christos This means that, after a @code{STYLE_COMMENT_START} piece has been
   7898   1.9  christos seen, @value{GDBN} will apply the comment style until the end of the
   7899   1.9  christos line, ignoring the specific style within a piece.
   7900   1.9  christos 
   7901   1.9  christos @value{GDBN} styles text with this style using the @code{disassembler
   7902   1.9  christos comment} style setting.
   7903   1.9  christos @end vtable
   7904   1.9  christos 
   7905   1.8  christos The following functions are also contained in the
   7906   1.8  christos @code{gdb.disassembler} module:
   7907   1.8  christos 
   7908   1.8  christos @defun register_disassembler (disassembler, architecture)
   7909   1.8  christos The @var{disassembler} must be a sub-class of
   7910   1.8  christos @code{gdb.disassembler.Disassembler} or @code{None}.
   7911   1.8  christos 
   7912   1.8  christos The optional @var{architecture} is either a string, or the value
   7913   1.8  christos @code{None}.  If it is a string, then it should be the name of an
   7914   1.8  christos architecture known to @value{GDBN}, as returned either from
   7915   1.8  christos @code{gdb.Architecture.name}
   7916   1.8  christos (@pxref{gdbpy_architecture_name,,gdb.Architecture.name}), or from
   7917   1.8  christos @code{gdb.architecture_names}
   7918   1.8  christos (@pxref{gdb_architecture_names,,gdb.architecture_names}).
   7919   1.8  christos 
   7920   1.8  christos The @var{disassembler} will be installed for the architecture named by
   7921   1.8  christos @var{architecture}, or if @var{architecture} is @code{None}, then
   7922   1.8  christos @var{disassembler} will be installed as a global disassembler for use
   7923   1.8  christos by all architectures.
   7924   1.8  christos 
   7925   1.8  christos @cindex disassembler in Python, global vs.@: specific
   7926   1.8  christos @cindex search order for disassembler in Python
   7927   1.8  christos @cindex look up of disassembler in Python
   7928   1.8  christos @value{GDBN} only records a single disassembler for each architecture,
   7929   1.8  christos and a single global disassembler.  Calling
   7930   1.8  christos @code{register_disassembler} for an architecture, or for the global
   7931   1.8  christos disassembler, will replace any existing disassembler registered for
   7932   1.8  christos that @var{architecture} value.  The previous disassembler is returned.
   7933   1.8  christos 
   7934   1.8  christos If @var{disassembler} is @code{None} then any disassembler currently
   7935   1.8  christos registered for @var{architecture} is deregistered and returned.
   7936   1.8  christos 
   7937   1.8  christos When @value{GDBN} is looking for a disassembler to use, @value{GDBN}
   7938   1.8  christos first looks for an architecture specific disassembler.  If none has
   7939   1.8  christos been registered then @value{GDBN} looks for a global disassembler (one
   7940   1.8  christos registered with @var{architecture} set to @code{None}).  Only one
   7941   1.8  christos disassembler is called to perform disassembly, so, if there is both an
   7942   1.8  christos architecture specific disassembler, and a global disassembler
   7943   1.8  christos registered, it is the architecture specific disassembler that will be
   7944   1.8  christos used.
   7945   1.8  christos 
   7946   1.8  christos @value{GDBN} tracks the architecture specific, and global
   7947   1.8  christos disassemblers separately, so it doesn't matter in which order
   7948   1.8  christos disassemblers are created or registered; an architecture specific
   7949   1.8  christos disassembler, if present, will always be used in preference to a
   7950   1.8  christos global disassembler.
   7951   1.8  christos 
   7952   1.8  christos You can use the @kbd{maint info python-disassemblers} command
   7953   1.8  christos (@pxref{maint info python-disassemblers}) to see which disassemblers
   7954   1.8  christos have been registered.
   7955   1.8  christos @end defun
   7956   1.8  christos 
   7957   1.8  christos @anchor{builtin_disassemble}
   7958   1.8  christos @defun builtin_disassemble (info)
   7959   1.8  christos This function calls back into @value{GDBN}'s builtin disassembler to
   7960   1.8  christos disassemble the instruction identified by @var{info}, an instance, or
   7961   1.8  christos sub-class, of @code{DisassembleInfo}.
   7962   1.8  christos 
   7963   1.8  christos When the builtin disassembler needs to read memory the
   7964   1.8  christos @code{read_memory} method on @var{info} will be called.  By
   7965   1.8  christos sub-classing @code{DisassembleInfo} and overriding the
   7966   1.8  christos @code{read_memory} method, it is possible to intercept calls to
   7967   1.8  christos @code{read_memory} from the builtin disassembler, and to modify the
   7968   1.8  christos values returned.
   7969   1.8  christos 
   7970   1.8  christos It is important to understand that, even when
   7971   1.8  christos @code{DisassembleInfo.read_memory} raises a @code{gdb.MemoryError}, it
   7972   1.8  christos is the internal disassembler itself that reports the memory error to
   7973   1.8  christos @value{GDBN}.  The reason for this is that the disassembler might
   7974   1.8  christos probe memory to see if a byte is readable or not; if the byte can't be
   7975   1.8  christos read then the disassembler may choose not to report an error, but
   7976   1.8  christos instead to disassemble the bytes that it does have available.
   7977   1.8  christos 
   7978   1.8  christos If the builtin disassembler is successful then an instance of
   7979   1.8  christos @code{DisassemblerResult} is returned from @code{builtin_disassemble},
   7980   1.8  christos alternatively, if something goes wrong, an exception will be raised.
   7981   1.8  christos 
   7982   1.8  christos A @code{MemoryError} will be raised if @code{builtin_disassemble} is
   7983   1.8  christos unable to read some memory that is required in order to perform
   7984   1.8  christos disassembly correctly.
   7985   1.8  christos 
   7986   1.8  christos Any exception that is not a @code{MemoryError}, that is raised in a
   7987   1.8  christos call to @code{read_memory}, will pass through
   7988   1.8  christos @code{builtin_disassemble}, and be visible to the caller.
   7989   1.8  christos 
   7990   1.8  christos Finally, there are a few cases where @value{GDBN}'s builtin
   7991   1.8  christos disassembler can fail for reasons that are not covered by
   7992   1.8  christos @code{MemoryError}.  In these cases, a @code{GdbError} will be raised.
   7993   1.8  christos The contents of the exception will be a string describing the problem
   7994   1.8  christos the disassembler encountered.
   7995   1.8  christos @end defun
   7996   1.8  christos 
   7997   1.8  christos Here is an example that registers a global disassembler.  The new
   7998   1.8  christos disassembler invokes the builtin disassembler, and then adds a
   7999   1.8  christos comment, @code{## Comment}, to each line of disassembly output:
   8000   1.8  christos 
   8001   1.8  christos @smallexample
   8002   1.8  christos class ExampleDisassembler(gdb.disassembler.Disassembler):
   8003   1.8  christos     def __init__(self):
   8004   1.8  christos         super().__init__("ExampleDisassembler")
   8005   1.8  christos 
   8006   1.8  christos     def __call__(self, info):
   8007   1.8  christos         result = gdb.disassembler.builtin_disassemble(info)
   8008   1.8  christos         length = result.length
   8009   1.8  christos         text = result.string + "\t## Comment"
   8010   1.8  christos         return gdb.disassembler.DisassemblerResult(length, text)
   8011   1.8  christos 
   8012   1.8  christos gdb.disassembler.register_disassembler(ExampleDisassembler())
   8013   1.8  christos @end smallexample
   8014   1.8  christos 
   8015   1.8  christos The following example creates a sub-class of @code{DisassembleInfo} in
   8016   1.8  christos order to intercept the @code{read_memory} calls, within
   8017   1.8  christos @code{read_memory} any bytes read from memory have the two 4-bit
   8018   1.8  christos nibbles swapped around.  This isn't a very useful adjustment, but
   8019   1.8  christos serves as an example.
   8020   1.8  christos 
   8021   1.8  christos @smallexample
   8022   1.8  christos class MyInfo(gdb.disassembler.DisassembleInfo):
   8023   1.8  christos     def __init__(self, info):
   8024   1.8  christos         super().__init__(info)
   8025   1.8  christos 
   8026   1.8  christos     def read_memory(self, length, offset):
   8027   1.8  christos         buffer = super().read_memory(length, offset)
   8028   1.8  christos         result = bytearray()
   8029   1.8  christos         for b in buffer:
   8030   1.8  christos             v = int.from_bytes(b, 'little')
   8031   1.8  christos             v = (v << 4) & 0xf0 | (v >> 4)
   8032   1.8  christos             result.append(v)
   8033   1.8  christos         return memoryview(result)
   8034   1.8  christos 
   8035   1.8  christos class NibbleSwapDisassembler(gdb.disassembler.Disassembler):
   8036   1.8  christos     def __init__(self):
   8037   1.8  christos         super().__init__("NibbleSwapDisassembler")
   8038   1.8  christos 
   8039   1.8  christos     def __call__(self, info):
   8040   1.8  christos         info = MyInfo(info)
   8041   1.8  christos         return gdb.disassembler.builtin_disassemble(info)
   8042   1.8  christos 
   8043   1.8  christos gdb.disassembler.register_disassembler(NibbleSwapDisassembler())
   8044   1.8  christos @end smallexample
   8045   1.8  christos 
   8046   1.9  christos @node Missing Debug Info In Python
   8047   1.9  christos @subsubsection Missing Debug Info In Python
   8048   1.9  christos @cindex python, handle missing debug information
   8049   1.9  christos 
   8050   1.9  christos When @value{GDBN} encounters a new objfile (@pxref{Objfiles In
   8051   1.9  christos Python}), e.g.@: the primary executable, or any shared libraries used
   8052   1.9  christos by the inferior, @value{GDBN} will attempt to load the corresponding
   8053   1.9  christos debug information for that objfile.  The debug information might be
   8054   1.9  christos found within the objfile itself, or within a separate objfile which
   8055   1.9  christos @value{GDBN} will automatically locate and load.
   8056   1.9  christos 
   8057   1.9  christos Sometimes though, @value{GDBN} might not find any debug information
   8058   1.9  christos for an objfile, in this case the debugging experience will be
   8059   1.9  christos restricted.
   8060   1.9  christos 
   8061   1.9  christos If @value{GDBN} fails to locate any debug information for a particular
   8062   1.9  christos objfile, there is an opportunity for a Python extension to step in.  A
   8063   1.9  christos Python extension can potentially locate the missing debug information
   8064   1.9  christos using some platform- or project-specific steps, and inform
   8065   1.9  christos @value{GDBN} of its location.  Or a Python extension might provide
   8066   1.9  christos some platform- or project-specific advice to the user about how to
   8067   1.9  christos obtain the missing debug information.
   8068   1.9  christos 
   8069   1.9  christos A missing debug information Python extension consists of a handler
   8070   1.9  christos object which has the @code{name} and @code{enabled} attributes, and
   8071   1.9  christos implements the @code{__call__} method.  When @value{GDBN} encounters
   8072   1.9  christos an objfile for which it is unable to find any debug information, it
   8073   1.9  christos invokes the @code{__call__} method.  Full details of how handlers are
   8074   1.9  christos written can be found below.
   8075   1.9  christos 
   8076   1.9  christos @subheading The @code{gdb.missing_debug} Module
   8077   1.9  christos 
   8078   1.9  christos @value{GDBN} comes with a @code{gdb.missing_debug} module which
   8079   1.9  christos contains the following class and global function:
   8080   1.9  christos 
   8081   1.9  christos @deftp{class} gdb.missing_debug.MissingDebugHandler
   8082   1.9  christos 
   8083   1.9  christos @code{MissingDebugHandler} is a base class from which user-created
   8084   1.9  christos handlers can derive, though it is not required that handlers derive
   8085   1.9  christos from this class, so long as any user created handler has the
   8086   1.9  christos @code{name} and @code{enabled} attributes, and implements the
   8087   1.9  christos @code{__call__} method.
   8088   1.9  christos 
   8089   1.9  christos @defun MissingDebugHandler.__init__ (name)
   8090   1.9  christos The @var{name} is a string used to reference this missing debug
   8091   1.9  christos handler within some @value{GDBN} commands.  Valid names consist of the
   8092   1.9  christos characters @code{[-_a-zA-Z0-9]}, creating a handler with an invalid
   8093   1.9  christos name raises a @code{ValueError} exception.
   8094   1.9  christos @end defun
   8095   1.9  christos 
   8096   1.9  christos @defun MissingDebugHandler.__call__ (objfile)
   8097   1.9  christos Sub-classes must override the @code{__call__} method.  The
   8098   1.9  christos @var{objfile} argument will be a @code{gdb.Objfile}, this is the
   8099   1.9  christos objfile for which @value{GDBN} was unable to find any debug
   8100   1.9  christos information.
   8101   1.9  christos 
   8102   1.9  christos The return value from the @code{__call__} method indicates what
   8103   1.9  christos @value{GDBN} should do next.  The possible return values are:
   8104   1.9  christos 
   8105   1.9  christos @itemize @bullet
   8106   1.9  christos @item @code{None}
   8107   1.9  christos 
   8108   1.9  christos This indicates that this handler could not help with @var{objfile},
   8109   1.9  christos @value{GDBN} should call any other registered handlers.
   8110   1.9  christos 
   8111   1.9  christos @item @code{True}
   8112   1.9  christos 
   8113   1.9  christos This indicates that this handler has installed the debug information
   8114   1.9  christos into a location where @value{GDBN} would normally expect to find it
   8115   1.9  christos when looking for separate debug information files (@pxref{Separate
   8116   1.9  christos Debug Files}).  @value{GDBN} will repeat the normal lookup process,
   8117   1.9  christos which should now find the separate debug file.
   8118   1.9  christos 
   8119   1.9  christos If @value{GDBN} still doesn't find the separate debug information file
   8120   1.9  christos after this second attempt, then the Python missing debug information
   8121   1.9  christos handlers are not invoked a second time, this prevents a badly behaved
   8122   1.9  christos handler causing @value{GDBN} to get stuck in a loop.  @value{GDBN}
   8123   1.9  christos will continue without any debug information for @var{objfile}.
   8124   1.9  christos 
   8125   1.9  christos @item @code{False}
   8126   1.9  christos 
   8127   1.9  christos This indicates that this handler has done everything that it intends
   8128   1.9  christos to do with @var{objfile}, but no separate debug information can be
   8129   1.9  christos found.  @value{GDBN} will not call any other registered handlers for
   8130   1.9  christos @var{objfile}.  @value{GDBN} will continue without debugging
   8131   1.9  christos information for @var{objfile}.
   8132   1.9  christos 
   8133   1.9  christos @item A string
   8134   1.9  christos 
   8135   1.9  christos The returned string should contain a filename.  @value{GDBN} will not
   8136   1.9  christos call any further registered handlers, and will instead load the debug
   8137   1.9  christos information from the file identified by the returned filename.
   8138   1.9  christos @end itemize
   8139   1.9  christos 
   8140   1.9  christos Invoking the @code{__call__} method from this base class will raise a
   8141   1.9  christos @code{NotImplementedError} exception.
   8142   1.9  christos @end defun
   8143   1.9  christos 
   8144   1.9  christos @defvar MissingDebugHandler.name
   8145   1.9  christos A read-only attribute which is a string, the name of this handler
   8146   1.9  christos passed to the @code{__init__} method.
   8147   1.9  christos @end defvar
   8148   1.9  christos 
   8149   1.9  christos @defvar MissingDebugHandler.enabled
   8150   1.9  christos A modifiable attribute containing a boolean; when @code{True}, the
   8151   1.9  christos handler is enabled, and will be used by @value{GDBN}.  When
   8152   1.9  christos @code{False}, the handler has been disabled, and will not be used.
   8153   1.9  christos @end defvar
   8154   1.9  christos @end deftp
   8155   1.9  christos 
   8156   1.9  christos @defun gdb.missing_debug.register_handler (locus, handler, replace=@code{False})
   8157   1.9  christos Register a new missing debug handler with @value{GDBN}.
   8158   1.9  christos 
   8159   1.9  christos @var{handler} is an instance of a sub-class of
   8160   1.9  christos @code{MissingDebugHandler}, or at least an instance of an object that
   8161   1.9  christos has the same attributes and methods as @code{MissingDebugHandler}.
   8162   1.9  christos 
   8163   1.9  christos @var{locus} specifies to which handler list to prepend @var{handler}.
   8164   1.9  christos It can be either a @code{gdb.Progspace} (@pxref{Progspaces In Python})
   8165   1.9  christos or @code{None}, in which case the handler is registered globally.  The
   8166   1.9  christos newly registered @var{handler} will be called before any other handler
   8167   1.9  christos from the same locus.  Two handlers in the same locus cannot have the
   8168   1.9  christos same name, an attempt to add a handler with an already existing name
   8169   1.9  christos raises an exception unless @var{replace} is @code{True}, in which case
   8170   1.9  christos the old handler is deleted and the new handler is prepended to the
   8171   1.9  christos selected handler list.
   8172   1.9  christos 
   8173   1.9  christos @value{GDBN} first calls the handlers for the current program space,
   8174   1.9  christos and then the globally registered handlers.  As soon as a handler
   8175   1.9  christos returns a value other than @code{None}, no further handlers are called
   8176   1.9  christos for this objfile.
   8177   1.9  christos @end defun
   8178   1.9  christos 
   8179  1.10  christos @node Missing Objfiles In Python
   8180  1.10  christos @subsubsection Missing Objfiles In Python
   8181  1.10  christos @cindex python, handle missing objfiles
   8182  1.10  christos 
   8183  1.10  christos When @value{GDBN} opens a core file, for example with the
   8184  1.10  christos @kbd{core-file} command (@pxref{core-file command}), @value{GDBN} will
   8185  1.10  christos attempt to load the corresponding executable and shared libraries.
   8186  1.10  christos Often these files can be found on the local machine, but sometimes
   8187  1.10  christos these files cannot be found, in which case the debugging experience
   8188  1.10  christos will be restricted.
   8189  1.10  christos 
   8190  1.10  christos If @value{GDBN} fails to locate a particular file then there is an
   8191  1.10  christos opportunity for a Python extension to step in.  A Python extension can
   8192  1.10  christos potentially locate the missing file using some platform- or
   8193  1.10  christos project-specific steps, and inform @value{GDBN} of its location.  Or a
   8194  1.10  christos Python extension might provide some platform- or project-specific
   8195  1.10  christos advice to the user about how to obtain the missing file.
   8196  1.10  christos 
   8197  1.10  christos A missing-objfile Python extension consists of a handler object which
   8198  1.10  christos has the @code{name} and @code{enabled} attributes, and implements the
   8199  1.10  christos @code{__call__} method.  When @value{GDBN} encounters a situation
   8200  1.10  christos where a file cannot be found, but the build-id (@pxref{build ID}) for
   8201  1.10  christos the missing file is known, then the @code{__call__} method is invoked
   8202  1.10  christos to try and find the file.  Full details of how handlers are written
   8203  1.10  christos can be found below.
   8204  1.10  christos 
   8205  1.10  christos @subheading The @code{gdb.missing_objfile} Module
   8206  1.10  christos 
   8207  1.10  christos @value{GDBN} comes with a @code{gdb.missing_objfile} module which
   8208  1.10  christos contains the following class and global function:
   8209  1.10  christos 
   8210  1.10  christos @deftp{class} gdb.missing_objfile.MissingObjfileHandler
   8211  1.10  christos 
   8212  1.10  christos @code{MissingObjfileHandler} is a base class from which user-created
   8213  1.10  christos handlers can derive, though it is not required that handlers derive
   8214  1.10  christos from this class, so long as any user created handler has the
   8215  1.10  christos @code{name} and @code{enabled} attributes, and implements the
   8216  1.10  christos @code{__call__} method.
   8217  1.10  christos 
   8218  1.10  christos @defun MissingObjfileHandler.__init__ (name)
   8219  1.10  christos The @var{name} is a string used to reference this missing-objfile
   8220  1.10  christos handler within some @value{GDBN} commands.  Valid names consist of the
   8221  1.10  christos characters @samp{[-_a-zA-Z0-9]}, creating a handler with an invalid
   8222  1.10  christos name raises a @code{ValueError} exception.
   8223  1.10  christos @end defun
   8224  1.10  christos 
   8225  1.10  christos @defun MissingObjfileHandler.__call__ (pspace, build_id, filename)
   8226  1.10  christos 
   8227  1.10  christos Sub-classes must override the @code{__call__} method.  The
   8228  1.10  christos @var{pspace} argument will be a @code{gdb.Progspace}
   8229  1.10  christos (@pxref{Progspaces In Python}), this is the program space in which
   8230  1.10  christos @value{GDBN} is looking for the missing file.
   8231  1.10  christos 
   8232  1.10  christos The @var{build_id} argument is a string containing the build-id of the
   8233  1.10  christos file that is missing, this will be in the same format as returned by
   8234  1.10  christos @code{Objfile.build_id} (@pxref{Objfile.build_id}).
   8235  1.10  christos 
   8236  1.10  christos The @var{filename} argument contains the name of the file that
   8237  1.10  christos @value{GDBN} is looking for.  This information is provided to allow
   8238  1.10  christos handlers to generate informative messages for the user.  A handler is
   8239  1.10  christos not required to place the missing file at this location.  There might
   8240  1.10  christos already be a file present at this location, but it might not match the
   8241  1.10  christos required build-id, in which case @value{GDBN} will have ignored it.
   8242  1.10  christos In some limited cases @value{GDBN} might not be able to establish the
   8243  1.10  christos @var{filename} of the file it is searching for, in this case
   8244  1.10  christos @value{GDBN} will use a string @samp{with build-id @var{build_id}} as a
   8245  1.10  christos replacement.
   8246  1.10  christos 
   8247  1.10  christos The return value from the @code{__call__} method indicates what
   8248  1.10  christos @value{GDBN} should do next.  The possible return values are:
   8249  1.10  christos 
   8250  1.10  christos @itemize @bullet
   8251  1.10  christos @item @code{None}
   8252  1.10  christos 
   8253  1.10  christos This indicates that this handler could not locate the missing file and
   8254  1.10  christos @value{GDBN} should call any other registered handlers.
   8255  1.10  christos 
   8256  1.10  christos @item @code{True}
   8257  1.10  christos 
   8258  1.10  christos This indicates that this handler has installed the missing file into a
   8259  1.10  christos location where @value{GDBN} would normally expect to find it.  The
   8260  1.10  christos only location in which @value{GDBN} will look is within the
   8261  1.10  christos @file{.build-id} sub-directory within the @var{debug-file-directory}
   8262  1.10  christos (@pxref{debug-file-directory}).
   8263  1.10  christos 
   8264  1.10  christos @value{GDBN} will repeat the normal lookup process, which should now
   8265  1.10  christos find the previously missing file.
   8266  1.10  christos 
   8267  1.10  christos If @value{GDBN} still doesn't find file after this second attempt,
   8268  1.10  christos then the Python missing-objfile handlers are not invoked a second
   8269  1.10  christos time, this prevents a badly behaved handler causing @value{GDBN} to
   8270  1.10  christos get stuck in a loop.  @value{GDBN} will continue without the missing
   8271  1.10  christos file, though this will degrade the debugging experience.
   8272  1.10  christos 
   8273  1.10  christos @item @code{False}
   8274  1.10  christos 
   8275  1.10  christos This indicates that this handler has done everything that it intends
   8276  1.10  christos to do but the missing file could not be found.  @value{GDBN} will not
   8277  1.10  christos call any other registered handlers to look for the missing file.
   8278  1.10  christos @value{GDBN} will continue without the missing file, though this will
   8279  1.10  christos degrade the debugging experience.
   8280  1.10  christos 
   8281  1.10  christos @item A string
   8282  1.10  christos 
   8283  1.10  christos The returned string should contain a filename.  @value{GDBN} will not
   8284  1.10  christos call any further registered handlers, and will instead use the
   8285  1.10  christos returned filename as the missing file.
   8286  1.10  christos @end itemize
   8287  1.10  christos 
   8288  1.10  christos Invoking the @code{__call__} method from this base class will raise a
   8289  1.10  christos @code{NotImplementedError} exception.
   8290  1.10  christos @end defun
   8291  1.10  christos 
   8292  1.10  christos @defvar MissingObjfileHandler.name
   8293  1.10  christos A read-only attribute which is a string, the name of this handler
   8294  1.10  christos passed to the @code{__init__} method.
   8295  1.10  christos @end defvar
   8296  1.10  christos 
   8297  1.10  christos @defvar MissingObjfileHandler.enabled
   8298  1.10  christos A modifiable attribute containing a boolean; when @code{True}, the
   8299  1.10  christos handler is enabled, and will be used by @value{GDBN}.  When
   8300  1.10  christos @code{False}, the handler has been disabled, and will not be used.
   8301  1.10  christos @end defvar
   8302  1.10  christos @end deftp
   8303  1.10  christos 
   8304  1.10  christos @defun gdb.missing_objfile.register_handler (locus, handler, replace=@code{False})
   8305  1.10  christos Register a new missing-objfile handler with @value{GDBN}.
   8306  1.10  christos 
   8307  1.10  christos @var{handler} is an instance of a sub-class of
   8308  1.10  christos @code{MissingObjfileHandler}, or at least an instance of an object that
   8309  1.10  christos has the same attributes and methods as @code{MissingObjfileHandler}.
   8310  1.10  christos 
   8311  1.10  christos @var{locus} specifies to which handler list to prepend @var{handler}.
   8312  1.10  christos It can be either a @code{gdb.Progspace} (@pxref{Progspaces In Python})
   8313  1.10  christos or @code{None}, in which case the handler is registered globally.  The
   8314  1.10  christos newly registered @var{handler} will be called before any other handler
   8315  1.10  christos from the same locus.  Two handlers in the same locus cannot have the
   8316  1.10  christos same name, an attempt to add a handler with an already existing name
   8317  1.10  christos raises an exception unless @var{replace} is @code{True}, in which case
   8318  1.10  christos the old handler is deleted and the new handler is prepended to the
   8319  1.10  christos selected handler list.
   8320  1.10  christos 
   8321  1.10  christos @value{GDBN} first calls the handlers for the current program space,
   8322  1.10  christos and then the globally registered handlers.  As soon as a handler
   8323  1.10  christos returns a value other than @code{None}, no further handlers are
   8324  1.10  christos called.
   8325  1.10  christos @end defun
   8326  1.10  christos 
   8327  1.10  christos @subheading Managing Missing-Objfile Handlers
   8328  1.10  christos 
   8329  1.10  christos @value{GDBN} defines the following commands to manage registered
   8330  1.10  christos missing-objfile handlers:
   8331  1.10  christos 
   8332  1.10  christos @table @code
   8333  1.10  christos 
   8334  1.10  christos @kindex info missing-objfile-handlers
   8335  1.10  christos @item info missing-objfile-handlers @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   8336  1.10  christos Lists all registered missing-objfile handlers.  Arguments @var{locus}
   8337  1.10  christos and @var{name-regexp} are both optional and can be used to filter
   8338  1.10  christos which handlers are listed.
   8339  1.10  christos 
   8340  1.10  christos The @var{locus} argument should be either @kbd{global},
   8341  1.10  christos @kbd{progspace}, or the name of an object file.  Only handlers
   8342  1.10  christos registered for the specified locus will be listed.
   8343  1.10  christos 
   8344  1.10  christos The @var{name-regexp} is a regular expression used to match against
   8345  1.10  christos handler names.
   8346  1.10  christos 
   8347  1.10  christos @kindex disable missing-objfile-handler
   8348  1.10  christos @item disable missing-objfile-handler @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   8349  1.10  christos The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
   8350  1.10  christos missing-objfile-handlers} above, but instead of listing the matching
   8351  1.10  christos handlers, all of the matching handlers are disabled.  The
   8352  1.10  christos @code{enabled} field of each matching handler is set to @code{False}.
   8353  1.10  christos 
   8354  1.10  christos @kindex enable missing-objfile-handler
   8355  1.10  christos @item enable missing-objfile-handler @r{[} @var{locus} @r{[} @var{name-regexp} @r{]} @r{]}
   8356  1.10  christos The @var{locus} and @var{name-regexp} are interpreted as in @kbd{info
   8357  1.10  christos missing-objfile-handlers} above, but instead of listing the matching
   8358  1.10  christos handlers, all of the matching handlers are enabled.  The
   8359  1.10  christos @code{enabled} field of each matching handler is set to @code{True}.
   8360  1.10  christos @end table
   8361  1.10  christos 
   8362   1.1  christos @node Python Auto-loading
   8363   1.1  christos @subsection Python Auto-loading
   8364   1.1  christos @cindex Python auto-loading
   8365   1.1  christos 
   8366   1.1  christos When a new object file is read (for example, due to the @code{file}
   8367   1.1  christos command, or because the inferior has loaded a shared library),
   8368   1.1  christos @value{GDBN} will look for Python support scripts in several ways:
   8369   1.1  christos @file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section.
   8370   1.1  christos @xref{Auto-loading extensions}.
   8371   1.1  christos 
   8372   1.1  christos The auto-loading feature is useful for supplying application-specific
   8373   1.1  christos debugging commands and scripts.
   8374   1.1  christos 
   8375   1.1  christos Auto-loading can be enabled or disabled,
   8376   1.1  christos and the list of auto-loaded scripts can be printed.
   8377   1.1  christos 
   8378   1.1  christos @table @code
   8379   1.1  christos @anchor{set auto-load python-scripts}
   8380   1.1  christos @kindex set auto-load python-scripts
   8381   1.1  christos @item set auto-load python-scripts [on|off]
   8382   1.1  christos Enable or disable the auto-loading of Python scripts.
   8383   1.1  christos 
   8384   1.1  christos @anchor{show auto-load python-scripts}
   8385   1.1  christos @kindex show auto-load python-scripts
   8386   1.1  christos @item show auto-load python-scripts
   8387   1.1  christos Show whether auto-loading of Python scripts is enabled or disabled.
   8388   1.1  christos 
   8389   1.1  christos @anchor{info auto-load python-scripts}
   8390   1.1  christos @kindex info auto-load python-scripts
   8391   1.1  christos @cindex print list of auto-loaded Python scripts
   8392   1.1  christos @item info auto-load python-scripts [@var{regexp}]
   8393   1.1  christos Print the list of all Python scripts that @value{GDBN} auto-loaded.
   8394   1.1  christos 
   8395   1.1  christos Also printed is the list of Python scripts that were mentioned in
   8396   1.3  christos the @code{.debug_gdb_scripts} section and were either not found
   8397   1.3  christos (@pxref{dotdebug_gdb_scripts section}) or were not auto-loaded due to
   8398   1.3  christos @code{auto-load safe-path} rejection (@pxref{Auto-loading}).
   8399   1.1  christos This is useful because their names are not printed when @value{GDBN}
   8400   1.1  christos tries to load them and fails.  There may be many of them, and printing
   8401   1.1  christos an error message for each one is problematic.
   8402   1.1  christos 
   8403   1.1  christos If @var{regexp} is supplied only Python scripts with matching names are printed.
   8404   1.1  christos 
   8405   1.1  christos Example:
   8406   1.1  christos 
   8407   1.1  christos @smallexample
   8408   1.1  christos (gdb) info auto-load python-scripts
   8409   1.1  christos Loaded Script
   8410   1.1  christos Yes    py-section-script.py
   8411   1.1  christos        full name: /tmp/py-section-script.py
   8412   1.1  christos No     my-foo-pretty-printers.py
   8413   1.1  christos @end smallexample
   8414   1.1  christos @end table
   8415   1.1  christos 
   8416   1.3  christos When reading an auto-loaded file or script, @value{GDBN} sets the
   8417   1.1  christos @dfn{current objfile}.  This is available via the @code{gdb.current_objfile}
   8418   1.1  christos function (@pxref{Objfiles In Python}).  This can be useful for
   8419   1.1  christos registering objfile-specific pretty-printers and frame-filters.
   8420   1.1  christos 
   8421   1.1  christos @node Python modules
   8422   1.1  christos @subsection Python modules
   8423   1.1  christos @cindex python modules
   8424   1.1  christos 
   8425   1.1  christos @value{GDBN} comes with several modules to assist writing Python code.
   8426   1.1  christos 
   8427   1.1  christos @menu
   8428   1.1  christos * gdb.printing::       Building and registering pretty-printers.
   8429   1.1  christos * gdb.types::          Utilities for working with types.
   8430   1.1  christos * gdb.prompt::         Utilities for prompt value substitution.
   8431  1.10  christos * gdb.ptwrite::        Utilities for PTWRITE filter registration.
   8432   1.1  christos @end menu
   8433   1.1  christos 
   8434   1.1  christos @node gdb.printing
   8435   1.1  christos @subsubsection gdb.printing
   8436   1.1  christos @cindex gdb.printing
   8437   1.1  christos 
   8438   1.1  christos This module provides a collection of utilities for working with
   8439   1.1  christos pretty-printers.
   8440   1.1  christos 
   8441   1.1  christos @table @code
   8442   1.1  christos @item PrettyPrinter (@var{name}, @var{subprinters}=None)
   8443   1.1  christos This class specifies the API that makes @samp{info pretty-printer},
   8444   1.1  christos @samp{enable pretty-printer} and @samp{disable pretty-printer} work.
   8445   1.1  christos Pretty-printers should generally inherit from this class.
   8446   1.1  christos 
   8447   1.1  christos @item SubPrettyPrinter (@var{name})
   8448   1.1  christos For printers that handle multiple types, this class specifies the
   8449   1.1  christos corresponding API for the subprinters.
   8450   1.1  christos 
   8451   1.1  christos @item RegexpCollectionPrettyPrinter (@var{name})
   8452   1.1  christos Utility class for handling multiple printers, all recognized via
   8453   1.1  christos regular expressions.
   8454   1.1  christos @xref{Writing a Pretty-Printer}, for an example.
   8455   1.1  christos 
   8456   1.1  christos @item FlagEnumerationPrinter (@var{name})
   8457   1.1  christos A pretty-printer which handles printing of @code{enum} values.  Unlike
   8458   1.1  christos @value{GDBN}'s built-in @code{enum} printing, this printer attempts to
   8459   1.1  christos work properly when there is some overlap between the enumeration
   8460   1.1  christos constants.  The argument @var{name} is the name of the printer and
   8461   1.1  christos also the name of the @code{enum} type to look up.
   8462   1.1  christos 
   8463   1.1  christos @item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
   8464   1.1  christos Register @var{printer} with the pretty-printer list of @var{obj}.
   8465   1.1  christos If @var{replace} is @code{True} then any existing copy of the printer
   8466   1.1  christos is replaced.  Otherwise a @code{RuntimeError} exception is raised
   8467   1.1  christos if a printer with the same name already exists.
   8468   1.1  christos @end table
   8469   1.1  christos 
   8470   1.1  christos @node gdb.types
   8471   1.1  christos @subsubsection gdb.types
   8472   1.1  christos @cindex gdb.types
   8473   1.1  christos 
   8474   1.1  christos This module provides a collection of utilities for working with
   8475   1.1  christos @code{gdb.Type} objects.
   8476   1.1  christos 
   8477   1.1  christos @table @code
   8478   1.1  christos @item get_basic_type (@var{type})
   8479   1.1  christos Return @var{type} with const and volatile qualifiers stripped,
   8480   1.1  christos and with typedefs and C@t{++} references converted to the underlying type.
   8481   1.1  christos 
   8482   1.1  christos C@t{++} example:
   8483   1.1  christos 
   8484   1.1  christos @smallexample
   8485   1.1  christos typedef const int const_int;
   8486   1.1  christos const_int foo (3);
   8487   1.1  christos const_int& foo_ref (foo);
   8488   1.1  christos int main () @{ return 0; @}
   8489   1.1  christos @end smallexample
   8490   1.1  christos 
   8491   1.1  christos Then in gdb:
   8492   1.1  christos 
   8493   1.1  christos @smallexample
   8494   1.1  christos (gdb) start
   8495   1.1  christos (gdb) python import gdb.types
   8496   1.1  christos (gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
   8497   1.1  christos (gdb) python print gdb.types.get_basic_type(foo_ref.type)
   8498   1.1  christos int
   8499   1.1  christos @end smallexample
   8500   1.1  christos 
   8501   1.1  christos @item has_field (@var{type}, @var{field})
   8502   1.1  christos Return @code{True} if @var{type}, assumed to be a type with fields
   8503   1.1  christos (e.g., a structure or union), has field @var{field}.
   8504   1.1  christos 
   8505   1.1  christos @item make_enum_dict (@var{enum_type})
   8506   1.1  christos Return a Python @code{dictionary} type produced from @var{enum_type}.
   8507   1.1  christos 
   8508   1.1  christos @item deep_items (@var{type})
   8509   1.1  christos Returns a Python iterator similar to the standard
   8510   1.1  christos @code{gdb.Type.iteritems} method, except that the iterator returned
   8511   1.1  christos by @code{deep_items} will recursively traverse anonymous struct or
   8512   1.1  christos union fields.  For example:
   8513   1.1  christos 
   8514   1.1  christos @smallexample
   8515   1.1  christos struct A
   8516   1.1  christos @{
   8517   1.1  christos     int a;
   8518   1.1  christos     union @{
   8519   1.1  christos         int b0;
   8520   1.1  christos         int b1;
   8521   1.1  christos     @};
   8522   1.1  christos @};
   8523   1.1  christos @end smallexample
   8524   1.1  christos 
   8525   1.1  christos @noindent
   8526   1.1  christos Then in @value{GDBN}:
   8527   1.1  christos @smallexample
   8528   1.1  christos (@value{GDBP}) python import gdb.types
   8529   1.1  christos (@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
   8530   1.1  christos (@value{GDBP}) python print struct_a.keys ()
   8531   1.1  christos @{['a', '']@}
   8532   1.1  christos (@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
   8533   1.1  christos @{['a', 'b0', 'b1']@}
   8534   1.1  christos @end smallexample
   8535   1.1  christos 
   8536   1.1  christos @item get_type_recognizers ()
   8537   1.1  christos Return a list of the enabled type recognizers for the current context.
   8538   1.1  christos This is called by @value{GDBN} during the type-printing process
   8539   1.1  christos (@pxref{Type Printing API}).
   8540   1.1  christos 
   8541   1.1  christos @item apply_type_recognizers (recognizers, type_obj)
   8542   1.1  christos Apply the type recognizers, @var{recognizers}, to the type object
   8543   1.1  christos @var{type_obj}.  If any recognizer returns a string, return that
   8544   1.1  christos string.  Otherwise, return @code{None}.  This is called by
   8545   1.1  christos @value{GDBN} during the type-printing process (@pxref{Type Printing
   8546   1.1  christos API}).
   8547   1.1  christos 
   8548   1.1  christos @item register_type_printer (locus, printer)
   8549   1.1  christos This is a convenience function to register a type printer
   8550   1.1  christos @var{printer}.  The printer must implement the type printer protocol.
   8551   1.1  christos The @var{locus} argument is either a @code{gdb.Objfile}, in which case
   8552   1.1  christos the printer is registered with that objfile; a @code{gdb.Progspace},
   8553   1.1  christos in which case the printer is registered with that progspace; or
   8554   1.1  christos @code{None}, in which case the printer is registered globally.
   8555   1.1  christos 
   8556   1.1  christos @item TypePrinter
   8557   1.1  christos This is a base class that implements the type printer protocol.  Type
   8558   1.1  christos printers are encouraged, but not required, to derive from this class.
   8559   1.1  christos It defines a constructor:
   8560   1.1  christos 
   8561   1.1  christos @defmethod TypePrinter __init__ (self, name)
   8562   1.1  christos Initialize the type printer with the given name.  The new printer
   8563   1.1  christos starts in the enabled state.
   8564   1.1  christos @end defmethod
   8565   1.1  christos 
   8566   1.1  christos @end table
   8567   1.1  christos 
   8568   1.1  christos @node gdb.prompt
   8569   1.1  christos @subsubsection gdb.prompt
   8570   1.1  christos @cindex gdb.prompt
   8571   1.1  christos 
   8572   1.1  christos This module provides a method for prompt value-substitution.
   8573   1.1  christos 
   8574   1.1  christos @table @code
   8575   1.1  christos @item substitute_prompt (@var{string})
   8576   1.1  christos Return @var{string} with escape sequences substituted by values.  Some
   8577   1.1  christos escape sequences take arguments.  You can specify arguments inside
   8578   1.1  christos ``@{@}'' immediately following the escape sequence.
   8579   1.1  christos 
   8580   1.1  christos The escape sequences you can pass to this function are:
   8581   1.1  christos 
   8582   1.1  christos @table @code
   8583   1.1  christos @item \\
   8584   1.1  christos Substitute a backslash.
   8585   1.1  christos @item \e
   8586   1.1  christos Substitute an ESC character.
   8587   1.1  christos @item \f
   8588   1.1  christos Substitute the selected frame; an argument names a frame parameter.
   8589   1.1  christos @item \n
   8590   1.1  christos Substitute a newline.
   8591   1.1  christos @item \p
   8592   1.1  christos Substitute a parameter's value; the argument names the parameter.
   8593   1.1  christos @item \r
   8594   1.1  christos Substitute a carriage return.
   8595   1.1  christos @item \t
   8596   1.1  christos Substitute the selected thread; an argument names a thread parameter.
   8597   1.1  christos @item \v
   8598   1.1  christos Substitute the version of GDB.
   8599   1.1  christos @item \w
   8600   1.1  christos Substitute the current working directory.
   8601   1.1  christos @item \[
   8602   1.1  christos Begin a sequence of non-printing characters.  These sequences are
   8603   1.1  christos typically used with the ESC character, and are not counted in the string
   8604   1.1  christos length.  Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
   8605   1.1  christos blue-colored ``(gdb)'' prompt where the length is five.
   8606   1.1  christos @item \]
   8607   1.1  christos End a sequence of non-printing characters.
   8608   1.1  christos @end table
   8609   1.1  christos 
   8610   1.1  christos For example:
   8611   1.1  christos 
   8612   1.1  christos @smallexample
   8613   1.7  christos substitute_prompt ("frame: \f, args: \p@{print frame-arguments@}")
   8614   1.1  christos @end smallexample
   8615   1.1  christos 
   8616   1.1  christos @exdent will return the string:
   8617   1.1  christos 
   8618   1.1  christos @smallexample
   8619   1.7  christos "frame: main, args: scalars"
   8620   1.1  christos @end smallexample
   8621   1.1  christos @end table
   8622  1.10  christos 
   8623  1.10  christos @node gdb.ptwrite
   8624  1.10  christos @subsubsection gdb.ptwrite
   8625  1.10  christos @cindex gdb.ptwrite
   8626  1.10  christos 
   8627  1.10  christos This module provides additional functionality for recording programs that
   8628  1.10  christos make use of the @code{PTWRITE} instruction.  @code{PTWRITE} is a x86
   8629  1.10  christos instruction that allows to write values into the Intel Processor Trace
   8630  1.10  christos (@pxref{Process Record and Replay}).
   8631  1.10  christos The @value{NGCC} intrinsics for it are:
   8632  1.10  christos @smallexample
   8633  1.10  christos void _ptwrite32 (unsigned int a)
   8634  1.10  christos void _ptwrite64 (unsigned __int64 a)
   8635  1.10  christos @end smallexample
   8636  1.10  christos 
   8637  1.10  christos If an inferior uses the instruction, @value{GDBN} by default inserts the
   8638  1.10  christos raw payload value as auxiliary information into the execution history.
   8639  1.10  christos Auxiliary information is by default printed during
   8640  1.10  christos @code{record instruction-history}, @code{record function-call-history},
   8641  1.10  christos and all stepping commands, and is accessible in Python as a
   8642  1.10  christos @code{RecordAuxiliary} object (@pxref{Recordings In Python}).
   8643  1.10  christos 
   8644  1.10  christos @exdent Sample program:
   8645  1.10  christos @smallexample
   8646  1.10  christos @group
   8647  1.10  christos #include <immintrin.h>
   8648  1.10  christos 
   8649  1.10  christos void
   8650  1.10  christos ptwrite64 (unsigned long long value)
   8651  1.10  christos @{
   8652  1.10  christos   _ptwrite64 (value);
   8653  1.10  christos @}
   8654  1.10  christos @end group
   8655  1.10  christos 
   8656  1.10  christos @group
   8657  1.10  christos int
   8658  1.10  christos main (void)
   8659  1.10  christos @{
   8660  1.10  christos   ptwrite64 (0x42);
   8661  1.10  christos   return 0; /* break here.  */
   8662  1.10  christos @}
   8663  1.10  christos @end group
   8664  1.10  christos @end smallexample
   8665  1.10  christos 
   8666  1.10  christos 
   8667  1.10  christos @exdent @value{GDBN} output after recording the sample program in pt format:
   8668  1.10  christos @smallexample
   8669  1.10  christos @group
   8670  1.10  christos (gdb) record instruction-history 12,14
   8671  1.10  christos 12         0x0040074c <ptwrite64+16>:   ptwrite %rbx
   8672  1.10  christos 13           [0x42]
   8673  1.10  christos 14         0x00400751 <ptwrite64+21>:   mov -0x8(%rbp),%rbx
   8674  1.10  christos (gdb) record function-call-history
   8675  1.10  christos 1       main
   8676  1.10  christos 2       ptwrite64
   8677  1.10  christos           [0x42]
   8678  1.10  christos 3       main
   8679  1.10  christos @end group
   8680  1.10  christos @end smallexample
   8681  1.10  christos 
   8682  1.10  christos The @code{gdb.ptwrite} module allows customizing the default output of
   8683  1.10  christos @code{PTWRITE} auxiliary information.  A custom Python function can be
   8684  1.10  christos registered as the @code{PTWRITE} filter function.  This function will be
   8685  1.10  christos called with the @code{PTWRITE} payload and PC as arguments during trace
   8686  1.10  christos decoding.  The function can return a string, which will be printed by
   8687  1.10  christos @value{GDBN} during the aforementioned commands, or @code{None}, resulting
   8688  1.10  christos in no output.  To register such a filter function, the user needs to
   8689  1.10  christos provide a filter factory function, which returns a new filter function
   8690  1.10  christos object to be called by @value{GDBN}.
   8691  1.10  christos 
   8692  1.10  christos @findex gdb.ptwrite.register_filter_factory
   8693  1.10  christos @defun register_filter_factory (filter_factory)
   8694  1.10  christos Used to register the @code{PTWRITE} filter factory.  This filter factory can
   8695  1.10  christos be any callable object that accepts one argument, the current thread as
   8696  1.10  christos a @code{gdb.InferiorThread}.
   8697  1.10  christos It can return None or a callable.  This callable is the @code{PTWRITE} filter
   8698  1.10  christos function for the specified thread.  If @code{None} is returned by the factory
   8699  1.10  christos function, the default auxiliary information will be printed.
   8700  1.10  christos @end defun
   8701  1.10  christos 
   8702  1.10  christos @findex gdb.ptwrite.get_filter
   8703  1.10  christos @defun get_filter ()
   8704  1.10  christos Return the currently active @code{PTWRITE} filter function.
   8705  1.10  christos @end defun
   8706  1.10  christos 
   8707  1.10  christos An example:
   8708  1.10  christos 
   8709  1.10  christos @smallexample
   8710  1.10  christos @group
   8711  1.10  christos (gdb) python-interactive
   8712  1.10  christos >>> class my_filter():
   8713  1.10  christos ...    def __init__(self):
   8714  1.10  christos ...        self.var = 0
   8715  1.10  christos ...    def __call__(self, payload, ip):
   8716  1.10  christos ...        self.var += 1
   8717  1.10  christos ...        return f"counter: @{self.var@}, ip: @{ip:#x@}"
   8718  1.10  christos ...
   8719  1.10  christos >>> def my_filter_factory(thread):
   8720  1.10  christos ...    if thread.global_num == 1:
   8721  1.10  christos ...        return my_filter()
   8722  1.10  christos ...    else:
   8723  1.10  christos ...        return None
   8724  1.10  christos ...
   8725  1.10  christos >>> import gdb.ptwrite
   8726  1.10  christos >>> gdb.ptwrite.register_filter_factory(my_filter_factory)
   8727  1.10  christos >>>
   8728  1.10  christos @end group
   8729  1.10  christos 
   8730  1.10  christos @group
   8731  1.10  christos (gdb) record function-call-history 59,64
   8732  1.10  christos 59      pthread_create@@GLIBC_2.2.5
   8733  1.10  christos 60      job()
   8734  1.10  christos 61      task(void*)
   8735  1.10  christos 62      ptwrite64(unsigned long)
   8736  1.10  christos           [counter: 1, ip: 0x401156]
   8737  1.10  christos 63      task(void*)
   8738  1.10  christos 64      ptwrite32(unsigned int)
   8739  1.10  christos           [counter: 2, ip: 0x40116c]
   8740  1.10  christos @end group
   8741  1.10  christos 
   8742  1.10  christos @group
   8743  1.10  christos (gdb) info threads
   8744  1.10  christos * 1    Thread 0x7ffff7fd8740 (LWP 25796) "ptw_threads" task ()
   8745  1.10  christos     at bin/ptwrite/ptw_threads.c:45
   8746  1.10  christos   2    Thread 0x7ffff6eb8700 (LWP 25797) "ptw_threads" task ()
   8747  1.10  christos     at bin/ptwrite/ptw_threads.c:45
   8748  1.10  christos @end group
   8749  1.10  christos 
   8750  1.10  christos @group
   8751  1.10  christos (gdb) thread 2
   8752  1.10  christos [Switching to thread 2 (Thread 0x7ffff6eb8700 (LWP 25797))]
   8753  1.10  christos #0  task (arg=0x0) at ptwrite_threads.c:45
   8754  1.10  christos 45        return NULL;
   8755  1.10  christos @end group
   8756  1.10  christos 
   8757  1.10  christos @group
   8758  1.10  christos (gdb) record function-call-history 10,14
   8759  1.10  christos 10    start_thread
   8760  1.10  christos 11    task(void*)
   8761  1.10  christos 12    ptwrite64(unsigned long)
   8762  1.10  christos         [0x42]
   8763  1.10  christos 13    task(void*)
   8764  1.10  christos 14    ptwrite32(unsigned int)
   8765  1.10  christos         [0x43]
   8766  1.10  christos @end group
   8767  1.10  christos @end smallexample
   8768  1.10  christos 
   8769  1.10  christos This @value{GDBN} feature is dependent on hardware and operating system
   8770  1.10  christos support and requires the Intel Processor Trace decoder library in version
   8771  1.10  christos 2.0.0 or newer.
   8772