python.texi revision 1.10 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