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