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