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