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