Use function_view in cli-script.c
[deliverable/binutils-gdb.git] / gdb / doc / python.texi
CommitLineData
e2882c85 1@c Copyright (C) 2008-2018 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
91Type python script
92End with a line saying just "end".
93>print 23
94>end
9523
96@end smallexample
97
98@kindex set python print-stack
99@item set python print-stack
100By default, @value{GDBN} will print only the message component of a
101Python exception when an error occurs in a Python script. This can be
102controlled using @code{set python print-stack}: if @code{full}, then
103full Python stack printing is enabled; if @code{none}, then Python stack
104and message printing is disabled; if @code{message}, the default, only
105the message component of the error is printed.
106@end table
107
108It is also possible to execute a Python script from the @value{GDBN}
109interpreter:
110
111@table @code
112@item source @file{script-name}
113The script name must end with @samp{.py} and @value{GDBN} must be configured
114to recognize the script language based on filename extension using
115the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
116
117@item python execfile ("script-name")
118This method is based on the @code{execfile} Python built-in function,
119and thus is always available.
120@end table
121
122@node Python API
123@subsection Python API
124@cindex python api
125@cindex programming in python
126
127You can get quick online help for @value{GDBN}'s Python API by issuing
128the command @w{@kbd{python help (gdb)}}.
129
130Functions and methods which have two or more optional arguments allow
131them to be specified using keyword syntax. This allows passing some
132optional arguments while skipping others. Example:
133@w{@code{gdb.some_function ('foo', bar = 1, baz = 2)}}.
134
135@menu
136* Basic Python:: Basic Python Functions.
137* Exception Handling:: How Python exceptions are translated.
138* Values From Inferior:: Python representation of values.
139* Types In Python:: Python representation of types.
140* Pretty Printing API:: Pretty-printing values.
141* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
142* Writing a Pretty-Printer:: Writing a Pretty-Printer.
143* Type Printing API:: Pretty-printing types.
144* Frame Filter API:: Filtering Frames.
145* Frame Decorator API:: Decorating Frames.
146* Writing a Frame Filter:: Writing a Frame Filter.
d11916aa 147* Unwinding Frames in Python:: Writing frame unwinder.
0c6e92a5
SC
148* Xmethods In Python:: Adding and replacing methods of C++ classes.
149* Xmethod API:: Xmethod types.
150* Writing an Xmethod:: Writing an xmethod.
329baa95
DE
151* Inferiors In Python:: Python representation of inferiors (processes)
152* Events In Python:: Listening for events from @value{GDBN}.
153* Threads In Python:: Accessing inferior threads from Python.
0a0faf9f 154* Recordings In Python:: Accessing recordings from Python.
329baa95
DE
155* Commands In Python:: Implementing new commands in Python.
156* Parameters In Python:: Adding new @value{GDBN} parameters.
157* Functions In Python:: Writing new convenience functions.
158* Progspaces In Python:: Program spaces.
159* Objfiles In Python:: Object files.
160* Frames In Python:: Accessing inferior stack frames from Python.
161* Blocks In Python:: Accessing blocks from Python.
162* Symbols In Python:: Python representation of symbols.
163* Symbol Tables In Python:: Python representation of symbol tables.
164* Line Tables In Python:: Python representation of line tables.
165* Breakpoints In Python:: Manipulating breakpoints using Python.
166* Finish Breakpoints in Python:: Setting Breakpoints on function return
167 using Python.
168* Lazy Strings In Python:: Python representation of lazy strings.
169* Architectures In Python:: Python representation of architectures.
170@end menu
171
172@node Basic Python
173@subsubsection Basic Python
174
175@cindex python stdout
176@cindex python pagination
177At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
178@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
179A Python program which outputs to one of these streams may have its
180output interrupted by the user (@pxref{Screen Size}). In this
181situation, a Python @code{KeyboardInterrupt} exception is thrown.
182
183Some care must be taken when writing Python code to run in
184@value{GDBN}. Two things worth noting in particular:
185
186@itemize @bullet
187@item
188@value{GDBN} install handlers for @code{SIGCHLD} and @code{SIGINT}.
189Python code must not override these, or even change the options using
190@code{sigaction}. If your program changes the handling of these
191signals, @value{GDBN} will most likely stop working correctly. Note
192that it is unfortunately common for GUI toolkits to install a
193@code{SIGCHLD} handler.
194
195@item
196@value{GDBN} takes care to mark its internal file descriptors as
197close-on-exec. However, this cannot be done in a thread-safe way on
198all platforms. Your Python programs should be aware of this and
199should both create new file descriptors with the close-on-exec flag
200set and arrange to close unneeded file descriptors before starting a
201child process.
202@end itemize
203
204@cindex python functions
205@cindex python module
206@cindex gdb module
207@value{GDBN} introduces a new Python module, named @code{gdb}. All
208methods and classes added by @value{GDBN} are placed in this module.
209@value{GDBN} automatically @code{import}s the @code{gdb} module for
210use in all scripts evaluated by the @code{python} command.
211
212@findex gdb.PYTHONDIR
213@defvar gdb.PYTHONDIR
214A string containing the python directory (@pxref{Python}).
215@end defvar
216
217@findex gdb.execute
218@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
219Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
220If a GDB exception happens while @var{command} runs, it is
221translated as described in @ref{Exception Handling,,Exception Handling}.
222
697aa1b7 223The @var{from_tty} flag specifies whether @value{GDBN} ought to consider this
329baa95
DE
224command as having originated from the user invoking it interactively.
225It must be a boolean value. If omitted, it defaults to @code{False}.
226
227By default, any output produced by @var{command} is sent to
b3ce5e5f
DE
228@value{GDBN}'s standard output (and to the log output if logging is
229turned on). If the @var{to_string} parameter is
329baa95
DE
230@code{True}, then output will be collected by @code{gdb.execute} and
231returned as a string. The default is @code{False}, in which case the
232return value is @code{None}. If @var{to_string} is @code{True}, the
233@value{GDBN} virtual terminal will be temporarily set to unlimited width
234and height, and its pagination will be disabled; @pxref{Screen Size}.
235@end defun
236
237@findex gdb.breakpoints
238@defun gdb.breakpoints ()
239Return a sequence holding all of @value{GDBN}'s breakpoints.
1957f6b8
TT
240@xref{Breakpoints In Python}, for more information. In @value{GDBN}
241version 7.11 and earlier, this function returned @code{None} if there
242were no breakpoints. This peculiarity was subsequently fixed, and now
243@code{gdb.breakpoints} returns an empty sequence in this case.
329baa95
DE
244@end defun
245
d8ae99a7
PM
246@defun gdb.rbreak (regex @r{[}, minsyms @r{[}, throttle, @r{[}, symtabs @r{]]]})
247Return a Python list holding a collection of newly set
248@code{gdb.Breakpoint} objects matching function names defined by the
249@var{regex} pattern. If the @var{minsyms} keyword is @code{True}, all
250system functions (those not explicitly defined in the inferior) will
251also be included in the match. The @var{throttle} keyword takes an
252integer that defines the maximum number of pattern matches for
253functions matched by the @var{regex} pattern. If the number of
254matches exceeds the integer value of @var{throttle}, a
255@code{RuntimeError} will be raised and no breakpoints will be created.
256If @var{throttle} is not defined then there is no imposed limit on the
257maximum number of matches and breakpoints to be created. The
258@var{symtabs} keyword takes a Python iterable that yields a collection
259of @code{gdb.Symtab} objects and will restrict the search to those
260functions only contained within the @code{gdb.Symtab} objects.
261@end defun
262
329baa95
DE
263@findex gdb.parameter
264@defun gdb.parameter (parameter)
697aa1b7
EZ
265Return the value of a @value{GDBN} @var{parameter} given by its name,
266a string; the parameter name string may contain spaces if the parameter has a
267multi-part name. For example, @samp{print object} is a valid
268parameter name.
329baa95
DE
269
270If the named parameter does not exist, this function throws a
271@code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
272parameter's value is converted to a Python value of the appropriate
273type, and returned.
274@end defun
275
276@findex gdb.history
277@defun gdb.history (number)
278Return a value from @value{GDBN}'s value history (@pxref{Value
697aa1b7 279History}). The @var{number} argument indicates which history element to return.
329baa95
DE
280If @var{number} is negative, then @value{GDBN} will take its absolute value
281and count backward from the last element (i.e., the most recent element) to
282find the value to return. If @var{number} is zero, then @value{GDBN} will
283return the most recent element. If the element specified by @var{number}
284doesn't exist in the value history, a @code{gdb.error} exception will be
285raised.
286
287If no exception is raised, the return value is always an instance of
288@code{gdb.Value} (@pxref{Values From Inferior}).
289@end defun
290
291@findex gdb.parse_and_eval
292@defun gdb.parse_and_eval (expression)
697aa1b7
EZ
293Parse @var{expression}, which must be a string, as an expression in
294the current language, evaluate it, and return the result as a
295@code{gdb.Value}.
329baa95
DE
296
297This function can be useful when implementing a new command
298(@pxref{Commands In Python}), as it provides a way to parse the
299command's argument as an expression. It is also useful simply to
300compute values, for example, it is the only way to get the value of a
301convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
302@end defun
303
304@findex gdb.find_pc_line
305@defun gdb.find_pc_line (pc)
306Return the @code{gdb.Symtab_and_line} object corresponding to the
307@var{pc} value. @xref{Symbol Tables In Python}. If an invalid
308value of @var{pc} is passed as an argument, then the @code{symtab} and
309@code{line} attributes of the returned @code{gdb.Symtab_and_line} object
310will be @code{None} and 0 respectively.
311@end defun
312
313@findex gdb.post_event
314@defun gdb.post_event (event)
315Put @var{event}, a callable object taking no arguments, into
316@value{GDBN}'s internal event queue. This callable will be invoked at
317some later point, during @value{GDBN}'s event processing. Events
318posted using @code{post_event} will be run in the order in which they
319were posted; however, there is no way to know when they will be
320processed relative to other events inside @value{GDBN}.
321
322@value{GDBN} is not thread-safe. If your Python program uses multiple
323threads, you must be careful to only call @value{GDBN}-specific
b3ce5e5f 324functions in the @value{GDBN} thread. @code{post_event} ensures
329baa95
DE
325this. For example:
326
327@smallexample
328(@value{GDBP}) python
329>import threading
330>
331>class Writer():
332> def __init__(self, message):
333> self.message = message;
334> def __call__(self):
335> gdb.write(self.message)
336>
337>class MyThread1 (threading.Thread):
338> def run (self):
339> gdb.post_event(Writer("Hello "))
340>
341>class MyThread2 (threading.Thread):
342> def run (self):
343> gdb.post_event(Writer("World\n"))
344>
345>MyThread1().start()
346>MyThread2().start()
347>end
348(@value{GDBP}) Hello World
349@end smallexample
350@end defun
351
352@findex gdb.write
353@defun gdb.write (string @r{[}, stream{]})
354Print a string to @value{GDBN}'s paginated output stream. The
355optional @var{stream} determines the stream to print to. The default
356stream is @value{GDBN}'s standard output stream. Possible stream
357values are:
358
359@table @code
360@findex STDOUT
361@findex gdb.STDOUT
362@item gdb.STDOUT
363@value{GDBN}'s standard output stream.
364
365@findex STDERR
366@findex gdb.STDERR
367@item gdb.STDERR
368@value{GDBN}'s standard error stream.
369
370@findex STDLOG
371@findex gdb.STDLOG
372@item gdb.STDLOG
373@value{GDBN}'s log stream (@pxref{Logging Output}).
374@end table
375
376Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
377call this function and will automatically direct the output to the
378relevant stream.
379@end defun
380
381@findex gdb.flush
382@defun gdb.flush ()
383Flush the buffer of a @value{GDBN} paginated stream so that the
384contents are displayed immediately. @value{GDBN} will flush the
385contents of a stream automatically when it encounters a newline in the
386buffer. The optional @var{stream} determines the stream to flush. The
387default stream is @value{GDBN}'s standard output stream. Possible
388stream values are:
389
390@table @code
391@findex STDOUT
392@findex gdb.STDOUT
393@item gdb.STDOUT
394@value{GDBN}'s standard output stream.
395
396@findex STDERR
397@findex gdb.STDERR
398@item gdb.STDERR
399@value{GDBN}'s standard error stream.
400
401@findex STDLOG
402@findex gdb.STDLOG
403@item gdb.STDLOG
404@value{GDBN}'s log stream (@pxref{Logging Output}).
405
406@end table
407
408Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
409call this function for the relevant stream.
410@end defun
411
412@findex gdb.target_charset
413@defun gdb.target_charset ()
414Return the name of the current target character set (@pxref{Character
415Sets}). This differs from @code{gdb.parameter('target-charset')} in
416that @samp{auto} is never returned.
417@end defun
418
419@findex gdb.target_wide_charset
420@defun gdb.target_wide_charset ()
421Return the name of the current target wide character set
422(@pxref{Character Sets}). This differs from
423@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
424never returned.
425@end defun
426
427@findex gdb.solib_name
428@defun gdb.solib_name (address)
429Return the name of the shared library holding the given @var{address}
430as a string, or @code{None}.
431@end defun
432
433@findex gdb.decode_line
434@defun gdb.decode_line @r{[}expression@r{]}
435Return locations of the line specified by @var{expression}, or of the
436current line if no argument was given. This function returns a Python
437tuple containing two elements. The first element contains a string
438holding any unparsed section of @var{expression} (or @code{None} if
439the expression has been fully parsed). The second element contains
440either @code{None} or another tuple that contains all the locations
441that match the expression represented as @code{gdb.Symtab_and_line}
442objects (@pxref{Symbol Tables In Python}). If @var{expression} is
443provided, it is decoded the way that @value{GDBN}'s inbuilt
444@code{break} or @code{edit} commands do (@pxref{Specify Location}).
445@end defun
446
447@defun gdb.prompt_hook (current_prompt)
448@anchor{prompt_hook}
449
450If @var{prompt_hook} is callable, @value{GDBN} will call the method
451assigned to this operation before a prompt is displayed by
452@value{GDBN}.
453
454The parameter @code{current_prompt} contains the current @value{GDBN}
455prompt. This method must return a Python string, or @code{None}. If
456a string is returned, the @value{GDBN} prompt will be set to that
457string. If @code{None} is returned, @value{GDBN} will continue to use
458the current prompt.
459
460Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
461such as those used by readline for command input, and annotation
462related prompts are prohibited from being changed.
463@end defun
464
465@node Exception Handling
466@subsubsection Exception Handling
467@cindex python exceptions
468@cindex exceptions, python
469
470When executing the @code{python} command, Python exceptions
471uncaught within the Python code are translated to calls to
472@value{GDBN} error-reporting mechanism. If the command that called
473@code{python} does not handle the error, @value{GDBN} will
474terminate it and print an error message containing the Python
475exception name, the associated value, and the Python call stack
476backtrace at the point where the exception was raised. Example:
477
478@smallexample
479(@value{GDBP}) python print foo
480Traceback (most recent call last):
481 File "<string>", line 1, in <module>
482NameError: name 'foo' is not defined
483@end smallexample
484
485@value{GDBN} errors that happen in @value{GDBN} commands invoked by
486Python code are converted to Python exceptions. The type of the
487Python exception depends on the error.
488
489@ftable @code
490@item gdb.error
491This is the base class for most exceptions generated by @value{GDBN}.
492It is derived from @code{RuntimeError}, for compatibility with earlier
493versions of @value{GDBN}.
494
495If an error occurring in @value{GDBN} does not fit into some more
496specific category, then the generated exception will have this type.
497
498@item gdb.MemoryError
499This is a subclass of @code{gdb.error} which is thrown when an
500operation tried to access invalid memory in the inferior.
501
502@item KeyboardInterrupt
503User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
504prompt) is translated to a Python @code{KeyboardInterrupt} exception.
505@end ftable
506
507In all cases, your exception handler will see the @value{GDBN} error
508message as its value and the Python call stack backtrace at the Python
509statement closest to where the @value{GDBN} error occured as the
510traceback.
511
512@findex gdb.GdbError
513When implementing @value{GDBN} commands in Python via @code{gdb.Command},
514it is useful to be able to throw an exception that doesn't cause a
515traceback to be printed. For example, the user may have invoked the
516command incorrectly. Use the @code{gdb.GdbError} exception
517to handle this case. Example:
518
519@smallexample
520(gdb) python
521>class HelloWorld (gdb.Command):
522> """Greet the whole world."""
523> def __init__ (self):
524> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
525> def invoke (self, args, from_tty):
526> argv = gdb.string_to_argv (args)
527> if len (argv) != 0:
528> raise gdb.GdbError ("hello-world takes no arguments")
529> print "Hello, World!"
530>HelloWorld ()
531>end
532(gdb) hello-world 42
533hello-world takes no arguments
534@end smallexample
535
536@node Values From Inferior
537@subsubsection Values From Inferior
538@cindex values from inferior, with Python
539@cindex python, working with values from inferior
540
541@cindex @code{gdb.Value}
542@value{GDBN} provides values it obtains from the inferior program in
543an object of type @code{gdb.Value}. @value{GDBN} uses this object
544for its internal bookkeeping of the inferior's values, and for
545fetching values when necessary.
546
547Inferior values that are simple scalars can be used directly in
548Python expressions that are valid for the value's data type. Here's
549an example for an integer or floating-point value @code{some_val}:
550
551@smallexample
552bar = some_val + 2
553@end smallexample
554
555@noindent
556As result of this, @code{bar} will also be a @code{gdb.Value} object
f7bd0f78
SC
557whose values are of the same type as those of @code{some_val}. Valid
558Python operations can also be performed on @code{gdb.Value} objects
559representing a @code{struct} or @code{class} object. For such cases,
560the overloaded operator (if present), is used to perform the operation.
561For example, if @code{val1} and @code{val2} are @code{gdb.Value} objects
562representing instances of a @code{class} which overloads the @code{+}
563operator, then one can use the @code{+} operator in their Python script
564as follows:
565
566@smallexample
567val3 = val1 + val2
568@end smallexample
569
570@noindent
571The result of the operation @code{val3} is also a @code{gdb.Value}
572object corresponding to the value returned by the overloaded @code{+}
573operator. In general, overloaded operators are invoked for the
574following operations: @code{+} (binary addition), @code{-} (binary
575subtraction), @code{*} (multiplication), @code{/}, @code{%}, @code{<<},
576@code{>>}, @code{|}, @code{&}, @code{^}.
329baa95
DE
577
578Inferior values that are structures or instances of some class can
579be accessed using the Python @dfn{dictionary syntax}. For example, if
580@code{some_val} is a @code{gdb.Value} instance holding a structure, you
581can access its @code{foo} element with:
582
583@smallexample
584bar = some_val['foo']
585@end smallexample
586
587@cindex getting structure elements using gdb.Field objects as subscripts
588Again, @code{bar} will also be a @code{gdb.Value} object. Structure
589elements can also be accessed by using @code{gdb.Field} objects as
590subscripts (@pxref{Types In Python}, for more information on
591@code{gdb.Field} objects). For example, if @code{foo_field} is a
592@code{gdb.Field} object corresponding to element @code{foo} of the above
593structure, then @code{bar} can also be accessed as follows:
594
595@smallexample
596bar = some_val[foo_field]
597@end smallexample
598
599A @code{gdb.Value} that represents a function can be executed via
600inferior function call. Any arguments provided to the call must match
601the function's prototype, and must be provided in the order specified
602by that prototype.
603
604For example, @code{some_val} is a @code{gdb.Value} instance
605representing a function that takes two integers as arguments. To
606execute this function, call it like so:
607
608@smallexample
609result = some_val (10,20)
610@end smallexample
611
612Any values returned from a function call will be stored as a
613@code{gdb.Value}.
614
615The following attributes are provided:
616
617@defvar Value.address
618If this object is addressable, this read-only attribute holds a
619@code{gdb.Value} object representing the address. Otherwise,
620this attribute holds @code{None}.
621@end defvar
622
623@cindex optimized out value in Python
624@defvar Value.is_optimized_out
625This read-only boolean attribute is true if the compiler optimized out
626this value, thus it is not available for fetching from the inferior.
627@end defvar
628
629@defvar Value.type
630The type of this @code{gdb.Value}. The value of this attribute is a
631@code{gdb.Type} object (@pxref{Types In Python}).
632@end defvar
633
634@defvar Value.dynamic_type
635The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time
636type information (@acronym{RTTI}) to determine the dynamic type of the
637value. If this value is of class type, it will return the class in
638which the value is embedded, if any. If this value is of pointer or
639reference to a class type, it will compute the dynamic type of the
640referenced object, and return a pointer or reference to that type,
641respectively. In all other cases, it will return the value's static
642type.
643
644Note that this feature will only work when debugging a C@t{++} program
645that includes @acronym{RTTI} for the object in question. Otherwise,
646it will just return the static type of the value as in @kbd{ptype foo}
647(@pxref{Symbols, ptype}).
648@end defvar
649
650@defvar Value.is_lazy
651The value of this read-only boolean attribute is @code{True} if this
652@code{gdb.Value} has not yet been fetched from the inferior.
653@value{GDBN} does not fetch values until necessary, for efficiency.
654For example:
655
656@smallexample
657myval = gdb.parse_and_eval ('somevar')
658@end smallexample
659
660The value of @code{somevar} is not fetched at this time. It will be
661fetched when the value is needed, or when the @code{fetch_lazy}
662method is invoked.
663@end defvar
664
665The following methods are provided:
666
667@defun Value.__init__ (@var{val})
668Many Python values can be converted directly to a @code{gdb.Value} via
669this object initializer. Specifically:
670
671@table @asis
672@item Python boolean
673A Python boolean is converted to the boolean type from the current
674language.
675
676@item Python integer
677A Python integer is converted to the C @code{long} type for the
678current architecture.
679
680@item Python long
681A Python long is converted to the C @code{long long} type for the
682current architecture.
683
684@item Python float
685A Python float is converted to the C @code{double} type for the
686current architecture.
687
688@item Python string
b3ce5e5f
DE
689A Python string is converted to a target string in the current target
690language using the current target encoding.
691If a character cannot be represented in the current target encoding,
692then an exception is thrown.
329baa95
DE
693
694@item @code{gdb.Value}
695If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
696
697@item @code{gdb.LazyString}
698If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
699Python}), then the lazy string's @code{value} method is called, and
700its result is used.
701@end table
702@end defun
703
704@defun Value.cast (type)
705Return a new instance of @code{gdb.Value} that is the result of
706casting this instance to the type described by @var{type}, which must
707be a @code{gdb.Type} object. If the cast cannot be performed for some
708reason, this method throws an exception.
709@end defun
710
711@defun Value.dereference ()
712For pointer data types, this method returns a new @code{gdb.Value} object
713whose contents is the object pointed to by the pointer. For example, if
714@code{foo} is a C pointer to an @code{int}, declared in your C program as
715
716@smallexample
717int *foo;
718@end smallexample
719
720@noindent
721then you can use the corresponding @code{gdb.Value} to access what
722@code{foo} points to like this:
723
724@smallexample
725bar = foo.dereference ()
726@end smallexample
727
728The result @code{bar} will be a @code{gdb.Value} object holding the
729value pointed to by @code{foo}.
730
731A similar function @code{Value.referenced_value} exists which also
732returns @code{gdb.Value} objects corresonding to the values pointed to
733by pointer values (and additionally, values referenced by reference
734values). However, the behavior of @code{Value.dereference}
735differs from @code{Value.referenced_value} by the fact that the
736behavior of @code{Value.dereference} is identical to applying the C
737unary operator @code{*} on a given value. For example, consider a
738reference to a pointer @code{ptrref}, declared in your C@t{++} program
739as
740
741@smallexample
742typedef int *intptr;
743...
744int val = 10;
745intptr ptr = &val;
746intptr &ptrref = ptr;
747@end smallexample
748
749Though @code{ptrref} is a reference value, one can apply the method
750@code{Value.dereference} to the @code{gdb.Value} object corresponding
751to it and obtain a @code{gdb.Value} which is identical to that
752corresponding to @code{val}. However, if you apply the method
753@code{Value.referenced_value}, the result would be a @code{gdb.Value}
754object identical to that corresponding to @code{ptr}.
755
756@smallexample
757py_ptrref = gdb.parse_and_eval ("ptrref")
758py_val = py_ptrref.dereference ()
759py_ptr = py_ptrref.referenced_value ()
760@end smallexample
761
762The @code{gdb.Value} object @code{py_val} is identical to that
763corresponding to @code{val}, and @code{py_ptr} is identical to that
764corresponding to @code{ptr}. In general, @code{Value.dereference} can
765be applied whenever the C unary operator @code{*} can be applied
766to the corresponding C value. For those cases where applying both
767@code{Value.dereference} and @code{Value.referenced_value} is allowed,
768the results obtained need not be identical (as we have seen in the above
769example). The results are however identical when applied on
770@code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
771objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
772@end defun
773
774@defun Value.referenced_value ()
775For pointer or reference data types, this method returns a new
776@code{gdb.Value} object corresponding to the value referenced by the
777pointer/reference value. For pointer data types,
778@code{Value.dereference} and @code{Value.referenced_value} produce
779identical results. The difference between these methods is that
780@code{Value.dereference} cannot get the values referenced by reference
781values. For example, consider a reference to an @code{int}, declared
782in your C@t{++} program as
783
784@smallexample
785int val = 10;
786int &ref = val;
787@end smallexample
788
789@noindent
790then applying @code{Value.dereference} to the @code{gdb.Value} object
791corresponding to @code{ref} will result in an error, while applying
792@code{Value.referenced_value} will result in a @code{gdb.Value} object
793identical to that corresponding to @code{val}.
794
795@smallexample
796py_ref = gdb.parse_and_eval ("ref")
797er_ref = py_ref.dereference () # Results in error
798py_val = py_ref.referenced_value () # Returns the referenced value
799@end smallexample
800
801The @code{gdb.Value} object @code{py_val} is identical to that
802corresponding to @code{val}.
803@end defun
804
4c082a81
SC
805@defun Value.reference_value ()
806Return a @code{gdb.Value} object which is a reference to the value
807encapsulated by this instance.
808@end defun
809
810@defun Value.const_value ()
811Return a @code{gdb.Value} object which is a @code{const} version of the
812value encapsulated by this instance.
813@end defun
814
329baa95
DE
815@defun Value.dynamic_cast (type)
816Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
817operator were used. Consult a C@t{++} reference for details.
818@end defun
819
820@defun Value.reinterpret_cast (type)
821Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
822operator were used. Consult a C@t{++} reference for details.
823@end defun
824
825@defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
826If this @code{gdb.Value} represents a string, then this method
827converts the contents to a Python string. Otherwise, this method will
828throw an exception.
829
b3ce5e5f
DE
830Values are interpreted as strings according to the rules of the
831current language. If the optional length argument is given, the
832string will be converted to that length, and will include any embedded
833zeroes that the string may contain. Otherwise, for languages
834where the string is zero-terminated, the entire string will be
835converted.
329baa95 836
b3ce5e5f
DE
837For example, in C-like languages, a value is a string if it is a pointer
838to or an array of characters or ints of type @code{wchar_t}, @code{char16_t},
839or @code{char32_t}.
329baa95
DE
840
841If the optional @var{encoding} argument is given, it must be a string
842naming the encoding of the string in the @code{gdb.Value}, such as
843@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
844the same encodings as the corresponding argument to Python's
845@code{string.decode} method, and the Python codec machinery will be used
846to convert the string. If @var{encoding} is not given, or if
847@var{encoding} is the empty string, then either the @code{target-charset}
848(@pxref{Character Sets}) will be used, or a language-specific encoding
849will be used, if the current language is able to supply one.
850
851The optional @var{errors} argument is the same as the corresponding
852argument to Python's @code{string.decode} method.
853
854If the optional @var{length} argument is given, the string will be
855fetched and converted to the given length.
856@end defun
857
858@defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
859If this @code{gdb.Value} represents a string, then this method
860converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
861In Python}). Otherwise, this method will throw an exception.
862
863If the optional @var{encoding} argument is given, it must be a string
864naming the encoding of the @code{gdb.LazyString}. Some examples are:
865@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
866@var{encoding} argument is an encoding that @value{GDBN} does
867recognize, @value{GDBN} will raise an error.
868
869When a lazy string is printed, the @value{GDBN} encoding machinery is
870used to convert the string during printing. If the optional
871@var{encoding} argument is not provided, or is an empty string,
872@value{GDBN} will automatically select the encoding most suitable for
873the string type. For further information on encoding in @value{GDBN}
874please see @ref{Character Sets}.
875
876If the optional @var{length} argument is given, the string will be
877fetched and encoded to the length of characters specified. If
878the @var{length} argument is not provided, the string will be fetched
879and encoded until a null of appropriate width is found.
880@end defun
881
882@defun Value.fetch_lazy ()
883If the @code{gdb.Value} object is currently a lazy value
884(@code{gdb.Value.is_lazy} is @code{True}), then the value is
885fetched from the inferior. Any errors that occur in the process
886will produce a Python exception.
887
888If the @code{gdb.Value} object is not a lazy value, this method
889has no effect.
890
891This method does not return a value.
892@end defun
893
894
895@node Types In Python
896@subsubsection Types In Python
897@cindex types in Python
898@cindex Python, working with types
899
900@tindex gdb.Type
901@value{GDBN} represents types from the inferior using the class
902@code{gdb.Type}.
903
904The following type-related functions are available in the @code{gdb}
905module:
906
907@findex gdb.lookup_type
908@defun gdb.lookup_type (name @r{[}, block@r{]})
697aa1b7 909This function looks up a type by its @var{name}, which must be a string.
329baa95
DE
910
911If @var{block} is given, then @var{name} is looked up in that scope.
912Otherwise, it is searched for globally.
913
914Ordinarily, this function will return an instance of @code{gdb.Type}.
915If the named type cannot be found, it will throw an exception.
916@end defun
917
918If the type is a structure or class type, or an enum type, the fields
919of that type can be accessed using the Python @dfn{dictionary syntax}.
920For example, if @code{some_type} is a @code{gdb.Type} instance holding
921a structure type, you can access its @code{foo} field with:
922
923@smallexample
924bar = some_type['foo']
925@end smallexample
926
927@code{bar} will be a @code{gdb.Field} object; see below under the
928description of the @code{Type.fields} method for a description of the
929@code{gdb.Field} class.
930
931An instance of @code{Type} has the following attributes:
932
6d7bb824
TT
933@defvar Type.alignof
934The alignment of this type, in bytes. Type alignment comes from the
935debugging information; if it was not specified, then @value{GDBN} will
936use the relevant ABI to try to determine the alignment. In some
937cases, even this is not possible, and zero will be returned.
938@end defvar
939
329baa95
DE
940@defvar Type.code
941The type code for this type. The type code will be one of the
942@code{TYPE_CODE_} constants defined below.
943@end defvar
944
945@defvar Type.name
946The name of this type. If this type has no name, then @code{None}
947is returned.
948@end defvar
949
950@defvar Type.sizeof
951The size of this type, in target @code{char} units. Usually, a
952target's @code{char} type will be an 8-bit byte. However, on some
953unusual platforms, this type may have a different size.
954@end defvar
955
956@defvar Type.tag
957The tag name for this type. The tag name is the name after
958@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
959languages have this concept. If this type has no tag name, then
960@code{None} is returned.
961@end defvar
962
963The following methods are provided:
964
965@defun Type.fields ()
966For structure and union types, this method returns the fields. Range
967types have two fields, the minimum and maximum values. Enum types
968have one field per enum constant. Function and method types have one
969field per parameter. The base types of C@t{++} classes are also
970represented as fields. If the type has no fields, or does not fit
971into one of these categories, an empty sequence will be returned.
972
973Each field is a @code{gdb.Field} object, with some pre-defined attributes:
974@table @code
975@item bitpos
976This attribute is not available for @code{enum} or @code{static}
9c37b5ae 977(as in C@t{++}) fields. The value is the position, counting
329baa95
DE
978in bits, from the start of the containing type.
979
980@item enumval
981This attribute is only available for @code{enum} fields, and its value
982is the enumeration member's integer representation.
983
984@item name
985The name of the field, or @code{None} for anonymous fields.
986
987@item artificial
988This is @code{True} if the field is artificial, usually meaning that
989it was provided by the compiler and not the user. This attribute is
990always provided, and is @code{False} if the field is not artificial.
991
992@item is_base_class
993This is @code{True} if the field represents a base class of a C@t{++}
994structure. This attribute is always provided, and is @code{False}
995if the field is not a base class of the type that is the argument of
996@code{fields}, or if that type was not a C@t{++} class.
997
998@item bitsize
999If the field is packed, or is a bitfield, then this will have a
1000non-zero value, which is the size of the field in bits. Otherwise,
1001this will be zero; in this case the field's size is given by its type.
1002
1003@item type
1004The type of the field. This is usually an instance of @code{Type},
1005but it can be @code{None} in some situations.
1006
1007@item parent_type
1008The type which contains this field. This is an instance of
1009@code{gdb.Type}.
1010@end table
1011@end defun
1012
1013@defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
1014Return a new @code{gdb.Type} object which represents an array of this
1015type. If one argument is given, it is the inclusive upper bound of
1016the array; in this case the lower bound is zero. If two arguments are
1017given, the first argument is the lower bound of the array, and the
1018second argument is the upper bound of the array. An array's length
1019must not be negative, but the bounds can be.
1020@end defun
1021
1022@defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]})
1023Return a new @code{gdb.Type} object which represents a vector of this
1024type. If one argument is given, it is the inclusive upper bound of
1025the vector; in this case the lower bound is zero. If two arguments are
1026given, the first argument is the lower bound of the vector, and the
1027second argument is the upper bound of the vector. A vector's length
1028must not be negative, but the bounds can be.
1029
1030The difference between an @code{array} and a @code{vector} is that
1031arrays behave like in C: when used in expressions they decay to a pointer
1032to the first element whereas vectors are treated as first class values.
1033@end defun
1034
1035@defun Type.const ()
1036Return a new @code{gdb.Type} object which represents a
1037@code{const}-qualified variant of this type.
1038@end defun
1039
1040@defun Type.volatile ()
1041Return a new @code{gdb.Type} object which represents a
1042@code{volatile}-qualified variant of this type.
1043@end defun
1044
1045@defun Type.unqualified ()
1046Return a new @code{gdb.Type} object which represents an unqualified
1047variant of this type. That is, the result is neither @code{const} nor
1048@code{volatile}.
1049@end defun
1050
1051@defun Type.range ()
1052Return a Python @code{Tuple} object that contains two elements: the
1053low bound of the argument type and the high bound of that type. If
1054the type does not have a range, @value{GDBN} will raise a
1055@code{gdb.error} exception (@pxref{Exception Handling}).
1056@end defun
1057
1058@defun Type.reference ()
1059Return a new @code{gdb.Type} object which represents a reference to this
1060type.
1061@end defun
1062
1063@defun Type.pointer ()
1064Return a new @code{gdb.Type} object which represents a pointer to this
1065type.
1066@end defun
1067
1068@defun Type.strip_typedefs ()
1069Return a new @code{gdb.Type} that represents the real type,
1070after removing all layers of typedefs.
1071@end defun
1072
1073@defun Type.target ()
1074Return a new @code{gdb.Type} object which represents the target type
1075of this type.
1076
1077For a pointer type, the target type is the type of the pointed-to
1078object. For an array type (meaning C-like arrays), the target type is
1079the type of the elements of the array. For a function or method type,
1080the target type is the type of the return value. For a complex type,
1081the target type is the type of the elements. For a typedef, the
1082target type is the aliased type.
1083
1084If the type does not have a target, this method will throw an
1085exception.
1086@end defun
1087
1088@defun Type.template_argument (n @r{[}, block@r{]})
1089If this @code{gdb.Type} is an instantiation of a template, this will
1a6a384b
JL
1090return a new @code{gdb.Value} or @code{gdb.Type} which represents the
1091value of the @var{n}th template argument (indexed starting at 0).
329baa95 1092
1a6a384b
JL
1093If this @code{gdb.Type} is not a template type, or if the type has fewer
1094than @var{n} template arguments, this will throw an exception.
1095Ordinarily, only C@t{++} code will have template types.
329baa95
DE
1096
1097If @var{block} is given, then @var{name} is looked up in that scope.
1098Otherwise, it is searched for globally.
1099@end defun
1100
59fb7612
SS
1101@defun Type.optimized_out ()
1102Return @code{gdb.Value} instance of this type whose value is optimized
1103out. This allows a frame decorator to indicate that the value of an
1104argument or a local variable is not known.
1105@end defun
329baa95
DE
1106
1107Each type has a code, which indicates what category this type falls
1108into. The available type categories are represented by constants
1109defined in the @code{gdb} module:
1110
b3ce5e5f
DE
1111@vtable @code
1112@vindex TYPE_CODE_PTR
329baa95
DE
1113@item gdb.TYPE_CODE_PTR
1114The type is a pointer.
1115
b3ce5e5f 1116@vindex TYPE_CODE_ARRAY
329baa95
DE
1117@item gdb.TYPE_CODE_ARRAY
1118The type is an array.
1119
b3ce5e5f 1120@vindex TYPE_CODE_STRUCT
329baa95
DE
1121@item gdb.TYPE_CODE_STRUCT
1122The type is a structure.
1123
b3ce5e5f 1124@vindex TYPE_CODE_UNION
329baa95
DE
1125@item gdb.TYPE_CODE_UNION
1126The type is a union.
1127
b3ce5e5f 1128@vindex TYPE_CODE_ENUM
329baa95
DE
1129@item gdb.TYPE_CODE_ENUM
1130The type is an enum.
1131
b3ce5e5f 1132@vindex TYPE_CODE_FLAGS
329baa95
DE
1133@item gdb.TYPE_CODE_FLAGS
1134A bit flags type, used for things such as status registers.
1135
b3ce5e5f 1136@vindex TYPE_CODE_FUNC
329baa95
DE
1137@item gdb.TYPE_CODE_FUNC
1138The type is a function.
1139
b3ce5e5f 1140@vindex TYPE_CODE_INT
329baa95
DE
1141@item gdb.TYPE_CODE_INT
1142The type is an integer type.
1143
b3ce5e5f 1144@vindex TYPE_CODE_FLT
329baa95
DE
1145@item gdb.TYPE_CODE_FLT
1146A floating point type.
1147
b3ce5e5f 1148@vindex TYPE_CODE_VOID
329baa95
DE
1149@item gdb.TYPE_CODE_VOID
1150The special type @code{void}.
1151
b3ce5e5f 1152@vindex TYPE_CODE_SET
329baa95
DE
1153@item gdb.TYPE_CODE_SET
1154A Pascal set type.
1155
b3ce5e5f 1156@vindex TYPE_CODE_RANGE
329baa95
DE
1157@item gdb.TYPE_CODE_RANGE
1158A range type, that is, an integer type with bounds.
1159
b3ce5e5f 1160@vindex TYPE_CODE_STRING
329baa95
DE
1161@item gdb.TYPE_CODE_STRING
1162A string type. Note that this is only used for certain languages with
1163language-defined string types; C strings are not represented this way.
1164
b3ce5e5f 1165@vindex TYPE_CODE_BITSTRING
329baa95
DE
1166@item gdb.TYPE_CODE_BITSTRING
1167A string of bits. It is deprecated.
1168
b3ce5e5f 1169@vindex TYPE_CODE_ERROR
329baa95
DE
1170@item gdb.TYPE_CODE_ERROR
1171An unknown or erroneous type.
1172
b3ce5e5f 1173@vindex TYPE_CODE_METHOD
329baa95 1174@item gdb.TYPE_CODE_METHOD
9c37b5ae 1175A method type, as found in C@t{++}.
329baa95 1176
b3ce5e5f 1177@vindex TYPE_CODE_METHODPTR
329baa95
DE
1178@item gdb.TYPE_CODE_METHODPTR
1179A pointer-to-member-function.
1180
b3ce5e5f 1181@vindex TYPE_CODE_MEMBERPTR
329baa95
DE
1182@item gdb.TYPE_CODE_MEMBERPTR
1183A pointer-to-member.
1184
b3ce5e5f 1185@vindex TYPE_CODE_REF
329baa95
DE
1186@item gdb.TYPE_CODE_REF
1187A reference type.
1188
3fcf899d
AV
1189@vindex TYPE_CODE_RVALUE_REF
1190@item gdb.TYPE_CODE_RVALUE_REF
1191A C@t{++}11 rvalue reference type.
1192
b3ce5e5f 1193@vindex TYPE_CODE_CHAR
329baa95
DE
1194@item gdb.TYPE_CODE_CHAR
1195A character type.
1196
b3ce5e5f 1197@vindex TYPE_CODE_BOOL
329baa95
DE
1198@item gdb.TYPE_CODE_BOOL
1199A boolean type.
1200
b3ce5e5f 1201@vindex TYPE_CODE_COMPLEX
329baa95
DE
1202@item gdb.TYPE_CODE_COMPLEX
1203A complex float type.
1204
b3ce5e5f 1205@vindex TYPE_CODE_TYPEDEF
329baa95
DE
1206@item gdb.TYPE_CODE_TYPEDEF
1207A typedef to some other type.
1208
b3ce5e5f 1209@vindex TYPE_CODE_NAMESPACE
329baa95
DE
1210@item gdb.TYPE_CODE_NAMESPACE
1211A C@t{++} namespace.
1212
b3ce5e5f 1213@vindex TYPE_CODE_DECFLOAT
329baa95
DE
1214@item gdb.TYPE_CODE_DECFLOAT
1215A decimal floating point type.
1216
b3ce5e5f 1217@vindex TYPE_CODE_INTERNAL_FUNCTION
329baa95
DE
1218@item gdb.TYPE_CODE_INTERNAL_FUNCTION
1219A function internal to @value{GDBN}. This is the type used to represent
1220convenience functions.
b3ce5e5f 1221@end vtable
329baa95
DE
1222
1223Further support for types is provided in the @code{gdb.types}
1224Python module (@pxref{gdb.types}).
1225
1226@node Pretty Printing API
1227@subsubsection Pretty Printing API
b3ce5e5f 1228@cindex python pretty printing api
329baa95
DE
1229
1230An example output is provided (@pxref{Pretty Printing}).
1231
1232A pretty-printer is just an object that holds a value and implements a
1233specific interface, defined here.
1234
1235@defun pretty_printer.children (self)
1236@value{GDBN} will call this method on a pretty-printer to compute the
1237children of the pretty-printer's value.
1238
1239This method must return an object conforming to the Python iterator
1240protocol. Each item returned by the iterator must be a tuple holding
1241two elements. The first element is the ``name'' of the child; the
1242second element is the child's value. The value can be any Python
1243object which is convertible to a @value{GDBN} value.
1244
1245This method is optional. If it does not exist, @value{GDBN} will act
1246as though the value has no children.
1247@end defun
1248
1249@defun pretty_printer.display_hint (self)
1250The CLI may call this method and use its result to change the
1251formatting of a value. The result will also be supplied to an MI
1252consumer as a @samp{displayhint} attribute of the variable being
1253printed.
1254
1255This method is optional. If it does exist, this method must return a
1256string.
1257
1258Some display hints are predefined by @value{GDBN}:
1259
1260@table @samp
1261@item array
1262Indicate that the object being printed is ``array-like''. The CLI
1263uses this to respect parameters such as @code{set print elements} and
1264@code{set print array}.
1265
1266@item map
1267Indicate that the object being printed is ``map-like'', and that the
1268children of this value can be assumed to alternate between keys and
1269values.
1270
1271@item string
1272Indicate that the object being printed is ``string-like''. If the
1273printer's @code{to_string} method returns a Python string of some
1274kind, then @value{GDBN} will call its internal language-specific
1275string-printing function to format the string. For the CLI this means
1276adding quotation marks, possibly escaping some characters, respecting
1277@code{set print elements}, and the like.
1278@end table
1279@end defun
1280
1281@defun pretty_printer.to_string (self)
1282@value{GDBN} will call this method to display the string
1283representation of the value passed to the object's constructor.
1284
1285When printing from the CLI, if the @code{to_string} method exists,
1286then @value{GDBN} will prepend its result to the values returned by
1287@code{children}. Exactly how this formatting is done is dependent on
1288the display hint, and may change as more hints are added. Also,
1289depending on the print settings (@pxref{Print Settings}), the CLI may
1290print just the result of @code{to_string} in a stack trace, omitting
1291the result of @code{children}.
1292
1293If this method returns a string, it is printed verbatim.
1294
1295Otherwise, if this method returns an instance of @code{gdb.Value},
1296then @value{GDBN} prints this value. This may result in a call to
1297another pretty-printer.
1298
1299If instead the method returns a Python value which is convertible to a
1300@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
1301the resulting value. Again, this may result in a call to another
1302pretty-printer. Python scalars (integers, floats, and booleans) and
1303strings are convertible to @code{gdb.Value}; other types are not.
1304
1305Finally, if this method returns @code{None} then no further operations
1306are peformed in this method and nothing is printed.
1307
1308If the result is not one of these types, an exception is raised.
1309@end defun
1310
1311@value{GDBN} provides a function which can be used to look up the
1312default pretty-printer for a @code{gdb.Value}:
1313
1314@findex gdb.default_visualizer
1315@defun gdb.default_visualizer (value)
1316This function takes a @code{gdb.Value} object as an argument. If a
1317pretty-printer for this value exists, then it is returned. If no such
1318printer exists, then this returns @code{None}.
1319@end defun
1320
1321@node Selecting Pretty-Printers
1322@subsubsection Selecting Pretty-Printers
b3ce5e5f 1323@cindex selecting python pretty-printers
329baa95
DE
1324
1325The Python list @code{gdb.pretty_printers} contains an array of
1326functions or callable objects that have been registered via addition
1327as a pretty-printer. Printers in this list are called @code{global}
1328printers, they're available when debugging all inferiors.
1329Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
1330Each @code{gdb.Objfile} also contains a @code{pretty_printers}
1331attribute.
1332
1333Each function on these lists is passed a single @code{gdb.Value}
1334argument and should return a pretty-printer object conforming to the
1335interface definition above (@pxref{Pretty Printing API}). If a function
1336cannot create a pretty-printer for the value, it should return
1337@code{None}.
1338
1339@value{GDBN} first checks the @code{pretty_printers} attribute of each
1340@code{gdb.Objfile} in the current program space and iteratively calls
1341each enabled lookup routine in the list for that @code{gdb.Objfile}
1342until it receives a pretty-printer object.
1343If no pretty-printer is found in the objfile lists, @value{GDBN} then
1344searches the pretty-printer list of the current program space,
1345calling each enabled function until an object is returned.
1346After these lists have been exhausted, it tries the global
1347@code{gdb.pretty_printers} list, again calling each enabled function until an
1348object is returned.
1349
1350The order in which the objfiles are searched is not specified. For a
1351given list, functions are always invoked from the head of the list,
1352and iterated over sequentially until the end of the list, or a printer
1353object is returned.
1354
1355For various reasons a pretty-printer may not work.
1356For example, the underlying data structure may have changed and
1357the pretty-printer is out of date.
1358
1359The consequences of a broken pretty-printer are severe enough that
1360@value{GDBN} provides support for enabling and disabling individual
1361printers. For example, if @code{print frame-arguments} is on,
1362a backtrace can become highly illegible if any argument is printed
1363with a broken printer.
1364
1365Pretty-printers are enabled and disabled by attaching an @code{enabled}
1366attribute to the registered function or callable object. If this attribute
1367is present and its value is @code{False}, the printer is disabled, otherwise
1368the printer is enabled.
1369
1370@node Writing a Pretty-Printer
1371@subsubsection Writing a Pretty-Printer
1372@cindex writing a pretty-printer
1373
1374A pretty-printer consists of two parts: a lookup function to detect
1375if the type is supported, and the printer itself.
1376
1377Here is an example showing how a @code{std::string} printer might be
1378written. @xref{Pretty Printing API}, for details on the API this class
1379must provide.
1380
1381@smallexample
1382class StdStringPrinter(object):
1383 "Print a std::string"
1384
1385 def __init__(self, val):
1386 self.val = val
1387
1388 def to_string(self):
1389 return self.val['_M_dataplus']['_M_p']
1390
1391 def display_hint(self):
1392 return 'string'
1393@end smallexample
1394
1395And here is an example showing how a lookup function for the printer
1396example above might be written.
1397
1398@smallexample
1399def str_lookup_function(val):
1400 lookup_tag = val.type.tag
1401 if lookup_tag == None:
1402 return None
1403 regex = re.compile("^std::basic_string<char,.*>$")
1404 if regex.match(lookup_tag):
1405 return StdStringPrinter(val)
1406 return None
1407@end smallexample
1408
1409The example lookup function extracts the value's type, and attempts to
1410match it to a type that it can pretty-print. If it is a type the
1411printer can pretty-print, it will return a printer object. If not, it
1412returns @code{None}.
1413
1414We recommend that you put your core pretty-printers into a Python
1415package. If your pretty-printers are for use with a library, we
1416further recommend embedding a version number into the package name.
1417This practice will enable @value{GDBN} to load multiple versions of
1418your pretty-printers at the same time, because they will have
1419different names.
1420
1421You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
1422can be evaluated multiple times without changing its meaning. An
1423ideal auto-load file will consist solely of @code{import}s of your
1424printer modules, followed by a call to a register pretty-printers with
1425the current objfile.
1426
1427Taken as a whole, this approach will scale nicely to multiple
1428inferiors, each potentially using a different library version.
1429Embedding a version number in the Python package name will ensure that
1430@value{GDBN} is able to load both sets of printers simultaneously.
1431Then, because the search for pretty-printers is done by objfile, and
1432because your auto-loaded code took care to register your library's
1433printers with a specific objfile, @value{GDBN} will find the correct
1434printers for the specific version of the library used by each
1435inferior.
1436
1437To continue the @code{std::string} example (@pxref{Pretty Printing API}),
1438this code might appear in @code{gdb.libstdcxx.v6}:
1439
1440@smallexample
1441def register_printers(objfile):
1442 objfile.pretty_printers.append(str_lookup_function)
1443@end smallexample
1444
1445@noindent
1446And then the corresponding contents of the auto-load file would be:
1447
1448@smallexample
1449import gdb.libstdcxx.v6
1450gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
1451@end smallexample
1452
1453The previous example illustrates a basic pretty-printer.
1454There are a few things that can be improved on.
1455The printer doesn't have a name, making it hard to identify in a
1456list of installed printers. The lookup function has a name, but
1457lookup functions can have arbitrary, even identical, names.
1458
1459Second, the printer only handles one type, whereas a library typically has
1460several types. One could install a lookup function for each desired type
1461in the library, but one could also have a single lookup function recognize
1462several types. The latter is the conventional way this is handled.
1463If a pretty-printer can handle multiple data types, then its
1464@dfn{subprinters} are the printers for the individual data types.
1465
1466The @code{gdb.printing} module provides a formal way of solving these
1467problems (@pxref{gdb.printing}).
1468Here is another example that handles multiple types.
1469
1470These are the types we are going to pretty-print:
1471
1472@smallexample
1473struct foo @{ int a, b; @};
1474struct bar @{ struct foo x, y; @};
1475@end smallexample
1476
1477Here are the printers:
1478
1479@smallexample
1480class fooPrinter:
1481 """Print a foo object."""
1482
1483 def __init__(self, val):
1484 self.val = val
1485
1486 def to_string(self):
1487 return ("a=<" + str(self.val["a"]) +
1488 "> b=<" + str(self.val["b"]) + ">")
1489
1490class barPrinter:
1491 """Print a bar object."""
1492
1493 def __init__(self, val):
1494 self.val = val
1495
1496 def to_string(self):
1497 return ("x=<" + str(self.val["x"]) +
1498 "> y=<" + str(self.val["y"]) + ">")
1499@end smallexample
1500
1501This example doesn't need a lookup function, that is handled by the
1502@code{gdb.printing} module. Instead a function is provided to build up
1503the object that handles the lookup.
1504
1505@smallexample
1506import gdb.printing
1507
1508def build_pretty_printer():
1509 pp = gdb.printing.RegexpCollectionPrettyPrinter(
1510 "my_library")
1511 pp.add_printer('foo', '^foo$', fooPrinter)
1512 pp.add_printer('bar', '^bar$', barPrinter)
1513 return pp
1514@end smallexample
1515
1516And here is the autoload support:
1517
1518@smallexample
1519import gdb.printing
1520import my_library
1521gdb.printing.register_pretty_printer(
1522 gdb.current_objfile(),
1523 my_library.build_pretty_printer())
1524@end smallexample
1525
1526Finally, when this printer is loaded into @value{GDBN}, here is the
1527corresponding output of @samp{info pretty-printer}:
1528
1529@smallexample
1530(gdb) info pretty-printer
1531my_library.so:
1532 my_library
1533 foo
1534 bar
1535@end smallexample
1536
1537@node Type Printing API
1538@subsubsection Type Printing API
1539@cindex type printing API for Python
1540
1541@value{GDBN} provides a way for Python code to customize type display.
1542This is mainly useful for substituting canonical typedef names for
1543types.
1544
1545@cindex type printer
1546A @dfn{type printer} is just a Python object conforming to a certain
1547protocol. A simple base class implementing the protocol is provided;
1548see @ref{gdb.types}. A type printer must supply at least:
1549
1550@defivar type_printer enabled
1551A boolean which is True if the printer is enabled, and False
1552otherwise. This is manipulated by the @code{enable type-printer}
1553and @code{disable type-printer} commands.
1554@end defivar
1555
1556@defivar type_printer name
1557The name of the type printer. This must be a string. This is used by
1558the @code{enable type-printer} and @code{disable type-printer}
1559commands.
1560@end defivar
1561
1562@defmethod type_printer instantiate (self)
1563This is called by @value{GDBN} at the start of type-printing. It is
1564only called if the type printer is enabled. This method must return a
1565new object that supplies a @code{recognize} method, as described below.
1566@end defmethod
1567
1568
1569When displaying a type, say via the @code{ptype} command, @value{GDBN}
1570will compute a list of type recognizers. This is done by iterating
1571first over the per-objfile type printers (@pxref{Objfiles In Python}),
1572followed by the per-progspace type printers (@pxref{Progspaces In
1573Python}), and finally the global type printers.
1574
1575@value{GDBN} will call the @code{instantiate} method of each enabled
1576type printer. If this method returns @code{None}, then the result is
1577ignored; otherwise, it is appended to the list of recognizers.
1578
1579Then, when @value{GDBN} is going to display a type name, it iterates
1580over the list of recognizers. For each one, it calls the recognition
1581function, stopping if the function returns a non-@code{None} value.
1582The recognition function is defined as:
1583
1584@defmethod type_recognizer recognize (self, type)
1585If @var{type} is not recognized, return @code{None}. Otherwise,
1586return a string which is to be printed as the name of @var{type}.
697aa1b7
EZ
1587The @var{type} argument will be an instance of @code{gdb.Type}
1588(@pxref{Types In Python}).
329baa95
DE
1589@end defmethod
1590
1591@value{GDBN} uses this two-pass approach so that type printers can
1592efficiently cache information without holding on to it too long. For
1593example, it can be convenient to look up type information in a type
1594printer and hold it for a recognizer's lifetime; if a single pass were
1595done then type printers would have to make use of the event system in
1596order to avoid holding information that could become stale as the
1597inferior changed.
1598
1599@node Frame Filter API
1600@subsubsection Filtering Frames.
1601@cindex frame filters api
1602
1603Frame filters are Python objects that manipulate the visibility of a
1604frame or frames when a backtrace (@pxref{Backtrace}) is printed by
1605@value{GDBN}.
1606
1607Only commands that print a backtrace, or, in the case of @sc{gdb/mi}
1608commands (@pxref{GDB/MI}), those that return a collection of frames
1609are affected. The commands that work with frame filters are:
1610
1611@code{backtrace} (@pxref{backtrace-command,, The backtrace command}),
1612@code{-stack-list-frames}
1613(@pxref{-stack-list-frames,, The -stack-list-frames command}),
1614@code{-stack-list-variables} (@pxref{-stack-list-variables,, The
1615-stack-list-variables command}), @code{-stack-list-arguments}
1616@pxref{-stack-list-arguments,, The -stack-list-arguments command}) and
1617@code{-stack-list-locals} (@pxref{-stack-list-locals,, The
1618-stack-list-locals command}).
1619
1620A frame filter works by taking an iterator as an argument, applying
1621actions to the contents of that iterator, and returning another
1622iterator (or, possibly, the same iterator it was provided in the case
1623where the filter does not perform any operations). Typically, frame
1624filters utilize tools such as the Python's @code{itertools} module to
1625work with and create new iterators from the source iterator.
1626Regardless of how a filter chooses to apply actions, it must not alter
1627the underlying @value{GDBN} frame or frames, or attempt to alter the
1628call-stack within @value{GDBN}. This preserves data integrity within
1629@value{GDBN}. Frame filters are executed on a priority basis and care
1630should be taken that some frame filters may have been executed before,
1631and that some frame filters will be executed after.
1632
1633An important consideration when designing frame filters, and well
1634worth reflecting upon, is that frame filters should avoid unwinding
1635the call stack if possible. Some stacks can run very deep, into the
1636tens of thousands in some cases. To search every frame when a frame
1637filter executes may be too expensive at that step. The frame filter
1638cannot know how many frames it has to iterate over, and it may have to
1639iterate through them all. This ends up duplicating effort as
1640@value{GDBN} performs this iteration when it prints the frames. If
1641the filter can defer unwinding frames until frame decorators are
1642executed, after the last filter has executed, it should. @xref{Frame
1643Decorator API}, for more information on decorators. Also, there are
1644examples for both frame decorators and filters in later chapters.
1645@xref{Writing a Frame Filter}, for more information.
1646
1647The Python dictionary @code{gdb.frame_filters} contains key/object
1648pairings that comprise a frame filter. Frame filters in this
1649dictionary are called @code{global} frame filters, and they are
1650available when debugging all inferiors. These frame filters must
1651register with the dictionary directly. In addition to the
1652@code{global} dictionary, there are other dictionaries that are loaded
1653with different inferiors via auto-loading (@pxref{Python
1654Auto-loading}). The two other areas where frame filter dictionaries
1655can be found are: @code{gdb.Progspace} which contains a
1656@code{frame_filters} dictionary attribute, and each @code{gdb.Objfile}
1657object which also contains a @code{frame_filters} dictionary
1658attribute.
1659
1660When a command is executed from @value{GDBN} that is compatible with
1661frame filters, @value{GDBN} combines the @code{global},
1662@code{gdb.Progspace} and all @code{gdb.Objfile} dictionaries currently
1663loaded. All of the @code{gdb.Objfile} dictionaries are combined, as
1664several frames, and thus several object files, might be in use.
1665@value{GDBN} then prunes any frame filter whose @code{enabled}
1666attribute is @code{False}. This pruned list is then sorted according
1667to the @code{priority} attribute in each filter.
1668
1669Once the dictionaries are combined, pruned and sorted, @value{GDBN}
1670creates an iterator which wraps each frame in the call stack in a
1671@code{FrameDecorator} object, and calls each filter in order. The
1672output from the previous filter will always be the input to the next
1673filter, and so on.
1674
1675Frame filters have a mandatory interface which each frame filter must
1676implement, defined here:
1677
1678@defun FrameFilter.filter (iterator)
1679@value{GDBN} will call this method on a frame filter when it has
1680reached the order in the priority list for that filter.
1681
1682For example, if there are four frame filters:
1683
1684@smallexample
1685Name Priority
1686
1687Filter1 5
1688Filter2 10
1689Filter3 100
1690Filter4 1
1691@end smallexample
1692
1693The order that the frame filters will be called is:
1694
1695@smallexample
1696Filter3 -> Filter2 -> Filter1 -> Filter4
1697@end smallexample
1698
1699Note that the output from @code{Filter3} is passed to the input of
1700@code{Filter2}, and so on.
1701
1702This @code{filter} method is passed a Python iterator. This iterator
1703contains a sequence of frame decorators that wrap each
1704@code{gdb.Frame}, or a frame decorator that wraps another frame
1705decorator. The first filter that is executed in the sequence of frame
1706filters will receive an iterator entirely comprised of default
1707@code{FrameDecorator} objects. However, after each frame filter is
1708executed, the previous frame filter may have wrapped some or all of
1709the frame decorators with their own frame decorator. As frame
1710decorators must also conform to a mandatory interface, these
1711decorators can be assumed to act in a uniform manner (@pxref{Frame
1712Decorator API}).
1713
1714This method must return an object conforming to the Python iterator
1715protocol. Each item in the iterator must be an object conforming to
1716the frame decorator interface. If a frame filter does not wish to
1717perform any operations on this iterator, it should return that
1718iterator untouched.
1719
1720This method is not optional. If it does not exist, @value{GDBN} will
1721raise and print an error.
1722@end defun
1723
1724@defvar FrameFilter.name
1725The @code{name} attribute must be Python string which contains the
1726name of the filter displayed by @value{GDBN} (@pxref{Frame Filter
1727Management}). This attribute may contain any combination of letters
1728or numbers. Care should be taken to ensure that it is unique. This
1729attribute is mandatory.
1730@end defvar
1731
1732@defvar FrameFilter.enabled
1733The @code{enabled} attribute must be Python boolean. This attribute
1734indicates to @value{GDBN} whether the frame filter is enabled, and
1735should be considered when frame filters are executed. If
1736@code{enabled} is @code{True}, then the frame filter will be executed
1737when any of the backtrace commands detailed earlier in this chapter
1738are executed. If @code{enabled} is @code{False}, then the frame
1739filter will not be executed. This attribute is mandatory.
1740@end defvar
1741
1742@defvar FrameFilter.priority
1743The @code{priority} attribute must be Python integer. This attribute
1744controls the order of execution in relation to other frame filters.
1745There are no imposed limits on the range of @code{priority} other than
1746it must be a valid integer. The higher the @code{priority} attribute,
1747the sooner the frame filter will be executed in relation to other
1748frame filters. Although @code{priority} can be negative, it is
1749recommended practice to assume zero is the lowest priority that a
1750frame filter can be assigned. Frame filters that have the same
1751priority are executed in unsorted order in that priority slot. This
1752attribute is mandatory.
1753@end defvar
1754
1755@node Frame Decorator API
1756@subsubsection Decorating Frames.
1757@cindex frame decorator api
1758
1759Frame decorators are sister objects to frame filters (@pxref{Frame
1760Filter API}). Frame decorators are applied by a frame filter and can
1761only be used in conjunction with frame filters.
1762
1763The purpose of a frame decorator is to customize the printed content
1764of each @code{gdb.Frame} in commands where frame filters are executed.
1765This concept is called decorating a frame. Frame decorators decorate
1766a @code{gdb.Frame} with Python code contained within each API call.
1767This separates the actual data contained in a @code{gdb.Frame} from
1768the decorated data produced by a frame decorator. This abstraction is
1769necessary to maintain integrity of the data contained in each
1770@code{gdb.Frame}.
1771
1772Frame decorators have a mandatory interface, defined below.
1773
1774@value{GDBN} already contains a frame decorator called
1775@code{FrameDecorator}. This contains substantial amounts of
1776boilerplate code to decorate the content of a @code{gdb.Frame}. It is
1777recommended that other frame decorators inherit and extend this
1778object, and only to override the methods needed.
1779
1780@defun FrameDecorator.elided (self)
1781
1782The @code{elided} method groups frames together in a hierarchical
1783system. An example would be an interpreter, where multiple low-level
1784frames make up a single call in the interpreted language. In this
1785example, the frame filter would elide the low-level frames and present
1786a single high-level frame, representing the call in the interpreted
1787language, to the user.
1788
1789The @code{elided} function must return an iterable and this iterable
1790must contain the frames that are being elided wrapped in a suitable
1791frame decorator. If no frames are being elided this function may
1792return an empty iterable, or @code{None}. Elided frames are indented
1793from normal frames in a @code{CLI} backtrace, or in the case of
1794@code{GDB/MI}, are placed in the @code{children} field of the eliding
1795frame.
1796
1797It is the frame filter's task to also filter out the elided frames from
1798the source iterator. This will avoid printing the frame twice.
1799@end defun
1800
1801@defun FrameDecorator.function (self)
1802
1803This method returns the name of the function in the frame that is to
1804be printed.
1805
1806This method must return a Python string describing the function, or
1807@code{None}.
1808
1809If this function returns @code{None}, @value{GDBN} will not print any
1810data for this field.
1811@end defun
1812
1813@defun FrameDecorator.address (self)
1814
1815This method returns the address of the frame that is to be printed.
1816
1817This method must return a Python numeric integer type of sufficient
1818size to describe the address of the frame, or @code{None}.
1819
1820If this function returns a @code{None}, @value{GDBN} will not print
1821any data for this field.
1822@end defun
1823
1824@defun FrameDecorator.filename (self)
1825
1826This method returns the filename and path associated with this frame.
1827
1828This method must return a Python string containing the filename and
1829the path to the object file backing the frame, or @code{None}.
1830
1831If this function returns a @code{None}, @value{GDBN} will not print
1832any data for this field.
1833@end defun
1834
1835@defun FrameDecorator.line (self):
1836
1837This method returns the line number associated with the current
1838position within the function addressed by this frame.
1839
1840This method must return a Python integer type, or @code{None}.
1841
1842If this function returns a @code{None}, @value{GDBN} will not print
1843any data for this field.
1844@end defun
1845
1846@defun FrameDecorator.frame_args (self)
1847@anchor{frame_args}
1848
1849This method must return an iterable, or @code{None}. Returning an
1850empty iterable, or @code{None} means frame arguments will not be
1851printed for this frame. This iterable must contain objects that
1852implement two methods, described here.
1853
1854This object must implement a @code{argument} method which takes a
1855single @code{self} parameter and must return a @code{gdb.Symbol}
1856(@pxref{Symbols In Python}), or a Python string. The object must also
1857implement a @code{value} method which takes a single @code{self}
1858parameter and must return a @code{gdb.Value} (@pxref{Values From
1859Inferior}), a Python value, or @code{None}. If the @code{value}
1860method returns @code{None}, and the @code{argument} method returns a
1861@code{gdb.Symbol}, @value{GDBN} will look-up and print the value of
1862the @code{gdb.Symbol} automatically.
1863
1864A brief example:
1865
1866@smallexample
1867class SymValueWrapper():
1868
1869 def __init__(self, symbol, value):
1870 self.sym = symbol
1871 self.val = value
1872
1873 def value(self):
1874 return self.val
1875
1876 def symbol(self):
1877 return self.sym
1878
1879class SomeFrameDecorator()
1880...
1881...
1882 def frame_args(self):
1883 args = []
1884 try:
1885 block = self.inferior_frame.block()
1886 except:
1887 return None
1888
1889 # Iterate over all symbols in a block. Only add
1890 # symbols that are arguments.
1891 for sym in block:
1892 if not sym.is_argument:
1893 continue
1894 args.append(SymValueWrapper(sym,None))
1895
1896 # Add example synthetic argument.
1897 args.append(SymValueWrapper(``foo'', 42))
1898
1899 return args
1900@end smallexample
1901@end defun
1902
1903@defun FrameDecorator.frame_locals (self)
1904
1905This method must return an iterable or @code{None}. Returning an
1906empty iterable, or @code{None} means frame local arguments will not be
1907printed for this frame.
1908
1909The object interface, the description of the various strategies for
1910reading frame locals, and the example are largely similar to those
1911described in the @code{frame_args} function, (@pxref{frame_args,,The
1912frame filter frame_args function}). Below is a modified example:
1913
1914@smallexample
1915class SomeFrameDecorator()
1916...
1917...
1918 def frame_locals(self):
1919 vars = []
1920 try:
1921 block = self.inferior_frame.block()
1922 except:
1923 return None
1924
1925 # Iterate over all symbols in a block. Add all
1926 # symbols, except arguments.
1927 for sym in block:
1928 if sym.is_argument:
1929 continue
1930 vars.append(SymValueWrapper(sym,None))
1931
1932 # Add an example of a synthetic local variable.
1933 vars.append(SymValueWrapper(``bar'', 99))
1934
1935 return vars
1936@end smallexample
1937@end defun
1938
1939@defun FrameDecorator.inferior_frame (self):
1940
1941This method must return the underlying @code{gdb.Frame} that this
1942frame decorator is decorating. @value{GDBN} requires the underlying
1943frame for internal frame information to determine how to print certain
1944values when printing a frame.
1945@end defun
1946
1947@node Writing a Frame Filter
1948@subsubsection Writing a Frame Filter
1949@cindex writing a frame filter
1950
1951There are three basic elements that a frame filter must implement: it
1952must correctly implement the documented interface (@pxref{Frame Filter
1953API}), it must register itself with @value{GDBN}, and finally, it must
1954decide if it is to work on the data provided by @value{GDBN}. In all
1955cases, whether it works on the iterator or not, each frame filter must
1956return an iterator. A bare-bones frame filter follows the pattern in
1957the following example.
1958
1959@smallexample
1960import gdb
1961
1962class FrameFilter():
1963
1964 def __init__(self):
1965 # Frame filter attribute creation.
1966 #
1967 # 'name' is the name of the filter that GDB will display.
1968 #
1969 # 'priority' is the priority of the filter relative to other
1970 # filters.
1971 #
1972 # 'enabled' is a boolean that indicates whether this filter is
1973 # enabled and should be executed.
1974
1975 self.name = "Foo"
1976 self.priority = 100
1977 self.enabled = True
1978
1979 # Register this frame filter with the global frame_filters
1980 # dictionary.
1981 gdb.frame_filters[self.name] = self
1982
1983 def filter(self, frame_iter):
1984 # Just return the iterator.
1985 return frame_iter
1986@end smallexample
1987
1988The frame filter in the example above implements the three
1989requirements for all frame filters. It implements the API, self
1990registers, and makes a decision on the iterator (in this case, it just
1991returns the iterator untouched).
1992
1993The first step is attribute creation and assignment, and as shown in
1994the comments the filter assigns the following attributes: @code{name},
1995@code{priority} and whether the filter should be enabled with the
1996@code{enabled} attribute.
1997
1998The second step is registering the frame filter with the dictionary or
1999dictionaries that the frame filter has interest in. As shown in the
2000comments, this filter just registers itself with the global dictionary
2001@code{gdb.frame_filters}. As noted earlier, @code{gdb.frame_filters}
2002is a dictionary that is initialized in the @code{gdb} module when
2003@value{GDBN} starts. What dictionary a filter registers with is an
2004important consideration. Generally, if a filter is specific to a set
2005of code, it should be registered either in the @code{objfile} or
2006@code{progspace} dictionaries as they are specific to the program
2007currently loaded in @value{GDBN}. The global dictionary is always
2008present in @value{GDBN} and is never unloaded. Any filters registered
2009with the global dictionary will exist until @value{GDBN} exits. To
2010avoid filters that may conflict, it is generally better to register
2011frame filters against the dictionaries that more closely align with
2012the usage of the filter currently in question. @xref{Python
2013Auto-loading}, for further information on auto-loading Python scripts.
2014
2015@value{GDBN} takes a hands-off approach to frame filter registration,
2016therefore it is the frame filter's responsibility to ensure
2017registration has occurred, and that any exceptions are handled
2018appropriately. In particular, you may wish to handle exceptions
2019relating to Python dictionary key uniqueness. It is mandatory that
2020the dictionary key is the same as frame filter's @code{name}
2021attribute. When a user manages frame filters (@pxref{Frame Filter
2022Management}), the names @value{GDBN} will display are those contained
2023in the @code{name} attribute.
2024
2025The final step of this example is the implementation of the
2026@code{filter} method. As shown in the example comments, we define the
2027@code{filter} method and note that the method must take an iterator,
2028and also must return an iterator. In this bare-bones example, the
2029frame filter is not very useful as it just returns the iterator
2030untouched. However this is a valid operation for frame filters that
2031have the @code{enabled} attribute set, but decide not to operate on
2032any frames.
2033
2034In the next example, the frame filter operates on all frames and
2035utilizes a frame decorator to perform some work on the frames.
2036@xref{Frame Decorator API}, for further information on the frame
2037decorator interface.
2038
2039This example works on inlined frames. It highlights frames which are
2040inlined by tagging them with an ``[inlined]'' tag. By applying a
2041frame decorator to all frames with the Python @code{itertools imap}
2042method, the example defers actions to the frame decorator. Frame
2043decorators are only processed when @value{GDBN} prints the backtrace.
2044
2045This introduces a new decision making topic: whether to perform
2046decision making operations at the filtering step, or at the printing
2047step. In this example's approach, it does not perform any filtering
2048decisions at the filtering step beyond mapping a frame decorator to
2049each frame. This allows the actual decision making to be performed
2050when each frame is printed. This is an important consideration, and
2051well worth reflecting upon when designing a frame filter. An issue
2052that frame filters should avoid is unwinding the stack if possible.
2053Some stacks can run very deep, into the tens of thousands in some
2054cases. To search every frame to determine if it is inlined ahead of
2055time may be too expensive at the filtering step. The frame filter
2056cannot know how many frames it has to iterate over, and it would have
2057to iterate through them all. This ends up duplicating effort as
2058@value{GDBN} performs this iteration when it prints the frames.
2059
2060In this example decision making can be deferred to the printing step.
2061As each frame is printed, the frame decorator can examine each frame
2062in turn when @value{GDBN} iterates. From a performance viewpoint,
2063this is the most appropriate decision to make as it avoids duplicating
2064the effort that the printing step would undertake anyway. Also, if
2065there are many frame filters unwinding the stack during filtering, it
2066can substantially delay the printing of the backtrace which will
2067result in large memory usage, and a poor user experience.
2068
2069@smallexample
2070class InlineFilter():
2071
2072 def __init__(self):
2073 self.name = "InlinedFrameFilter"
2074 self.priority = 100
2075 self.enabled = True
2076 gdb.frame_filters[self.name] = self
2077
2078 def filter(self, frame_iter):
2079 frame_iter = itertools.imap(InlinedFrameDecorator,
2080 frame_iter)
2081 return frame_iter
2082@end smallexample
2083
2084This frame filter is somewhat similar to the earlier example, except
2085that the @code{filter} method applies a frame decorator object called
2086@code{InlinedFrameDecorator} to each element in the iterator. The
2087@code{imap} Python method is light-weight. It does not proactively
2088iterate over the iterator, but rather creates a new iterator which
2089wraps the existing one.
2090
2091Below is the frame decorator for this example.
2092
2093@smallexample
2094class InlinedFrameDecorator(FrameDecorator):
2095
2096 def __init__(self, fobj):
2097 super(InlinedFrameDecorator, self).__init__(fobj)
2098
2099 def function(self):
2100 frame = fobj.inferior_frame()
2101 name = str(frame.name())
2102
2103 if frame.type() == gdb.INLINE_FRAME:
2104 name = name + " [inlined]"
2105
2106 return name
2107@end smallexample
2108
2109This frame decorator only defines and overrides the @code{function}
2110method. It lets the supplied @code{FrameDecorator}, which is shipped
2111with @value{GDBN}, perform the other work associated with printing
2112this frame.
2113
2114The combination of these two objects create this output from a
2115backtrace:
2116
2117@smallexample
2118#0 0x004004e0 in bar () at inline.c:11
2119#1 0x00400566 in max [inlined] (b=6, a=12) at inline.c:21
2120#2 0x00400566 in main () at inline.c:31
2121@end smallexample
2122
2123So in the case of this example, a frame decorator is applied to all
2124frames, regardless of whether they may be inlined or not. As
2125@value{GDBN} iterates over the iterator produced by the frame filters,
2126@value{GDBN} executes each frame decorator which then makes a decision
2127on what to print in the @code{function} callback. Using a strategy
2128like this is a way to defer decisions on the frame content to printing
2129time.
2130
2131@subheading Eliding Frames
2132
2133It might be that the above example is not desirable for representing
2134inlined frames, and a hierarchical approach may be preferred. If we
2135want to hierarchically represent frames, the @code{elided} frame
2136decorator interface might be preferable.
2137
2138This example approaches the issue with the @code{elided} method. This
2139example is quite long, but very simplistic. It is out-of-scope for
2140this section to write a complete example that comprehensively covers
2141all approaches of finding and printing inlined frames. However, this
2142example illustrates the approach an author might use.
2143
2144This example comprises of three sections.
2145
2146@smallexample
2147class InlineFrameFilter():
2148
2149 def __init__(self):
2150 self.name = "InlinedFrameFilter"
2151 self.priority = 100
2152 self.enabled = True
2153 gdb.frame_filters[self.name] = self
2154
2155 def filter(self, frame_iter):
2156 return ElidingInlineIterator(frame_iter)
2157@end smallexample
2158
2159This frame filter is very similar to the other examples. The only
2160difference is this frame filter is wrapping the iterator provided to
2161it (@code{frame_iter}) with a custom iterator called
2162@code{ElidingInlineIterator}. This again defers actions to when
2163@value{GDBN} prints the backtrace, as the iterator is not traversed
2164until printing.
2165
2166The iterator for this example is as follows. It is in this section of
2167the example where decisions are made on the content of the backtrace.
2168
2169@smallexample
2170class ElidingInlineIterator:
2171 def __init__(self, ii):
2172 self.input_iterator = ii
2173
2174 def __iter__(self):
2175 return self
2176
2177 def next(self):
2178 frame = next(self.input_iterator)
2179
2180 if frame.inferior_frame().type() != gdb.INLINE_FRAME:
2181 return frame
2182
2183 try:
2184 eliding_frame = next(self.input_iterator)
2185 except StopIteration:
2186 return frame
2187 return ElidingFrameDecorator(eliding_frame, [frame])
2188@end smallexample
2189
2190This iterator implements the Python iterator protocol. When the
2191@code{next} function is called (when @value{GDBN} prints each frame),
2192the iterator checks if this frame decorator, @code{frame}, is wrapping
2193an inlined frame. If it is not, it returns the existing frame decorator
2194untouched. If it is wrapping an inlined frame, it assumes that the
2195inlined frame was contained within the next oldest frame,
2196@code{eliding_frame}, which it fetches. It then creates and returns a
2197frame decorator, @code{ElidingFrameDecorator}, which contains both the
2198elided frame, and the eliding frame.
2199
2200@smallexample
2201class ElidingInlineDecorator(FrameDecorator):
2202
2203 def __init__(self, frame, elided_frames):
2204 super(ElidingInlineDecorator, self).__init__(frame)
2205 self.frame = frame
2206 self.elided_frames = elided_frames
2207
2208 def elided(self):
2209 return iter(self.elided_frames)
2210@end smallexample
2211
2212This frame decorator overrides one function and returns the inlined
2213frame in the @code{elided} method. As before it lets
2214@code{FrameDecorator} do the rest of the work involved in printing
2215this frame. This produces the following output.
2216
2217@smallexample
2218#0 0x004004e0 in bar () at inline.c:11
2219#2 0x00400529 in main () at inline.c:25
2220 #1 0x00400529 in max (b=6, a=12) at inline.c:15
2221@end smallexample
2222
2223In that output, @code{max} which has been inlined into @code{main} is
2224printed hierarchically. Another approach would be to combine the
2225@code{function} method, and the @code{elided} method to both print a
2226marker in the inlined frame, and also show the hierarchical
2227relationship.
2228
d11916aa
SS
2229@node Unwinding Frames in Python
2230@subsubsection Unwinding Frames in Python
2231@cindex unwinding frames in Python
2232
2233In @value{GDBN} terminology ``unwinding'' is the process of finding
2234the previous frame (that is, caller's) from the current one. An
2235unwinder has three methods. The first one checks if it can handle
2236given frame (``sniff'' it). For the frames it can sniff an unwinder
2237provides two additional methods: it can return frame's ID, and it can
2238fetch registers from the previous frame. A running @value{GDBN}
2239mantains a list of the unwinders and calls each unwinder's sniffer in
2240turn until it finds the one that recognizes the current frame. There
2241is an API to register an unwinder.
2242
2243The unwinders that come with @value{GDBN} handle standard frames.
2244However, mixed language applications (for example, an application
2245running Java Virtual Machine) sometimes use frame layouts that cannot
2246be handled by the @value{GDBN} unwinders. You can write Python code
2247that can handle such custom frames.
2248
2249You implement a frame unwinder in Python as a class with which has two
2250attributes, @code{name} and @code{enabled}, with obvious meanings, and
2251a single method @code{__call__}, which examines a given frame and
2252returns an object (an instance of @code{gdb.UnwindInfo class)}
2253describing it. If an unwinder does not recognize a frame, it should
2254return @code{None}. The code in @value{GDBN} that enables writing
2255unwinders in Python uses this object to return frame's ID and previous
2256frame registers when @value{GDBN} core asks for them.
2257
2258@subheading Unwinder Input
2259
2260An object passed to an unwinder (a @code{gdb.PendingFrame} instance)
2261provides a method to read frame's registers:
2262
2263@defun PendingFrame.read_register (reg)
2264This method returns the contents of the register @var{regn} in the
2265frame as a @code{gdb.Value} object. @var{reg} can be either a
2266register number or a register name; the values are platform-specific.
2267They are usually found in the corresponding
2268@file{@var{platform}-tdep.h} file in the @value{GDBN} source tree.
2269@end defun
2270
2271It also provides a factory method to create a @code{gdb.UnwindInfo}
2272instance to be returned to @value{GDBN}:
2273
2274@defun PendingFrame.create_unwind_info (frame_id)
2275Returns a new @code{gdb.UnwindInfo} instance identified by given
2276@var{frame_id}. The argument is used to build @value{GDBN}'s frame ID
2277using one of functions provided by @value{GDBN}. @var{frame_id}'s attributes
2278determine which function will be used, as follows:
2279
2280@table @code
2281@item sp, pc, special
2282@code{frame_id_build_special (@var{frame_id}.sp, @var{frame_id}.pc, @var{frame_id}.special)}
2283
2284@item sp, pc
2285@code{frame_id_build (@var{frame_id}.sp, @var{frame_id}.pc)}
2286
2287This is the most common case.
2288
2289@item sp
2290@code{frame_id_build_wild (@var{frame_id}.sp)}
2291@end table
2292The attribute values should be @code{gdb.Value}
2293
2294@end defun
2295
2296@subheading Unwinder Output: UnwindInfo
2297
2298Use @code{PendingFrame.create_unwind_info} method described above to
2299create a @code{gdb.UnwindInfo} instance. Use the following method to
2300specify caller registers that have been saved in this frame:
2301
2302@defun gdb.UnwindInfo.add_saved_register (reg, value)
2303@var{reg} identifies the register. It can be a number or a name, just
2304as for the @code{PendingFrame.read_register} method above.
2305@var{value} is a register value (a @code{gdb.Value} object).
2306@end defun
2307
2308@subheading Unwinder Skeleton Code
2309
2310@value{GDBN} comes with the module containing the base @code{Unwinder}
2311class. Derive your unwinder class from it and structure the code as
2312follows:
2313
2314@smallexample
2315from gdb.unwinders import Unwinder
2316
2317class FrameId(object):
2318 def __init__(self, sp, pc):
2319 self.sp = sp
2320 self.pc = pc
2321
2322
2323class MyUnwinder(Unwinder):
2324 def __init__(....):
2325 supe(MyUnwinder, self).__init___(<expects unwinder name argument>)
2326
2327 def __call__(pending_frame):
2328 if not <we recognize frame>:
2329 return None
2330 # Create UnwindInfo. Usually the frame is identified by the stack
2331 # pointer and the program counter.
2332 sp = pending_frame.read_register(<SP number>)
2333 pc = pending_frame.read_register(<PC number>)
2334 unwind_info = pending_frame.create_unwind_info(FrameId(sp, pc))
2335
2336 # Find the values of the registers in the caller's frame and
2337 # save them in the result:
2338 unwind_info.add_saved_register(<register>, <value>)
2339 ....
2340
2341 # Return the result:
2342 return unwind_info
2343
2344@end smallexample
2345
2346@subheading Registering a Unwinder
2347
2348An object file, a program space, and the @value{GDBN} proper can have
2349unwinders registered with it.
2350
2351The @code{gdb.unwinders} module provides the function to register a
2352unwinder:
2353
2354@defun gdb.unwinder.register_unwinder (locus, unwinder, replace=False)
2355@var{locus} is specifies an object file or a program space to which
2356@var{unwinder} is added. Passing @code{None} or @code{gdb} adds
2357@var{unwinder} to the @value{GDBN}'s global unwinder list. The newly
2358added @var{unwinder} will be called before any other unwinder from the
2359same locus. Two unwinders in the same locus cannot have the same
2360name. An attempt to add a unwinder with already existing name raises
2361an exception unless @var{replace} is @code{True}, in which case the
2362old unwinder is deleted.
2363@end defun
2364
2365@subheading Unwinder Precedence
2366
2367@value{GDBN} first calls the unwinders from all the object files in no
2368particular order, then the unwinders from the current program space,
2369and finally the unwinders from @value{GDBN}.
2370
0c6e92a5
SC
2371@node Xmethods In Python
2372@subsubsection Xmethods In Python
2373@cindex xmethods in Python
2374
2375@dfn{Xmethods} are additional methods or replacements for existing
2376methods of a C@t{++} class. This feature is useful for those cases
2377where a method defined in C@t{++} source code could be inlined or
2378optimized out by the compiler, making it unavailable to @value{GDBN}.
2379For such cases, one can define an xmethod to serve as a replacement
2380for the method defined in the C@t{++} source code. @value{GDBN} will
2381then invoke the xmethod, instead of the C@t{++} method, to
2382evaluate expressions. One can also use xmethods when debugging
2383with core files. Moreover, when debugging live programs, invoking an
2384xmethod need not involve running the inferior (which can potentially
2385perturb its state). Hence, even if the C@t{++} method is available, it
2386is better to use its replacement xmethod if one is defined.
2387
2388The xmethods feature in Python is available via the concepts of an
2389@dfn{xmethod matcher} and an @dfn{xmethod worker}. To
2390implement an xmethod, one has to implement a matcher and a
2391corresponding worker for it (more than one worker can be
2392implemented, each catering to a different overloaded instance of the
2393method). Internally, @value{GDBN} invokes the @code{match} method of a
2394matcher to match the class type and method name. On a match, the
2395@code{match} method returns a list of matching @emph{worker} objects.
2396Each worker object typically corresponds to an overloaded instance of
2397the xmethod. They implement a @code{get_arg_types} method which
2398returns a sequence of types corresponding to the arguments the xmethod
2399requires. @value{GDBN} uses this sequence of types to perform
2400overload resolution and picks a winning xmethod worker. A winner
2401is also selected from among the methods @value{GDBN} finds in the
2402C@t{++} source code. Next, the winning xmethod worker and the
2403winning C@t{++} method are compared to select an overall winner. In
2404case of a tie between a xmethod worker and a C@t{++} method, the
2405xmethod worker is selected as the winner. That is, if a winning
2406xmethod worker is found to be equivalent to the winning C@t{++}
2407method, then the xmethod worker is treated as a replacement for
2408the C@t{++} method. @value{GDBN} uses the overall winner to invoke the
2409method. If the winning xmethod worker is the overall winner, then
897c3d32 2410the corresponding xmethod is invoked via the @code{__call__} method
0c6e92a5
SC
2411of the worker object.
2412
2413If one wants to implement an xmethod as a replacement for an
2414existing C@t{++} method, then they have to implement an equivalent
2415xmethod which has exactly the same name and takes arguments of
2416exactly the same type as the C@t{++} method. If the user wants to
2417invoke the C@t{++} method even though a replacement xmethod is
2418available for that method, then they can disable the xmethod.
2419
2420@xref{Xmethod API}, for API to implement xmethods in Python.
2421@xref{Writing an Xmethod}, for implementing xmethods in Python.
2422
2423@node Xmethod API
2424@subsubsection Xmethod API
2425@cindex xmethod API
2426
2427The @value{GDBN} Python API provides classes, interfaces and functions
2428to implement, register and manipulate xmethods.
2429@xref{Xmethods In Python}.
2430
2431An xmethod matcher should be an instance of a class derived from
2432@code{XMethodMatcher} defined in the module @code{gdb.xmethod}, or an
2433object with similar interface and attributes. An instance of
2434@code{XMethodMatcher} has the following attributes:
2435
2436@defvar name
2437The name of the matcher.
2438@end defvar
2439
2440@defvar enabled
2441A boolean value indicating whether the matcher is enabled or disabled.
2442@end defvar
2443
2444@defvar methods
2445A list of named methods managed by the matcher. Each object in the list
2446is an instance of the class @code{XMethod} defined in the module
2447@code{gdb.xmethod}, or any object with the following attributes:
2448
2449@table @code
2450
2451@item name
2452Name of the xmethod which should be unique for each xmethod
2453managed by the matcher.
2454
2455@item enabled
2456A boolean value indicating whether the xmethod is enabled or
2457disabled.
2458
2459@end table
2460
2461The class @code{XMethod} is a convenience class with same
2462attributes as above along with the following constructor:
2463
dd5d5494 2464@defun XMethod.__init__ (self, name)
0c6e92a5
SC
2465Constructs an enabled xmethod with name @var{name}.
2466@end defun
2467@end defvar
2468
2469@noindent
2470The @code{XMethodMatcher} class has the following methods:
2471
dd5d5494 2472@defun XMethodMatcher.__init__ (self, name)
0c6e92a5
SC
2473Constructs an enabled xmethod matcher with name @var{name}. The
2474@code{methods} attribute is initialized to @code{None}.
2475@end defun
2476
dd5d5494 2477@defun XMethodMatcher.match (self, class_type, method_name)
0c6e92a5
SC
2478Derived classes should override this method. It should return a
2479xmethod worker object (or a sequence of xmethod worker
2480objects) matching the @var{class_type} and @var{method_name}.
2481@var{class_type} is a @code{gdb.Type} object, and @var{method_name}
2482is a string value. If the matcher manages named methods as listed in
2483its @code{methods} attribute, then only those worker objects whose
2484corresponding entries in the @code{methods} list are enabled should be
2485returned.
2486@end defun
2487
2488An xmethod worker should be an instance of a class derived from
2489@code{XMethodWorker} defined in the module @code{gdb.xmethod},
2490or support the following interface:
2491
dd5d5494 2492@defun XMethodWorker.get_arg_types (self)
0c6e92a5
SC
2493This method returns a sequence of @code{gdb.Type} objects corresponding
2494to the arguments that the xmethod takes. It can return an empty
2495sequence or @code{None} if the xmethod does not take any arguments.
2496If the xmethod takes a single argument, then a single
2497@code{gdb.Type} object corresponding to it can be returned.
2498@end defun
2499
2ce1cdbf
DE
2500@defun XMethodWorker.get_result_type (self, *args)
2501This method returns a @code{gdb.Type} object representing the type
2502of the result of invoking this xmethod.
2503The @var{args} argument is the same tuple of arguments that would be
2504passed to the @code{__call__} method of this worker.
2505@end defun
2506
dd5d5494 2507@defun XMethodWorker.__call__ (self, *args)
0c6e92a5
SC
2508This is the method which does the @emph{work} of the xmethod. The
2509@var{args} arguments is the tuple of arguments to the xmethod. Each
2510element in this tuple is a gdb.Value object. The first element is
2511always the @code{this} pointer value.
2512@end defun
2513
2514For @value{GDBN} to lookup xmethods, the xmethod matchers
2515should be registered using the following function defined in the module
2516@code{gdb.xmethod}:
2517
dd5d5494 2518@defun register_xmethod_matcher (locus, matcher, replace=False)
0c6e92a5
SC
2519The @code{matcher} is registered with @code{locus}, replacing an
2520existing matcher with the same name as @code{matcher} if
2521@code{replace} is @code{True}. @code{locus} can be a
2522@code{gdb.Objfile} object (@pxref{Objfiles In Python}), or a
1e47491b 2523@code{gdb.Progspace} object (@pxref{Progspaces In Python}), or
0c6e92a5
SC
2524@code{None}. If it is @code{None}, then @code{matcher} is registered
2525globally.
2526@end defun
2527
2528@node Writing an Xmethod
2529@subsubsection Writing an Xmethod
2530@cindex writing xmethods in Python
2531
2532Implementing xmethods in Python will require implementing xmethod
2533matchers and xmethod workers (@pxref{Xmethods In Python}). Consider
2534the following C@t{++} class:
2535
2536@smallexample
2537class MyClass
2538@{
2539public:
2540 MyClass (int a) : a_(a) @{ @}
2541
2542 int geta (void) @{ return a_; @}
2543 int operator+ (int b);
2544
2545private:
2546 int a_;
2547@};
2548
2549int
2550MyClass::operator+ (int b)
2551@{
2552 return a_ + b;
2553@}
2554@end smallexample
2555
2556@noindent
2557Let us define two xmethods for the class @code{MyClass}, one
2558replacing the method @code{geta}, and another adding an overloaded
2559flavor of @code{operator+} which takes a @code{MyClass} argument (the
2560C@t{++} code above already has an overloaded @code{operator+}
2561which takes an @code{int} argument). The xmethod matcher can be
2562defined as follows:
2563
2564@smallexample
2565class MyClass_geta(gdb.xmethod.XMethod):
2566 def __init__(self):
2567 gdb.xmethod.XMethod.__init__(self, 'geta')
2568
2569 def get_worker(self, method_name):
2570 if method_name == 'geta':
2571 return MyClassWorker_geta()
2572
2573
2574class MyClass_sum(gdb.xmethod.XMethod):
2575 def __init__(self):
2576 gdb.xmethod.XMethod.__init__(self, 'sum')
2577
2578 def get_worker(self, method_name):
2579 if method_name == 'operator+':
2580 return MyClassWorker_plus()
2581
2582
2583class MyClassMatcher(gdb.xmethod.XMethodMatcher):
2584 def __init__(self):
2585 gdb.xmethod.XMethodMatcher.__init__(self, 'MyClassMatcher')
2586 # List of methods 'managed' by this matcher
2587 self.methods = [MyClass_geta(), MyClass_sum()]
2588
2589 def match(self, class_type, method_name):
2590 if class_type.tag != 'MyClass':
2591 return None
2592 workers = []
2593 for method in self.methods:
2594 if method.enabled:
2595 worker = method.get_worker(method_name)
2596 if worker:
2597 workers.append(worker)
2598
2599 return workers
2600@end smallexample
2601
2602@noindent
2603Notice that the @code{match} method of @code{MyClassMatcher} returns
2604a worker object of type @code{MyClassWorker_geta} for the @code{geta}
2605method, and a worker object of type @code{MyClassWorker_plus} for the
2606@code{operator+} method. This is done indirectly via helper classes
2607derived from @code{gdb.xmethod.XMethod}. One does not need to use the
2608@code{methods} attribute in a matcher as it is optional. However, if a
2609matcher manages more than one xmethod, it is a good practice to list the
2610xmethods in the @code{methods} attribute of the matcher. This will then
2611facilitate enabling and disabling individual xmethods via the
2612@code{enable/disable} commands. Notice also that a worker object is
2613returned only if the corresponding entry in the @code{methods} attribute
2614of the matcher is enabled.
2615
2616The implementation of the worker classes returned by the matcher setup
2617above is as follows:
2618
2619@smallexample
2620class MyClassWorker_geta(gdb.xmethod.XMethodWorker):
2621 def get_arg_types(self):
2622 return None
2ce1cdbf
DE
2623
2624 def get_result_type(self, obj):
2625 return gdb.lookup_type('int')
0c6e92a5
SC
2626
2627 def __call__(self, obj):
2628 return obj['a_']
2629
2630
2631class MyClassWorker_plus(gdb.xmethod.XMethodWorker):
2632 def get_arg_types(self):
2633 return gdb.lookup_type('MyClass')
2ce1cdbf
DE
2634
2635 def get_result_type(self, obj):
2636 return gdb.lookup_type('int')
0c6e92a5
SC
2637
2638 def __call__(self, obj, other):
2639 return obj['a_'] + other['a_']
2640@end smallexample
2641
2642For @value{GDBN} to actually lookup a xmethod, it has to be
2643registered with it. The matcher defined above is registered with
2644@value{GDBN} globally as follows:
2645
2646@smallexample
2647gdb.xmethod.register_xmethod_matcher(None, MyClassMatcher())
2648@end smallexample
2649
2650If an object @code{obj} of type @code{MyClass} is initialized in C@t{++}
2651code as follows:
2652
2653@smallexample
2654MyClass obj(5);
2655@end smallexample
2656
2657@noindent
2658then, after loading the Python script defining the xmethod matchers
2659and workers into @code{GDBN}, invoking the method @code{geta} or using
2660the operator @code{+} on @code{obj} will invoke the xmethods
2661defined above:
2662
2663@smallexample
2664(gdb) p obj.geta()
2665$1 = 5
2666
2667(gdb) p obj + obj
2668$2 = 10
2669@end smallexample
2670
2671Consider another example with a C++ template class:
2672
2673@smallexample
2674template <class T>
2675class MyTemplate
2676@{
2677public:
2678 MyTemplate () : dsize_(10), data_ (new T [10]) @{ @}
2679 ~MyTemplate () @{ delete [] data_; @}
2680
2681 int footprint (void)
2682 @{
2683 return sizeof (T) * dsize_ + sizeof (MyTemplate<T>);
2684 @}
2685
2686private:
2687 int dsize_;
2688 T *data_;
2689@};
2690@end smallexample
2691
2692Let us implement an xmethod for the above class which serves as a
2693replacement for the @code{footprint} method. The full code listing
2694of the xmethod workers and xmethod matchers is as follows:
2695
2696@smallexample
2697class MyTemplateWorker_footprint(gdb.xmethod.XMethodWorker):
2698 def __init__(self, class_type):
2699 self.class_type = class_type
2ce1cdbf 2700
0c6e92a5
SC
2701 def get_arg_types(self):
2702 return None
2ce1cdbf
DE
2703
2704 def get_result_type(self):
2705 return gdb.lookup_type('int')
2706
0c6e92a5
SC
2707 def __call__(self, obj):
2708 return (self.class_type.sizeof +
2709 obj['dsize_'] *
2710 self.class_type.template_argument(0).sizeof)
2711
2712
2713class MyTemplateMatcher_footprint(gdb.xmethod.XMethodMatcher):
2714 def __init__(self):
2715 gdb.xmethod.XMethodMatcher.__init__(self, 'MyTemplateMatcher')
2716
2717 def match(self, class_type, method_name):
2718 if (re.match('MyTemplate<[ \t\n]*[_a-zA-Z][ _a-zA-Z0-9]*>',
2719 class_type.tag) and
2720 method_name == 'footprint'):
2721 return MyTemplateWorker_footprint(class_type)
2722@end smallexample
2723
2724Notice that, in this example, we have not used the @code{methods}
2725attribute of the matcher as the matcher manages only one xmethod. The
2726user can enable/disable this xmethod by enabling/disabling the matcher
2727itself.
2728
329baa95
DE
2729@node Inferiors In Python
2730@subsubsection Inferiors In Python
2731@cindex inferiors in Python
2732
2733@findex gdb.Inferior
2734Programs which are being run under @value{GDBN} are called inferiors
2735(@pxref{Inferiors and Programs}). Python scripts can access
2736information about and manipulate inferiors controlled by @value{GDBN}
2737via objects of the @code{gdb.Inferior} class.
2738
2739The following inferior-related functions are available in the @code{gdb}
2740module:
2741
2742@defun gdb.inferiors ()
2743Return a tuple containing all inferior objects.
2744@end defun
2745
2746@defun gdb.selected_inferior ()
2747Return an object representing the current inferior.
2748@end defun
2749
2750A @code{gdb.Inferior} object has the following attributes:
2751
2752@defvar Inferior.num
2753ID of inferior, as assigned by GDB.
2754@end defvar
2755
2756@defvar Inferior.pid
2757Process ID of the inferior, as assigned by the underlying operating
2758system.
2759@end defvar
2760
2761@defvar Inferior.was_attached
2762Boolean signaling whether the inferior was created using `attach', or
2763started by @value{GDBN} itself.
2764@end defvar
2765
2766A @code{gdb.Inferior} object has the following methods:
2767
2768@defun Inferior.is_valid ()
2769Returns @code{True} if the @code{gdb.Inferior} object is valid,
2770@code{False} if not. A @code{gdb.Inferior} object will become invalid
2771if the inferior no longer exists within @value{GDBN}. All other
2772@code{gdb.Inferior} methods will throw an exception if it is invalid
2773at the time the method is called.
2774@end defun
2775
2776@defun Inferior.threads ()
2777This method returns a tuple holding all the threads which are valid
2778when it is called. If there are no valid threads, the method will
2779return an empty tuple.
2780@end defun
2781
2782@findex Inferior.read_memory
2783@defun Inferior.read_memory (address, length)
a86c90e6 2784Read @var{length} addressable memory units from the inferior, starting at
329baa95
DE
2785@var{address}. Returns a buffer object, which behaves much like an array
2786or a string. It can be modified and given to the
79778b30 2787@code{Inferior.write_memory} function. In Python 3, the return
329baa95
DE
2788value is a @code{memoryview} object.
2789@end defun
2790
2791@findex Inferior.write_memory
2792@defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
2793Write the contents of @var{buffer} to the inferior, starting at
2794@var{address}. The @var{buffer} parameter must be a Python object
2795which supports the buffer protocol, i.e., a string, an array or the
2796object returned from @code{Inferior.read_memory}. If given, @var{length}
a86c90e6
SM
2797determines the number of addressable memory units from @var{buffer} to be
2798written.
329baa95
DE
2799@end defun
2800
2801@findex gdb.search_memory
2802@defun Inferior.search_memory (address, length, pattern)
2803Search a region of the inferior memory starting at @var{address} with
2804the given @var{length} using the search pattern supplied in
2805@var{pattern}. The @var{pattern} parameter must be a Python object
2806which supports the buffer protocol, i.e., a string, an array or the
2807object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
2808containing the address where the pattern was found, or @code{None} if
2809the pattern could not be found.
2810@end defun
2811
da2c323b
KB
2812@findex Inferior.thread_from_thread_handle
2813@defun Inferior.thread_from_thread_handle (thread_handle)
2814Return the thread object corresponding to @var{thread_handle}, a thread
2815library specific data structure such as @code{pthread_t} for pthreads
2816library implementations.
2817@end defun
2818
329baa95
DE
2819@node Events In Python
2820@subsubsection Events In Python
2821@cindex inferior events in Python
2822
2823@value{GDBN} provides a general event facility so that Python code can be
2824notified of various state changes, particularly changes that occur in
2825the inferior.
2826
2827An @dfn{event} is just an object that describes some state change. The
2828type of the object and its attributes will vary depending on the details
2829of the change. All the existing events are described below.
2830
2831In order to be notified of an event, you must register an event handler
2832with an @dfn{event registry}. An event registry is an object in the
2833@code{gdb.events} module which dispatches particular events. A registry
2834provides methods to register and unregister event handlers:
2835
2836@defun EventRegistry.connect (object)
2837Add the given callable @var{object} to the registry. This object will be
2838called when an event corresponding to this registry occurs.
2839@end defun
2840
2841@defun EventRegistry.disconnect (object)
2842Remove the given @var{object} from the registry. Once removed, the object
2843will no longer receive notifications of events.
2844@end defun
2845
2846Here is an example:
2847
2848@smallexample
2849def exit_handler (event):
2850 print "event type: exit"
2851 print "exit code: %d" % (event.exit_code)
2852
2853gdb.events.exited.connect (exit_handler)
2854@end smallexample
2855
2856In the above example we connect our handler @code{exit_handler} to the
2857registry @code{events.exited}. Once connected, @code{exit_handler} gets
2858called when the inferior exits. The argument @dfn{event} in this example is
2859of type @code{gdb.ExitedEvent}. As you can see in the example the
2860@code{ExitedEvent} object has an attribute which indicates the exit code of
2861the inferior.
2862
2863The following is a listing of the event registries that are available and
2864details of the events they emit:
2865
2866@table @code
2867
2868@item events.cont
2869Emits @code{gdb.ThreadEvent}.
2870
2871Some events can be thread specific when @value{GDBN} is running in non-stop
2872mode. When represented in Python, these events all extend
2873@code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
2874events which are emitted by this or other modules might extend this event.
2875Examples of these events are @code{gdb.BreakpointEvent} and
2876@code{gdb.ContinueEvent}.
2877
2878@defvar ThreadEvent.inferior_thread
2879In non-stop mode this attribute will be set to the specific thread which was
2880involved in the emitted event. Otherwise, it will be set to @code{None}.
2881@end defvar
2882
2883Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
2884
2885This event indicates that the inferior has been continued after a stop. For
2886inherited attribute refer to @code{gdb.ThreadEvent} above.
2887
2888@item events.exited
2889Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
2890@code{events.ExitedEvent} has two attributes:
2891@defvar ExitedEvent.exit_code
2892An integer representing the exit code, if available, which the inferior
2893has returned. (The exit code could be unavailable if, for example,
2894@value{GDBN} detaches from the inferior.) If the exit code is unavailable,
2895the attribute does not exist.
2896@end defvar
373832b6 2897@defvar ExitedEvent.inferior
329baa95
DE
2898A reference to the inferior which triggered the @code{exited} event.
2899@end defvar
2900
2901@item events.stop
2902Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
2903
2904Indicates that the inferior has stopped. All events emitted by this registry
2905extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
2906will indicate the stopped thread when @value{GDBN} is running in non-stop
2907mode. Refer to @code{gdb.ThreadEvent} above for more details.
2908
2909Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
2910
2911This event indicates that the inferior or one of its threads has received as
2912signal. @code{gdb.SignalEvent} has the following attributes:
2913
2914@defvar SignalEvent.stop_signal
2915A string representing the signal received by the inferior. A list of possible
2916signal values can be obtained by running the command @code{info signals} in
2917the @value{GDBN} command prompt.
2918@end defvar
2919
2920Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
2921
2922@code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
2923been hit, and has the following attributes:
2924
2925@defvar BreakpointEvent.breakpoints
2926A sequence containing references to all the breakpoints (type
2927@code{gdb.Breakpoint}) that were hit.
2928@xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
2929@end defvar
2930@defvar BreakpointEvent.breakpoint
2931A reference to the first breakpoint that was hit.
2932This function is maintained for backward compatibility and is now deprecated
2933in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
2934@end defvar
2935
2936@item events.new_objfile
2937Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
2938been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
2939
2940@defvar NewObjFileEvent.new_objfile
2941A reference to the object file (@code{gdb.Objfile}) which has been loaded.
2942@xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
2943@end defvar
2944
4ffbba72
DE
2945@item events.clear_objfiles
2946Emits @code{gdb.ClearObjFilesEvent} which indicates that the list of object
2947files for a program space has been reset.
2948@code{gdb.ClearObjFilesEvent} has one attribute:
2949
2950@defvar ClearObjFilesEvent.progspace
2951A reference to the program space (@code{gdb.Progspace}) whose objfile list has
2952been cleared. @xref{Progspaces In Python}.
2953@end defvar
2954
162078c8
NB
2955@item events.inferior_call_pre
2956Emits @code{gdb.InferiorCallPreEvent} which indicates that a function in
2957the inferior is about to be called.
2958
2959@defvar InferiorCallPreEvent.ptid
2960The thread in which the call will be run.
2961@end defvar
2962
2963@defvar InferiorCallPreEvent.address
2964The location of the function to be called.
2965@end defvar
2966
2967@item events.inferior_call_post
2968Emits @code{gdb.InferiorCallPostEvent} which indicates that a function in
2969the inferior has returned.
2970
2971@defvar InferiorCallPostEvent.ptid
2972The thread in which the call was run.
2973@end defvar
2974
2975@defvar InferiorCallPostEvent.address
2976The location of the function that was called.
2977@end defvar
2978
2979@item events.memory_changed
2980Emits @code{gdb.MemoryChangedEvent} which indicates that the memory of the
2981inferior has been modified by the @value{GDBN} user, for instance via a
2982command like @w{@code{set *addr = value}}. The event has the following
2983attributes:
2984
2985@defvar MemoryChangedEvent.address
2986The start address of the changed region.
2987@end defvar
2988
2989@defvar MemoryChangedEvent.length
2990Length in bytes of the changed region.
2991@end defvar
2992
2993@item events.register_changed
2994Emits @code{gdb.RegisterChangedEvent} which indicates that a register in the
2995inferior has been modified by the @value{GDBN} user.
2996
2997@defvar RegisterChangedEvent.frame
2998A gdb.Frame object representing the frame in which the register was modified.
2999@end defvar
3000@defvar RegisterChangedEvent.regnum
3001Denotes which register was modified.
3002@end defvar
3003
dac790e1
TT
3004@item events.breakpoint_created
3005This is emitted when a new breakpoint has been created. The argument
3006that is passed is the new @code{gdb.Breakpoint} object.
3007
3008@item events.breakpoint_modified
3009This is emitted when a breakpoint has been modified in some way. The
3010argument that is passed is the new @code{gdb.Breakpoint} object.
3011
3012@item events.breakpoint_deleted
3013This is emitted when a breakpoint has been deleted. The argument that
3014is passed is the @code{gdb.Breakpoint} object. When this event is
3015emitted, the @code{gdb.Breakpoint} object will already be in its
3016invalid state; that is, the @code{is_valid} method will return
3017@code{False}.
3018
3f77c769
TT
3019@item events.before_prompt
3020This event carries no payload. It is emitted each time @value{GDBN}
3021presents a prompt to the user.
3022
7c96f8c1
TT
3023@item events.new_inferior
3024This is emitted when a new inferior is created. Note that the
3025inferior is not necessarily running; in fact, it may not even have an
3026associated executable.
3027
3028The event is of type @code{gdb.NewInferiorEvent}. This has a single
3029attribute:
3030
3031@defvar NewInferiorEvent.inferior
3032The new inferior, a @code{gdb.Inferior} object.
3033@end defvar
3034
3035@item events.inferior_deleted
3036This is emitted when an inferior has been deleted. Note that this is
3037not the same as process exit; it is notified when the inferior itself
3038is removed, say via @code{remove-inferiors}.
3039
3040The event is of type @code{gdb.InferiorDeletedEvent}. This has a single
3041attribute:
3042
3043@defvar NewInferiorEvent.inferior
3044The inferior that is being removed, a @code{gdb.Inferior} object.
3045@end defvar
3046
3047@item events.new_thread
3048This is emitted when @value{GDBN} notices a new thread. The event is of
3049type @code{gdb.NewThreadEvent}, which extends @code{gdb.ThreadEvent}.
3050This has a single attribute:
3051
3052@defvar NewThreadEvent.inferior_thread
3053The new thread.
3054@end defvar
3055
329baa95
DE
3056@end table
3057
3058@node Threads In Python
3059@subsubsection Threads In Python
3060@cindex threads in python
3061
3062@findex gdb.InferiorThread
3063Python scripts can access information about, and manipulate inferior threads
3064controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
3065
3066The following thread-related functions are available in the @code{gdb}
3067module:
3068
3069@findex gdb.selected_thread
3070@defun gdb.selected_thread ()
3071This function returns the thread object for the selected thread. If there
3072is no selected thread, this will return @code{None}.
3073@end defun
3074
3075A @code{gdb.InferiorThread} object has the following attributes:
3076
3077@defvar InferiorThread.name
3078The name of the thread. If the user specified a name using
3079@code{thread name}, then this returns that name. Otherwise, if an
3080OS-supplied name is available, then it is returned. Otherwise, this
3081returns @code{None}.
3082
3083This attribute can be assigned to. The new value must be a string
3084object, which sets the new name, or @code{None}, which removes any
3085user-specified thread name.
3086@end defvar
3087
3088@defvar InferiorThread.num
5d5658a1 3089The per-inferior number of the thread, as assigned by GDB.
329baa95
DE
3090@end defvar
3091
22a02324
PA
3092@defvar InferiorThread.global_num
3093The global ID of the thread, as assigned by GDB. You can use this to
3094make Python breakpoints thread-specific, for example
3095(@pxref{python_breakpoint_thread,,The Breakpoint.thread attribute}).
3096@end defvar
3097
329baa95
DE
3098@defvar InferiorThread.ptid
3099ID of the thread, as assigned by the operating system. This attribute is a
3100tuple containing three integers. The first is the Process ID (PID); the second
3101is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
3102Either the LWPID or TID may be 0, which indicates that the operating system
3103does not use that identifier.
3104@end defvar
3105
84654457
PA
3106@defvar InferiorThread.inferior
3107The inferior this thread belongs to. This attribute is represented as
3108a @code{gdb.Inferior} object. This attribute is not writable.
3109@end defvar
3110
329baa95
DE
3111A @code{gdb.InferiorThread} object has the following methods:
3112
3113@defun InferiorThread.is_valid ()
3114Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
3115@code{False} if not. A @code{gdb.InferiorThread} object will become
3116invalid if the thread exits, or the inferior that the thread belongs
3117is deleted. All other @code{gdb.InferiorThread} methods will throw an
3118exception if it is invalid at the time the method is called.
3119@end defun
3120
3121@defun InferiorThread.switch ()
3122This changes @value{GDBN}'s currently selected thread to the one represented
3123by this object.
3124@end defun
3125
3126@defun InferiorThread.is_stopped ()
3127Return a Boolean indicating whether the thread is stopped.
3128@end defun
3129
3130@defun InferiorThread.is_running ()
3131Return a Boolean indicating whether the thread is running.
3132@end defun
3133
3134@defun InferiorThread.is_exited ()
3135Return a Boolean indicating whether the thread is exited.
3136@end defun
3137
0a0faf9f
TW
3138@node Recordings In Python
3139@subsubsection Recordings In Python
3140@cindex recordings in python
3141
3142The following recordings-related functions
3143(@pxref{Process Record and Replay}) are available in the @code{gdb}
3144module:
3145
3146@defun gdb.start_recording (@r{[}method@r{]}, @r{[}format@r{]})
3147Start a recording using the given @var{method} and @var{format}. If
3148no @var{format} is given, the default format for the recording method
3149is used. If no @var{method} is given, the default method will be used.
3150Returns a @code{gdb.Record} object on success. Throw an exception on
3151failure.
3152
3153The following strings can be passed as @var{method}:
3154
3155@itemize @bullet
3156@item
3157@code{"full"}
3158@item
3159@code{"btrace"}: Possible values for @var{format}: @code{"pt"},
3160@code{"bts"} or leave out for default format.
3161@end itemize
3162@end defun
3163
3164@defun gdb.current_recording ()
3165Access a currently running recording. Return a @code{gdb.Record}
3166object on success. Return @code{None} if no recording is currently
3167active.
3168@end defun
3169
3170@defun gdb.stop_recording ()
3171Stop the current recording. Throw an exception if no recording is
3172currently active. All record objects become invalid after this call.
3173@end defun
3174
3175A @code{gdb.Record} object has the following attributes:
3176
0a0faf9f
TW
3177@defvar Record.method
3178A string with the current recording method, e.g.@: @code{full} or
3179@code{btrace}.
3180@end defvar
3181
3182@defvar Record.format
3183A string with the current recording format, e.g.@: @code{bt}, @code{pts} or
3184@code{None}.
3185@end defvar
3186
3187@defvar Record.begin
3188A method specific instruction object representing the first instruction
3189in this recording.
3190@end defvar
3191
3192@defvar Record.end
3193A method specific instruction object representing the current
3194instruction, that is not actually part of the recording.
3195@end defvar
3196
3197@defvar Record.replay_position
3198The instruction representing the current replay position. If there is
3199no replay active, this will be @code{None}.
3200@end defvar
3201
3202@defvar Record.instruction_history
3203A list with all recorded instructions.
3204@end defvar
3205
3206@defvar Record.function_call_history
3207A list with all recorded function call segments.
3208@end defvar
3209
3210A @code{gdb.Record} object has the following methods:
3211
3212@defun Record.goto (instruction)
3213Move the replay position to the given @var{instruction}.
3214@end defun
3215
d050f7d7
TW
3216The common @code{gdb.Instruction} class that recording method specific
3217instruction objects inherit from, has the following attributes:
0a0faf9f 3218
d050f7d7 3219@defvar Instruction.pc
913aeadd 3220An integer representing this instruction's address.
0a0faf9f
TW
3221@end defvar
3222
d050f7d7 3223@defvar Instruction.data
913aeadd
TW
3224A buffer with the raw instruction data. In Python 3, the return value is a
3225@code{memoryview} object.
0a0faf9f
TW
3226@end defvar
3227
d050f7d7 3228@defvar Instruction.decoded
913aeadd 3229A human readable string with the disassembled instruction.
0a0faf9f
TW
3230@end defvar
3231
d050f7d7 3232@defvar Instruction.size
913aeadd 3233The size of the instruction in bytes.
0a0faf9f
TW
3234@end defvar
3235
d050f7d7
TW
3236Additionally @code{gdb.RecordInstruction} has the following attributes:
3237
3238@defvar RecordInstruction.number
3239An integer identifying this instruction. @code{number} corresponds to
3240the numbers seen in @code{record instruction-history}
3241(@pxref{Process Record and Replay}).
3242@end defvar
3243
3244@defvar RecordInstruction.sal
3245A @code{gdb.Symtab_and_line} object representing the associated symtab
3246and line of this instruction. May be @code{None} if no debug information is
3247available.
3248@end defvar
3249
0ed5da75 3250@defvar RecordInstruction.is_speculative
d050f7d7 3251A boolean indicating whether the instruction was executed speculatively.
913aeadd
TW
3252@end defvar
3253
3254If an error occured during recording or decoding a recording, this error is
3255represented by a @code{gdb.RecordGap} object in the instruction list. It has
3256the following attributes:
3257
3258@defvar RecordGap.number
3259An integer identifying this gap. @code{number} corresponds to the numbers seen
3260in @code{record instruction-history} (@pxref{Process Record and Replay}).
3261@end defvar
3262
3263@defvar RecordGap.error_code
3264A numerical representation of the reason for the gap. The value is specific to
3265the current recording method.
3266@end defvar
3267
3268@defvar RecordGap.error_string
3269A human readable string with the reason for the gap.
0a0faf9f
TW
3270@end defvar
3271
14f819c8 3272A @code{gdb.RecordFunctionSegment} object has the following attributes:
0a0faf9f 3273
14f819c8
TW
3274@defvar RecordFunctionSegment.number
3275An integer identifying this function segment. @code{number} corresponds to
0a0faf9f
TW
3276the numbers seen in @code{record function-call-history}
3277(@pxref{Process Record and Replay}).
3278@end defvar
3279
14f819c8 3280@defvar RecordFunctionSegment.symbol
0a0faf9f 3281A @code{gdb.Symbol} object representing the associated symbol. May be
14f819c8 3282@code{None} if no debug information is available.
0a0faf9f
TW
3283@end defvar
3284
14f819c8 3285@defvar RecordFunctionSegment.level
0a0faf9f
TW
3286An integer representing the function call's stack level. May be
3287@code{None} if the function call is a gap.
3288@end defvar
3289
14f819c8 3290@defvar RecordFunctionSegment.instructions
0ed5da75 3291A list of @code{gdb.RecordInstruction} or @code{gdb.RecordGap} objects
913aeadd 3292associated with this function call.
0a0faf9f
TW
3293@end defvar
3294
14f819c8
TW
3295@defvar RecordFunctionSegment.up
3296A @code{gdb.RecordFunctionSegment} object representing the caller's
0a0faf9f
TW
3297function segment. If the call has not been recorded, this will be the
3298function segment to which control returns. If neither the call nor the
3299return have been recorded, this will be @code{None}.
3300@end defvar
3301
14f819c8
TW
3302@defvar RecordFunctionSegment.prev
3303A @code{gdb.RecordFunctionSegment} object representing the previous
0a0faf9f
TW
3304segment of this function call. May be @code{None}.
3305@end defvar
3306
14f819c8
TW
3307@defvar RecordFunctionSegment.next
3308A @code{gdb.RecordFunctionSegment} object representing the next segment of
0a0faf9f
TW
3309this function call. May be @code{None}.
3310@end defvar
3311
3312The following example demonstrates the usage of these objects and
3313functions to create a function that will rewind a record to the last
3314time a function in a different file was executed. This would typically
3315be used to track the execution of user provided callback functions in a
3316library which typically are not visible in a back trace.
3317
3318@smallexample
3319def bringback ():
3320 rec = gdb.current_recording ()
3321 if not rec:
3322 return
3323
3324 insn = rec.instruction_history
3325 if len (insn) == 0:
3326 return
3327
3328 try:
3329 position = insn.index (rec.replay_position)
3330 except:
3331 position = -1
3332 try:
3333 filename = insn[position].sal.symtab.fullname ()
3334 except:
3335 filename = None
3336
3337 for i in reversed (insn[:position]):
3338 try:
3339 current = i.sal.symtab.fullname ()
3340 except:
3341 current = None
3342
3343 if filename == current:
3344 continue
3345
3346 rec.goto (i)
3347 return
3348@end smallexample
3349
3350Another possible application is to write a function that counts the
3351number of code executions in a given line range. This line range can
3352contain parts of functions or span across several functions and is not
3353limited to be contiguous.
3354
3355@smallexample
3356def countrange (filename, linerange):
3357 count = 0
3358
3359 def filter_only (file_name):
3360 for call in gdb.current_recording ().function_call_history:
3361 try:
3362 if file_name in call.symbol.symtab.fullname ():
3363 yield call
3364 except:
3365 pass
3366
3367 for c in filter_only (filename):
3368 for i in c.instructions:
3369 try:
3370 if i.sal.line in linerange:
3371 count += 1
3372 break;
3373 except:
3374 pass
3375
3376 return count
3377@end smallexample
3378
329baa95
DE
3379@node Commands In Python
3380@subsubsection Commands In Python
3381
3382@cindex commands in python
3383@cindex python commands
3384You can implement new @value{GDBN} CLI commands in Python. A CLI
3385command is implemented using an instance of the @code{gdb.Command}
3386class, most commonly using a subclass.
3387
3388@defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
3389The object initializer for @code{Command} registers the new command
3390with @value{GDBN}. This initializer is normally invoked from the
3391subclass' own @code{__init__} method.
3392
3393@var{name} is the name of the command. If @var{name} consists of
3394multiple words, then the initial words are looked for as prefix
3395commands. In this case, if one of the prefix commands does not exist,
3396an exception is raised.
3397
3398There is no support for multi-line commands.
3399
3400@var{command_class} should be one of the @samp{COMMAND_} constants
3401defined below. This argument tells @value{GDBN} how to categorize the
3402new command in the help system.
3403
3404@var{completer_class} is an optional argument. If given, it should be
3405one of the @samp{COMPLETE_} constants defined below. This argument
3406tells @value{GDBN} how to perform completion for this command. If not
3407given, @value{GDBN} will attempt to complete using the object's
3408@code{complete} method (see below); if no such method is found, an
3409error will occur when completion is attempted.
3410
3411@var{prefix} is an optional argument. If @code{True}, then the new
3412command is a prefix command; sub-commands of this command may be
3413registered.
3414
3415The help text for the new command is taken from the Python
3416documentation string for the command's class, if there is one. If no
3417documentation string is provided, the default value ``This command is
3418not documented.'' is used.
3419@end defun
3420
3421@cindex don't repeat Python command
3422@defun Command.dont_repeat ()
3423By default, a @value{GDBN} command is repeated when the user enters a
3424blank line at the command prompt. A command can suppress this
3425behavior by invoking the @code{dont_repeat} method. This is similar
3426to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
3427@end defun
3428
3429@defun Command.invoke (argument, from_tty)
3430This method is called by @value{GDBN} when this command is invoked.
3431
3432@var{argument} is a string. It is the argument to the command, after
3433leading and trailing whitespace has been stripped.
3434
3435@var{from_tty} is a boolean argument. When true, this means that the
3436command was entered by the user at the terminal; when false it means
3437that the command came from elsewhere.
3438
3439If this method throws an exception, it is turned into a @value{GDBN}
3440@code{error} call. Otherwise, the return value is ignored.
3441
3442@findex gdb.string_to_argv
3443To break @var{argument} up into an argv-like string use
3444@code{gdb.string_to_argv}. This function behaves identically to
3445@value{GDBN}'s internal argument lexer @code{buildargv}.
3446It is recommended to use this for consistency.
3447Arguments are separated by spaces and may be quoted.
3448Example:
3449
3450@smallexample
3451print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
3452['1', '2 "3', '4 "5', "6 '7"]
3453@end smallexample
3454
3455@end defun
3456
3457@cindex completion of Python commands
3458@defun Command.complete (text, word)
3459This method is called by @value{GDBN} when the user attempts
3460completion on this command. All forms of completion are handled by
3461this method, that is, the @key{TAB} and @key{M-?} key bindings
3462(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
3463complete}).
3464
697aa1b7
EZ
3465The arguments @var{text} and @var{word} are both strings; @var{text}
3466holds the complete command line up to the cursor's location, while
329baa95
DE
3467@var{word} holds the last word of the command line; this is computed
3468using a word-breaking heuristic.
3469
3470The @code{complete} method can return several values:
3471@itemize @bullet
3472@item
3473If the return value is a sequence, the contents of the sequence are
3474used as the completions. It is up to @code{complete} to ensure that the
3475contents actually do complete the word. A zero-length sequence is
3476allowed, it means that there were no completions available. Only
3477string elements of the sequence are used; other elements in the
3478sequence are ignored.
3479
3480@item
3481If the return value is one of the @samp{COMPLETE_} constants defined
3482below, then the corresponding @value{GDBN}-internal completion
3483function is invoked, and its result is used.
3484
3485@item
3486All other results are treated as though there were no available
3487completions.
3488@end itemize
3489@end defun
3490
3491When a new command is registered, it must be declared as a member of
3492some general class of commands. This is used to classify top-level
3493commands in the on-line help system; note that prefix commands are not
3494listed under their own category but rather that of their top-level
3495command. The available classifications are represented by constants
3496defined in the @code{gdb} module:
3497
3498@table @code
3499@findex COMMAND_NONE
3500@findex gdb.COMMAND_NONE
3501@item gdb.COMMAND_NONE
3502The command does not belong to any particular class. A command in
3503this category will not be displayed in any of the help categories.
3504
3505@findex COMMAND_RUNNING
3506@findex gdb.COMMAND_RUNNING
3507@item gdb.COMMAND_RUNNING
3508The command is related to running the inferior. For example,
3509@code{start}, @code{step}, and @code{continue} are in this category.
3510Type @kbd{help running} at the @value{GDBN} prompt to see a list of
3511commands in this category.
3512
3513@findex COMMAND_DATA
3514@findex gdb.COMMAND_DATA
3515@item gdb.COMMAND_DATA
3516The command is related to data or variables. For example,
3517@code{call}, @code{find}, and @code{print} are in this category. Type
3518@kbd{help data} at the @value{GDBN} prompt to see a list of commands
3519in this category.
3520
3521@findex COMMAND_STACK
3522@findex gdb.COMMAND_STACK
3523@item gdb.COMMAND_STACK
3524The command has to do with manipulation of the stack. For example,
3525@code{backtrace}, @code{frame}, and @code{return} are in this
3526category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
3527list of commands in this category.
3528
3529@findex COMMAND_FILES
3530@findex gdb.COMMAND_FILES
3531@item gdb.COMMAND_FILES
3532This class is used for file-related commands. For example,
3533@code{file}, @code{list} and @code{section} are in this category.
3534Type @kbd{help files} at the @value{GDBN} prompt to see a list of
3535commands in this category.
3536
3537@findex COMMAND_SUPPORT
3538@findex gdb.COMMAND_SUPPORT
3539@item gdb.COMMAND_SUPPORT
3540This should be used for ``support facilities'', generally meaning
3541things that are useful to the user when interacting with @value{GDBN},
3542but not related to the state of the inferior. For example,
3543@code{help}, @code{make}, and @code{shell} are in this category. Type
3544@kbd{help support} at the @value{GDBN} prompt to see a list of
3545commands in this category.
3546
3547@findex COMMAND_STATUS
3548@findex gdb.COMMAND_STATUS
3549@item gdb.COMMAND_STATUS
3550The command is an @samp{info}-related command, that is, related to the
3551state of @value{GDBN} itself. For example, @code{info}, @code{macro},
3552and @code{show} are in this category. Type @kbd{help status} at the
3553@value{GDBN} prompt to see a list of commands in this category.
3554
3555@findex COMMAND_BREAKPOINTS
3556@findex gdb.COMMAND_BREAKPOINTS
3557@item gdb.COMMAND_BREAKPOINTS
3558The command has to do with breakpoints. For example, @code{break},
3559@code{clear}, and @code{delete} are in this category. Type @kbd{help
3560breakpoints} at the @value{GDBN} prompt to see a list of commands in
3561this category.
3562
3563@findex COMMAND_TRACEPOINTS
3564@findex gdb.COMMAND_TRACEPOINTS
3565@item gdb.COMMAND_TRACEPOINTS
3566The command has to do with tracepoints. For example, @code{trace},
3567@code{actions}, and @code{tfind} are in this category. Type
3568@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
3569commands in this category.
3570
3571@findex COMMAND_USER
3572@findex gdb.COMMAND_USER
3573@item gdb.COMMAND_USER
3574The command is a general purpose command for the user, and typically
3575does not fit in one of the other categories.
3576Type @kbd{help user-defined} at the @value{GDBN} prompt to see
3577a list of commands in this category, as well as the list of gdb macros
3578(@pxref{Sequences}).
3579
3580@findex COMMAND_OBSCURE
3581@findex gdb.COMMAND_OBSCURE
3582@item gdb.COMMAND_OBSCURE
3583The command is only used in unusual circumstances, or is not of
3584general interest to users. For example, @code{checkpoint},
3585@code{fork}, and @code{stop} are in this category. Type @kbd{help
3586obscure} at the @value{GDBN} prompt to see a list of commands in this
3587category.
3588
3589@findex COMMAND_MAINTENANCE
3590@findex gdb.COMMAND_MAINTENANCE
3591@item gdb.COMMAND_MAINTENANCE
3592The command is only useful to @value{GDBN} maintainers. The
3593@code{maintenance} and @code{flushregs} commands are in this category.
3594Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
3595commands in this category.
3596@end table
3597
3598A new command can use a predefined completion function, either by
3599specifying it via an argument at initialization, or by returning it
3600from the @code{complete} method. These predefined completion
3601constants are all defined in the @code{gdb} module:
3602
b3ce5e5f
DE
3603@vtable @code
3604@vindex COMPLETE_NONE
329baa95
DE
3605@item gdb.COMPLETE_NONE
3606This constant means that no completion should be done.
3607
b3ce5e5f 3608@vindex COMPLETE_FILENAME
329baa95
DE
3609@item gdb.COMPLETE_FILENAME
3610This constant means that filename completion should be performed.
3611
b3ce5e5f 3612@vindex COMPLETE_LOCATION
329baa95
DE
3613@item gdb.COMPLETE_LOCATION
3614This constant means that location completion should be done.
3615@xref{Specify Location}.
3616
b3ce5e5f 3617@vindex COMPLETE_COMMAND
329baa95
DE
3618@item gdb.COMPLETE_COMMAND
3619This constant means that completion should examine @value{GDBN}
3620command names.
3621
b3ce5e5f 3622@vindex COMPLETE_SYMBOL
329baa95
DE
3623@item gdb.COMPLETE_SYMBOL
3624This constant means that completion should be done using symbol names
3625as the source.
3626
b3ce5e5f 3627@vindex COMPLETE_EXPRESSION
329baa95
DE
3628@item gdb.COMPLETE_EXPRESSION
3629This constant means that completion should be done on expressions.
3630Often this means completing on symbol names, but some language
3631parsers also have support for completing on field names.
b3ce5e5f 3632@end vtable
329baa95
DE
3633
3634The following code snippet shows how a trivial CLI command can be
3635implemented in Python:
3636
3637@smallexample
3638class HelloWorld (gdb.Command):
3639 """Greet the whole world."""
3640
3641 def __init__ (self):
3642 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
3643
3644 def invoke (self, arg, from_tty):
3645 print "Hello, World!"
3646
3647HelloWorld ()
3648@end smallexample
3649
3650The last line instantiates the class, and is necessary to trigger the
3651registration of the command with @value{GDBN}. Depending on how the
3652Python code is read into @value{GDBN}, you may need to import the
3653@code{gdb} module explicitly.
3654
3655@node Parameters In Python
3656@subsubsection Parameters In Python
3657
3658@cindex parameters in python
3659@cindex python parameters
3660@tindex gdb.Parameter
3661@tindex Parameter
3662You can implement new @value{GDBN} parameters using Python. A new
3663parameter is implemented as an instance of the @code{gdb.Parameter}
3664class.
3665
3666Parameters are exposed to the user via the @code{set} and
3667@code{show} commands. @xref{Help}.
3668
3669There are many parameters that already exist and can be set in
3670@value{GDBN}. Two examples are: @code{set follow fork} and
3671@code{set charset}. Setting these parameters influences certain
3672behavior in @value{GDBN}. Similarly, you can define parameters that
3673can be used to influence behavior in custom Python scripts and commands.
3674
3675@defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
3676The object initializer for @code{Parameter} registers the new
3677parameter with @value{GDBN}. This initializer is normally invoked
3678from the subclass' own @code{__init__} method.
3679
3680@var{name} is the name of the new parameter. If @var{name} consists
3681of multiple words, then the initial words are looked for as prefix
3682parameters. An example of this can be illustrated with the
3683@code{set print} set of parameters. If @var{name} is
3684@code{print foo}, then @code{print} will be searched as the prefix
3685parameter. In this case the parameter can subsequently be accessed in
3686@value{GDBN} as @code{set print foo}.
3687
3688If @var{name} consists of multiple words, and no prefix parameter group
3689can be found, an exception is raised.
3690
3691@var{command-class} should be one of the @samp{COMMAND_} constants
3692(@pxref{Commands In Python}). This argument tells @value{GDBN} how to
3693categorize the new parameter in the help system.
3694
3695@var{parameter-class} should be one of the @samp{PARAM_} constants
3696defined below. This argument tells @value{GDBN} the type of the new
3697parameter; this information is used for input validation and
3698completion.
3699
3700If @var{parameter-class} is @code{PARAM_ENUM}, then
3701@var{enum-sequence} must be a sequence of strings. These strings
3702represent the possible values for the parameter.
3703
3704If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
3705of a fourth argument will cause an exception to be thrown.
3706
3707The help text for the new parameter is taken from the Python
3708documentation string for the parameter's class, if there is one. If
3709there is no documentation string, a default value is used.
3710@end defun
3711
3712@defvar Parameter.set_doc
3713If this attribute exists, and is a string, then its value is used as
3714the help text for this parameter's @code{set} command. The value is
3715examined when @code{Parameter.__init__} is invoked; subsequent changes
3716have no effect.
3717@end defvar
3718
3719@defvar Parameter.show_doc
3720If this attribute exists, and is a string, then its value is used as
3721the help text for this parameter's @code{show} command. The value is
3722examined when @code{Parameter.__init__} is invoked; subsequent changes
3723have no effect.
3724@end defvar
3725
3726@defvar Parameter.value
3727The @code{value} attribute holds the underlying value of the
3728parameter. It can be read and assigned to just as any other
3729attribute. @value{GDBN} does validation when assignments are made.
3730@end defvar
3731
3732There are two methods that should be implemented in any
3733@code{Parameter} class. These are:
3734
3735@defun Parameter.get_set_string (self)
3736@value{GDBN} will call this method when a @var{parameter}'s value has
3737been changed via the @code{set} API (for example, @kbd{set foo off}).
3738The @code{value} attribute has already been populated with the new
3739value and may be used in output. This method must return a string.
3740@end defun
3741
3742@defun Parameter.get_show_string (self, svalue)
3743@value{GDBN} will call this method when a @var{parameter}'s
3744@code{show} API has been invoked (for example, @kbd{show foo}). The
3745argument @code{svalue} receives the string representation of the
3746current value. This method must return a string.
3747@end defun
3748
3749When a new parameter is defined, its type must be specified. The
3750available types are represented by constants defined in the @code{gdb}
3751module:
3752
3753@table @code
3754@findex PARAM_BOOLEAN
3755@findex gdb.PARAM_BOOLEAN
3756@item gdb.PARAM_BOOLEAN
3757The value is a plain boolean. The Python boolean values, @code{True}
3758and @code{False} are the only valid values.
3759
3760@findex PARAM_AUTO_BOOLEAN
3761@findex gdb.PARAM_AUTO_BOOLEAN
3762@item gdb.PARAM_AUTO_BOOLEAN
3763The value has three possible states: true, false, and @samp{auto}. In
3764Python, true and false are represented using boolean constants, and
3765@samp{auto} is represented using @code{None}.
3766
3767@findex PARAM_UINTEGER
3768@findex gdb.PARAM_UINTEGER
3769@item gdb.PARAM_UINTEGER
3770The value is an unsigned integer. The value of 0 should be
3771interpreted to mean ``unlimited''.
3772
3773@findex PARAM_INTEGER
3774@findex gdb.PARAM_INTEGER
3775@item gdb.PARAM_INTEGER
3776The value is a signed integer. The value of 0 should be interpreted
3777to mean ``unlimited''.
3778
3779@findex PARAM_STRING
3780@findex gdb.PARAM_STRING
3781@item gdb.PARAM_STRING
3782The value is a string. When the user modifies the string, any escape
3783sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
3784translated into corresponding characters and encoded into the current
3785host charset.
3786
3787@findex PARAM_STRING_NOESCAPE
3788@findex gdb.PARAM_STRING_NOESCAPE
3789@item gdb.PARAM_STRING_NOESCAPE
3790The value is a string. When the user modifies the string, escapes are
3791passed through untranslated.
3792
3793@findex PARAM_OPTIONAL_FILENAME
3794@findex gdb.PARAM_OPTIONAL_FILENAME
3795@item gdb.PARAM_OPTIONAL_FILENAME
3796The value is a either a filename (a string), or @code{None}.
3797
3798@findex PARAM_FILENAME
3799@findex gdb.PARAM_FILENAME
3800@item gdb.PARAM_FILENAME
3801The value is a filename. This is just like
3802@code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
3803
3804@findex PARAM_ZINTEGER
3805@findex gdb.PARAM_ZINTEGER
3806@item gdb.PARAM_ZINTEGER
3807The value is an integer. This is like @code{PARAM_INTEGER}, except 0
3808is interpreted as itself.
3809
0489430a
TT
3810@findex PARAM_ZUINTEGER
3811@findex gdb.PARAM_ZUINTEGER
3812@item gdb.PARAM_ZUINTEGER
3813The value is an unsigned integer. This is like @code{PARAM_INTEGER},
3814except 0 is interpreted as itself, and the value cannot be negative.
3815
3816@findex PARAM_ZUINTEGER_UNLIMITED
3817@findex gdb.PARAM_ZUINTEGER_UNLIMITED
3818@item gdb.PARAM_ZUINTEGER_UNLIMITED
3819The value is a signed integer. This is like @code{PARAM_ZUINTEGER},
3820except the special value -1 should be interpreted to mean
3821``unlimited''. Other negative values are not allowed.
3822
329baa95
DE
3823@findex PARAM_ENUM
3824@findex gdb.PARAM_ENUM
3825@item gdb.PARAM_ENUM
3826The value is a string, which must be one of a collection string
3827constants provided when the parameter is created.
3828@end table
3829
3830@node Functions In Python
3831@subsubsection Writing new convenience functions
3832
3833@cindex writing convenience functions
3834@cindex convenience functions in python
3835@cindex python convenience functions
3836@tindex gdb.Function
3837@tindex Function
3838You can implement new convenience functions (@pxref{Convenience Vars})
3839in Python. A convenience function is an instance of a subclass of the
3840class @code{gdb.Function}.
3841
3842@defun Function.__init__ (name)
3843The initializer for @code{Function} registers the new function with
3844@value{GDBN}. The argument @var{name} is the name of the function,
3845a string. The function will be visible to the user as a convenience
3846variable of type @code{internal function}, whose name is the same as
3847the given @var{name}.
3848
3849The documentation for the new function is taken from the documentation
3850string for the new class.
3851@end defun
3852
3853@defun Function.invoke (@var{*args})
3854When a convenience function is evaluated, its arguments are converted
3855to instances of @code{gdb.Value}, and then the function's
3856@code{invoke} method is called. Note that @value{GDBN} does not
3857predetermine the arity of convenience functions. Instead, all
3858available arguments are passed to @code{invoke}, following the
3859standard Python calling convention. In particular, a convenience
3860function can have default values for parameters without ill effect.
3861
3862The return value of this method is used as its value in the enclosing
3863expression. If an ordinary Python value is returned, it is converted
3864to a @code{gdb.Value} following the usual rules.
3865@end defun
3866
3867The following code snippet shows how a trivial convenience function can
3868be implemented in Python:
3869
3870@smallexample
3871class Greet (gdb.Function):
3872 """Return string to greet someone.
3873Takes a name as argument."""
3874
3875 def __init__ (self):
3876 super (Greet, self).__init__ ("greet")
3877
3878 def invoke (self, name):
3879 return "Hello, %s!" % name.string ()
3880
3881Greet ()
3882@end smallexample
3883
3884The last line instantiates the class, and is necessary to trigger the
3885registration of the function with @value{GDBN}. Depending on how the
3886Python code is read into @value{GDBN}, you may need to import the
3887@code{gdb} module explicitly.
3888
3889Now you can use the function in an expression:
3890
3891@smallexample
3892(gdb) print $greet("Bob")
3893$1 = "Hello, Bob!"
3894@end smallexample
3895
3896@node Progspaces In Python
3897@subsubsection Program Spaces In Python
3898
3899@cindex progspaces in python
3900@tindex gdb.Progspace
3901@tindex Progspace
3902A program space, or @dfn{progspace}, represents a symbolic view
3903of an address space.
3904It consists of all of the objfiles of the program.
3905@xref{Objfiles In Python}.
3906@xref{Inferiors and Programs, program spaces}, for more details
3907about program spaces.
3908
3909The following progspace-related functions are available in the
3910@code{gdb} module:
3911
3912@findex gdb.current_progspace
3913@defun gdb.current_progspace ()
3914This function returns the program space of the currently selected inferior.
3915@xref{Inferiors and Programs}.
3916@end defun
3917
3918@findex gdb.progspaces
3919@defun gdb.progspaces ()
3920Return a sequence of all the progspaces currently known to @value{GDBN}.
3921@end defun
3922
3923Each progspace is represented by an instance of the @code{gdb.Progspace}
3924class.
3925
3926@defvar Progspace.filename
3927The file name of the progspace as a string.
3928@end defvar
3929
3930@defvar Progspace.pretty_printers
3931The @code{pretty_printers} attribute is a list of functions. It is
3932used to look up pretty-printers. A @code{Value} is passed to each
3933function in order; if the function returns @code{None}, then the
3934search continues. Otherwise, the return value should be an object
3935which is used to format the value. @xref{Pretty Printing API}, for more
3936information.
3937@end defvar
3938
3939@defvar Progspace.type_printers
3940The @code{type_printers} attribute is a list of type printer objects.
3941@xref{Type Printing API}, for more information.
3942@end defvar
3943
3944@defvar Progspace.frame_filters
3945The @code{frame_filters} attribute is a dictionary of frame filter
3946objects. @xref{Frame Filter API}, for more information.
3947@end defvar
3948
02be9a71
DE
3949One may add arbitrary attributes to @code{gdb.Progspace} objects
3950in the usual Python way.
3951This is useful if, for example, one needs to do some extra record keeping
3952associated with the program space.
3953
3954In this contrived example, we want to perform some processing when
3955an objfile with a certain symbol is loaded, but we only want to do
3956this once because it is expensive. To achieve this we record the results
3957with the program space because we can't predict when the desired objfile
3958will be loaded.
3959
3960@smallexample
3961(gdb) python
3962def clear_objfiles_handler(event):
3963 event.progspace.expensive_computation = None
3964def expensive(symbol):
3965 """A mock routine to perform an "expensive" computation on symbol."""
3966 print "Computing the answer to the ultimate question ..."
3967 return 42
3968def new_objfile_handler(event):
3969 objfile = event.new_objfile
3970 progspace = objfile.progspace
3971 if not hasattr(progspace, 'expensive_computation') or \
3972 progspace.expensive_computation is None:
3973 # We use 'main' for the symbol to keep the example simple.
3974 # Note: There's no current way to constrain the lookup
3975 # to one objfile.
3976 symbol = gdb.lookup_global_symbol('main')
3977 if symbol is not None:
3978 progspace.expensive_computation = expensive(symbol)
3979gdb.events.clear_objfiles.connect(clear_objfiles_handler)
3980gdb.events.new_objfile.connect(new_objfile_handler)
3981end
3982(gdb) file /tmp/hello
3983Reading symbols from /tmp/hello...done.
3984Computing the answer to the ultimate question ...
3985(gdb) python print gdb.current_progspace().expensive_computation
398642
3987(gdb) run
3988Starting program: /tmp/hello
3989Hello.
3990[Inferior 1 (process 4242) exited normally]
3991@end smallexample
3992
329baa95
DE
3993@node Objfiles In Python
3994@subsubsection Objfiles In Python
3995
3996@cindex objfiles in python
3997@tindex gdb.Objfile
3998@tindex Objfile
3999@value{GDBN} loads symbols for an inferior from various
4000symbol-containing files (@pxref{Files}). These include the primary
4001executable file, any shared libraries used by the inferior, and any
4002separate debug info files (@pxref{Separate Debug Files}).
4003@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
4004
4005The following objfile-related functions are available in the
4006@code{gdb} module:
4007
4008@findex gdb.current_objfile
4009@defun gdb.current_objfile ()
4010When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
4011sets the ``current objfile'' to the corresponding objfile. This
4012function returns the current objfile. If there is no current objfile,
4013this function returns @code{None}.
4014@end defun
4015
4016@findex gdb.objfiles
4017@defun gdb.objfiles ()
4018Return a sequence of all the objfiles current known to @value{GDBN}.
4019@xref{Objfiles In Python}.
4020@end defun
4021
6dddd6a5
DE
4022@findex gdb.lookup_objfile
4023@defun gdb.lookup_objfile (name @r{[}, by_build_id{]})
4024Look up @var{name}, a file name or build ID, in the list of objfiles
4025for the current program space (@pxref{Progspaces In Python}).
4026If the objfile is not found throw the Python @code{ValueError} exception.
4027
4028If @var{name} is a relative file name, then it will match any
4029source file name with the same trailing components. For example, if
4030@var{name} is @samp{gcc/expr.c}, then it will match source file
4031name of @file{/build/trunk/gcc/expr.c}, but not
4032@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
4033
4034If @var{by_build_id} is provided and is @code{True} then @var{name}
4035is the build ID of the objfile. Otherwise, @var{name} is a file name.
4036This is supported only on some operating systems, notably those which use
4037the ELF format for binary files and the @sc{gnu} Binutils. For more details
4038about this feature, see the description of the @option{--build-id}
4039command-line option in @ref{Options, , Command Line Options, ld.info,
4040The GNU Linker}.
4041@end defun
4042
329baa95
DE
4043Each objfile is represented by an instance of the @code{gdb.Objfile}
4044class.
4045
4046@defvar Objfile.filename
1b549396
DE
4047The file name of the objfile as a string, with symbolic links resolved.
4048
4049The value is @code{None} if the objfile is no longer valid.
4050See the @code{gdb.Objfile.is_valid} method, described below.
329baa95
DE
4051@end defvar
4052
3a8b707a
DE
4053@defvar Objfile.username
4054The file name of the objfile as specified by the user as a string.
4055
4056The value is @code{None} if the objfile is no longer valid.
4057See the @code{gdb.Objfile.is_valid} method, described below.
4058@end defvar
4059
a0be3e44
DE
4060@defvar Objfile.owner
4061For separate debug info objfiles this is the corresponding @code{gdb.Objfile}
4062object that debug info is being provided for.
4063Otherwise this is @code{None}.
4064Separate debug info objfiles are added with the
4065@code{gdb.Objfile.add_separate_debug_file} method, described below.
4066@end defvar
4067
7c50a931
DE
4068@defvar Objfile.build_id
4069The build ID of the objfile as a string.
4070If the objfile does not have a build ID then the value is @code{None}.
4071
4072This is supported only on some operating systems, notably those which use
4073the ELF format for binary files and the @sc{gnu} Binutils. For more details
4074about this feature, see the description of the @option{--build-id}
4075command-line option in @ref{Options, , Command Line Options, ld.info,
4076The GNU Linker}.
4077@end defvar
4078
d096d8c1
DE
4079@defvar Objfile.progspace
4080The containing program space of the objfile as a @code{gdb.Progspace}
4081object. @xref{Progspaces In Python}.
4082@end defvar
4083
329baa95
DE
4084@defvar Objfile.pretty_printers
4085The @code{pretty_printers} attribute is a list of functions. It is
4086used to look up pretty-printers. A @code{Value} is passed to each
4087function in order; if the function returns @code{None}, then the
4088search continues. Otherwise, the return value should be an object
4089which is used to format the value. @xref{Pretty Printing API}, for more
4090information.
4091@end defvar
4092
4093@defvar Objfile.type_printers
4094The @code{type_printers} attribute is a list of type printer objects.
4095@xref{Type Printing API}, for more information.
4096@end defvar
4097
4098@defvar Objfile.frame_filters
4099The @code{frame_filters} attribute is a dictionary of frame filter
4100objects. @xref{Frame Filter API}, for more information.
4101@end defvar
4102
02be9a71
DE
4103One may add arbitrary attributes to @code{gdb.Objfile} objects
4104in the usual Python way.
4105This is useful if, for example, one needs to do some extra record keeping
4106associated with the objfile.
4107
4108In this contrived example we record the time when @value{GDBN}
4109loaded the objfile.
4110
4111@smallexample
4112(gdb) python
4113import datetime
4114def new_objfile_handler(event):
4115 # Set the time_loaded attribute of the new objfile.
4116 event.new_objfile.time_loaded = datetime.datetime.today()
4117gdb.events.new_objfile.connect(new_objfile_handler)
4118end
4119(gdb) file ./hello
4120Reading symbols from ./hello...done.
4121(gdb) python print gdb.objfiles()[0].time_loaded
41222014-10-09 11:41:36.770345
4123@end smallexample
4124
329baa95
DE
4125A @code{gdb.Objfile} object has the following methods:
4126
4127@defun Objfile.is_valid ()
4128Returns @code{True} if the @code{gdb.Objfile} object is valid,
4129@code{False} if not. A @code{gdb.Objfile} object can become invalid
4130if the object file it refers to is not loaded in @value{GDBN} any
4131longer. All other @code{gdb.Objfile} methods will throw an exception
4132if it is invalid at the time the method is called.
4133@end defun
4134
86e4ed39
DE
4135@defun Objfile.add_separate_debug_file (file)
4136Add @var{file} to the list of files that @value{GDBN} will search for
4137debug information for the objfile.
4138This is useful when the debug info has been removed from the program
4139and stored in a separate file. @value{GDBN} has built-in support for
4140finding separate debug info files (@pxref{Separate Debug Files}), but if
4141the file doesn't live in one of the standard places that @value{GDBN}
4142searches then this function can be used to add a debug info file
4143from a different place.
4144@end defun
4145
329baa95
DE
4146@node Frames In Python
4147@subsubsection Accessing inferior stack frames from Python.
4148
4149@cindex frames in python
4150When the debugged program stops, @value{GDBN} is able to analyze its call
4151stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
4152represents a frame in the stack. A @code{gdb.Frame} object is only valid
4153while its corresponding frame exists in the inferior's stack. If you try
4154to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
4155exception (@pxref{Exception Handling}).
4156
4157Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
4158operator, like:
4159
4160@smallexample
4161(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
4162True
4163@end smallexample
4164
4165The following frame-related functions are available in the @code{gdb} module:
4166
4167@findex gdb.selected_frame
4168@defun gdb.selected_frame ()
4169Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
4170@end defun
4171
4172@findex gdb.newest_frame
4173@defun gdb.newest_frame ()
4174Return the newest frame object for the selected thread.
4175@end defun
4176
4177@defun gdb.frame_stop_reason_string (reason)
4178Return a string explaining the reason why @value{GDBN} stopped unwinding
4179frames, as expressed by the given @var{reason} code (an integer, see the
4180@code{unwind_stop_reason} method further down in this section).
4181@end defun
4182
e0f3fd7c
TT
4183@findex gdb.invalidate_cached_frames
4184@defun gdb.invalidate_cached_frames
4185@value{GDBN} internally keeps a cache of the frames that have been
4186unwound. This function invalidates this cache.
4187
4188This function should not generally be called by ordinary Python code.
4189It is documented for the sake of completeness.
4190@end defun
4191
329baa95
DE
4192A @code{gdb.Frame} object has the following methods:
4193
4194@defun Frame.is_valid ()
4195Returns true if the @code{gdb.Frame} object is valid, false if not.
4196A frame object can become invalid if the frame it refers to doesn't
4197exist anymore in the inferior. All @code{gdb.Frame} methods will throw
4198an exception if it is invalid at the time the method is called.
4199@end defun
4200
4201@defun Frame.name ()
4202Returns the function name of the frame, or @code{None} if it can't be
4203obtained.
4204@end defun
4205
4206@defun Frame.architecture ()
4207Returns the @code{gdb.Architecture} object corresponding to the frame's
4208architecture. @xref{Architectures In Python}.
4209@end defun
4210
4211@defun Frame.type ()
4212Returns the type of the frame. The value can be one of:
4213@table @code
4214@item gdb.NORMAL_FRAME
4215An ordinary stack frame.
4216
4217@item gdb.DUMMY_FRAME
4218A fake stack frame that was created by @value{GDBN} when performing an
4219inferior function call.
4220
4221@item gdb.INLINE_FRAME
4222A frame representing an inlined function. The function was inlined
4223into a @code{gdb.NORMAL_FRAME} that is older than this one.
4224
4225@item gdb.TAILCALL_FRAME
4226A frame representing a tail call. @xref{Tail Call Frames}.
4227
4228@item gdb.SIGTRAMP_FRAME
4229A signal trampoline frame. This is the frame created by the OS when
4230it calls into a signal handler.
4231
4232@item gdb.ARCH_FRAME
4233A fake stack frame representing a cross-architecture call.
4234
4235@item gdb.SENTINEL_FRAME
4236This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
4237newest frame.
4238@end table
4239@end defun
4240
4241@defun Frame.unwind_stop_reason ()
4242Return an integer representing the reason why it's not possible to find
4243more frames toward the outermost frame. Use
4244@code{gdb.frame_stop_reason_string} to convert the value returned by this
4245function to a string. The value can be one of:
4246
4247@table @code
4248@item gdb.FRAME_UNWIND_NO_REASON
4249No particular reason (older frames should be available).
4250
4251@item gdb.FRAME_UNWIND_NULL_ID
4252The previous frame's analyzer returns an invalid result. This is no
4253longer used by @value{GDBN}, and is kept only for backward
4254compatibility.
4255
4256@item gdb.FRAME_UNWIND_OUTERMOST
4257This frame is the outermost.
4258
4259@item gdb.FRAME_UNWIND_UNAVAILABLE
4260Cannot unwind further, because that would require knowing the
4261values of registers or memory that have not been collected.
4262
4263@item gdb.FRAME_UNWIND_INNER_ID
4264This frame ID looks like it ought to belong to a NEXT frame,
4265but we got it for a PREV frame. Normally, this is a sign of
4266unwinder failure. It could also indicate stack corruption.
4267
4268@item gdb.FRAME_UNWIND_SAME_ID
4269This frame has the same ID as the previous one. That means
4270that unwinding further would almost certainly give us another
4271frame with exactly the same ID, so break the chain. Normally,
4272this is a sign of unwinder failure. It could also indicate
4273stack corruption.
4274
4275@item gdb.FRAME_UNWIND_NO_SAVED_PC
4276The frame unwinder did not find any saved PC, but we needed
4277one to unwind further.
4278
53e8a631
AB
4279@item gdb.FRAME_UNWIND_MEMORY_ERROR
4280The frame unwinder caused an error while trying to access memory.
4281
329baa95
DE
4282@item gdb.FRAME_UNWIND_FIRST_ERROR
4283Any stop reason greater or equal to this value indicates some kind
4284of error. This special value facilitates writing code that tests
4285for errors in unwinding in a way that will work correctly even if
4286the list of the other values is modified in future @value{GDBN}
4287versions. Using it, you could write:
4288@smallexample
4289reason = gdb.selected_frame().unwind_stop_reason ()
4290reason_str = gdb.frame_stop_reason_string (reason)
4291if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
4292 print "An error occured: %s" % reason_str
4293@end smallexample
4294@end table
4295
4296@end defun
4297
4298@defun Frame.pc ()
4299Returns the frame's resume address.
4300@end defun
4301
4302@defun Frame.block ()
4303Return the frame's code block. @xref{Blocks In Python}.
4304@end defun
4305
4306@defun Frame.function ()
4307Return the symbol for the function corresponding to this frame.
4308@xref{Symbols In Python}.
4309@end defun
4310
4311@defun Frame.older ()
4312Return the frame that called this frame.
4313@end defun
4314
4315@defun Frame.newer ()
4316Return the frame called by this frame.
4317@end defun
4318
4319@defun Frame.find_sal ()
4320Return the frame's symtab and line object.
4321@xref{Symbol Tables In Python}.
4322@end defun
4323
5f3b99cf
SS
4324@defun Frame.read_register (register)
4325Return the value of @var{register} in this frame. The @var{register}
4326argument must be a string (e.g., @code{'sp'} or @code{'rax'}).
4327Returns a @code{Gdb.Value} object. Throws an exception if @var{register}
4328does not exist.
4329@end defun
4330
329baa95
DE
4331@defun Frame.read_var (variable @r{[}, block@r{]})
4332Return the value of @var{variable} in this frame. If the optional
4333argument @var{block} is provided, search for the variable from that
4334block; otherwise start at the frame's current block (which is
697aa1b7
EZ
4335determined by the frame's current program counter). The @var{variable}
4336argument must be a string or a @code{gdb.Symbol} object; @var{block} must be a
329baa95
DE
4337@code{gdb.Block} object.
4338@end defun
4339
4340@defun Frame.select ()
4341Set this frame to be the selected frame. @xref{Stack, ,Examining the
4342Stack}.
4343@end defun
4344
4345@node Blocks In Python
4346@subsubsection Accessing blocks from Python.
4347
4348@cindex blocks in python
4349@tindex gdb.Block
4350
4351In @value{GDBN}, symbols are stored in blocks. A block corresponds
4352roughly to a scope in the source code. Blocks are organized
4353hierarchically, and are represented individually in Python as a
4354@code{gdb.Block}. Blocks rely on debugging information being
4355available.
4356
4357A frame has a block. Please see @ref{Frames In Python}, for a more
4358in-depth discussion of frames.
4359
4360The outermost block is known as the @dfn{global block}. The global
4361block typically holds public global variables and functions.
4362
4363The block nested just inside the global block is the @dfn{static
4364block}. The static block typically holds file-scoped variables and
4365functions.
4366
4367@value{GDBN} provides a method to get a block's superblock, but there
4368is currently no way to examine the sub-blocks of a block, or to
4369iterate over all the blocks in a symbol table (@pxref{Symbol Tables In
4370Python}).
4371
4372Here is a short example that should help explain blocks:
4373
4374@smallexample
4375/* This is in the global block. */
4376int global;
4377
4378/* This is in the static block. */
4379static int file_scope;
4380
4381/* 'function' is in the global block, and 'argument' is
4382 in a block nested inside of 'function'. */
4383int function (int argument)
4384@{
4385 /* 'local' is in a block inside 'function'. It may or may
4386 not be in the same block as 'argument'. */
4387 int local;
4388
4389 @{
4390 /* 'inner' is in a block whose superblock is the one holding
4391 'local'. */
4392 int inner;
4393
4394 /* If this call is expanded by the compiler, you may see
4395 a nested block here whose function is 'inline_function'
4396 and whose superblock is the one holding 'inner'. */
4397 inline_function ();
4398 @}
4399@}
4400@end smallexample
4401
4402A @code{gdb.Block} is iterable. The iterator returns the symbols
4403(@pxref{Symbols In Python}) local to the block. Python programs
4404should not assume that a specific block object will always contain a
4405given symbol, since changes in @value{GDBN} features and
4406infrastructure may cause symbols move across blocks in a symbol
4407table.
4408
4409The following block-related functions are available in the @code{gdb}
4410module:
4411
4412@findex gdb.block_for_pc
4413@defun gdb.block_for_pc (pc)
4414Return the innermost @code{gdb.Block} containing the given @var{pc}
4415value. If the block cannot be found for the @var{pc} value specified,
4416the function will return @code{None}.
4417@end defun
4418
4419A @code{gdb.Block} object has the following methods:
4420
4421@defun Block.is_valid ()
4422Returns @code{True} if the @code{gdb.Block} object is valid,
4423@code{False} if not. A block object can become invalid if the block it
4424refers to doesn't exist anymore in the inferior. All other
4425@code{gdb.Block} methods will throw an exception if it is invalid at
4426the time the method is called. The block's validity is also checked
4427during iteration over symbols of the block.
4428@end defun
4429
4430A @code{gdb.Block} object has the following attributes:
4431
4432@defvar Block.start
4433The start address of the block. This attribute is not writable.
4434@end defvar
4435
4436@defvar Block.end
4437The end address of the block. This attribute is not writable.
4438@end defvar
4439
4440@defvar Block.function
4441The name of the block represented as a @code{gdb.Symbol}. If the
4442block is not named, then this attribute holds @code{None}. This
4443attribute is not writable.
4444
4445For ordinary function blocks, the superblock is the static block.
4446However, you should note that it is possible for a function block to
4447have a superblock that is not the static block -- for instance this
4448happens for an inlined function.
4449@end defvar
4450
4451@defvar Block.superblock
4452The block containing this block. If this parent block does not exist,
4453this attribute holds @code{None}. This attribute is not writable.
4454@end defvar
4455
4456@defvar Block.global_block
4457The global block associated with this block. This attribute is not
4458writable.
4459@end defvar
4460
4461@defvar Block.static_block
4462The static block associated with this block. This attribute is not
4463writable.
4464@end defvar
4465
4466@defvar Block.is_global
4467@code{True} if the @code{gdb.Block} object is a global block,
4468@code{False} if not. This attribute is not
4469writable.
4470@end defvar
4471
4472@defvar Block.is_static
4473@code{True} if the @code{gdb.Block} object is a static block,
4474@code{False} if not. This attribute is not writable.
4475@end defvar
4476
4477@node Symbols In Python
4478@subsubsection Python representation of Symbols.
4479
4480@cindex symbols in python
4481@tindex gdb.Symbol
4482
4483@value{GDBN} represents every variable, function and type as an
4484entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
4485Similarly, Python represents these symbols in @value{GDBN} with the
4486@code{gdb.Symbol} object.
4487
4488The following symbol-related functions are available in the @code{gdb}
4489module:
4490
4491@findex gdb.lookup_symbol
4492@defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
4493This function searches for a symbol by name. The search scope can be
4494restricted to the parameters defined in the optional domain and block
4495arguments.
4496
4497@var{name} is the name of the symbol. It must be a string. The
4498optional @var{block} argument restricts the search to symbols visible
4499in that @var{block}. The @var{block} argument must be a
4500@code{gdb.Block} object. If omitted, the block for the current frame
4501is used. The optional @var{domain} argument restricts
4502the search to the domain type. The @var{domain} argument must be a
4503domain constant defined in the @code{gdb} module and described later
4504in this chapter.
4505
4506The result is a tuple of two elements.
4507The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
4508is not found.
4509If the symbol is found, the second element is @code{True} if the symbol
4510is a field of a method's object (e.g., @code{this} in C@t{++}),
4511otherwise it is @code{False}.
4512If the symbol is not found, the second element is @code{False}.
4513@end defun
4514
4515@findex gdb.lookup_global_symbol
4516@defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
4517This function searches for a global symbol by name.
4518The search scope can be restricted to by the domain argument.
4519
4520@var{name} is the name of the symbol. It must be a string.
4521The optional @var{domain} argument restricts the search to the domain type.
4522The @var{domain} argument must be a domain constant defined in the @code{gdb}
4523module and described later in this chapter.
4524
4525The result is a @code{gdb.Symbol} object or @code{None} if the symbol
4526is not found.
4527@end defun
4528
4529A @code{gdb.Symbol} object has the following attributes:
4530
4531@defvar Symbol.type
4532The type of the symbol or @code{None} if no type is recorded.
4533This attribute is represented as a @code{gdb.Type} object.
4534@xref{Types In Python}. This attribute is not writable.
4535@end defvar
4536
4537@defvar Symbol.symtab
4538The symbol table in which the symbol appears. This attribute is
4539represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
4540Python}. This attribute is not writable.
4541@end defvar
4542
4543@defvar Symbol.line
4544The line number in the source code at which the symbol was defined.
4545This is an integer.
4546@end defvar
4547
4548@defvar Symbol.name
4549The name of the symbol as a string. This attribute is not writable.
4550@end defvar
4551
4552@defvar Symbol.linkage_name
4553The name of the symbol, as used by the linker (i.e., may be mangled).
4554This attribute is not writable.
4555@end defvar
4556
4557@defvar Symbol.print_name
4558The name of the symbol in a form suitable for output. This is either
4559@code{name} or @code{linkage_name}, depending on whether the user
4560asked @value{GDBN} to display demangled or mangled names.
4561@end defvar
4562
4563@defvar Symbol.addr_class
4564The address class of the symbol. This classifies how to find the value
4565of a symbol. Each address class is a constant defined in the
4566@code{gdb} module and described later in this chapter.
4567@end defvar
4568
4569@defvar Symbol.needs_frame
4570This is @code{True} if evaluating this symbol's value requires a frame
4571(@pxref{Frames In Python}) and @code{False} otherwise. Typically,
4572local variables will require a frame, but other symbols will not.
4573@end defvar
4574
4575@defvar Symbol.is_argument
4576@code{True} if the symbol is an argument of a function.
4577@end defvar
4578
4579@defvar Symbol.is_constant
4580@code{True} if the symbol is a constant.
4581@end defvar
4582
4583@defvar Symbol.is_function
4584@code{True} if the symbol is a function or a method.
4585@end defvar
4586
4587@defvar Symbol.is_variable
4588@code{True} if the symbol is a variable.
4589@end defvar
4590
4591A @code{gdb.Symbol} object has the following methods:
4592
4593@defun Symbol.is_valid ()
4594Returns @code{True} if the @code{gdb.Symbol} object is valid,
4595@code{False} if not. A @code{gdb.Symbol} object can become invalid if
4596the symbol it refers to does not exist in @value{GDBN} any longer.
4597All other @code{gdb.Symbol} methods will throw an exception if it is
4598invalid at the time the method is called.
4599@end defun
4600
4601@defun Symbol.value (@r{[}frame@r{]})
4602Compute the value of the symbol, as a @code{gdb.Value}. For
4603functions, this computes the address of the function, cast to the
4604appropriate type. If the symbol requires a frame in order to compute
4605its value, then @var{frame} must be given. If @var{frame} is not
4606given, or if @var{frame} is invalid, then this method will throw an
4607exception.
4608@end defun
4609
4610The available domain categories in @code{gdb.Symbol} are represented
4611as constants in the @code{gdb} module:
4612
b3ce5e5f
DE
4613@vtable @code
4614@vindex SYMBOL_UNDEF_DOMAIN
329baa95
DE
4615@item gdb.SYMBOL_UNDEF_DOMAIN
4616This is used when a domain has not been discovered or none of the
4617following domains apply. This usually indicates an error either
4618in the symbol information or in @value{GDBN}'s handling of symbols.
b3ce5e5f
DE
4619
4620@vindex SYMBOL_VAR_DOMAIN
329baa95
DE
4621@item gdb.SYMBOL_VAR_DOMAIN
4622This domain contains variables, function names, typedef names and enum
4623type values.
b3ce5e5f
DE
4624
4625@vindex SYMBOL_STRUCT_DOMAIN
329baa95
DE
4626@item gdb.SYMBOL_STRUCT_DOMAIN
4627This domain holds struct, union and enum type names.
b3ce5e5f
DE
4628
4629@vindex SYMBOL_LABEL_DOMAIN
329baa95
DE
4630@item gdb.SYMBOL_LABEL_DOMAIN
4631This domain contains names of labels (for gotos).
b3ce5e5f
DE
4632
4633@vindex SYMBOL_VARIABLES_DOMAIN
329baa95
DE
4634@item gdb.SYMBOL_VARIABLES_DOMAIN
4635This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
4636contains everything minus functions and types.
b3ce5e5f
DE
4637
4638@vindex SYMBOL_FUNCTIONS_DOMAIN
eb83230b 4639@item gdb.SYMBOL_FUNCTIONS_DOMAIN
329baa95 4640This domain contains all functions.
b3ce5e5f
DE
4641
4642@vindex SYMBOL_TYPES_DOMAIN
329baa95
DE
4643@item gdb.SYMBOL_TYPES_DOMAIN
4644This domain contains all types.
b3ce5e5f 4645@end vtable
329baa95
DE
4646
4647The available address class categories in @code{gdb.Symbol} are represented
4648as constants in the @code{gdb} module:
4649
b3ce5e5f
DE
4650@vtable @code
4651@vindex SYMBOL_LOC_UNDEF
329baa95
DE
4652@item gdb.SYMBOL_LOC_UNDEF
4653If this is returned by address class, it indicates an error either in
4654the symbol information or in @value{GDBN}'s handling of symbols.
b3ce5e5f
DE
4655
4656@vindex SYMBOL_LOC_CONST
329baa95
DE
4657@item gdb.SYMBOL_LOC_CONST
4658Value is constant int.
b3ce5e5f
DE
4659
4660@vindex SYMBOL_LOC_STATIC
329baa95
DE
4661@item gdb.SYMBOL_LOC_STATIC
4662Value is at a fixed address.
b3ce5e5f
DE
4663
4664@vindex SYMBOL_LOC_REGISTER
329baa95
DE
4665@item gdb.SYMBOL_LOC_REGISTER
4666Value is in a register.
b3ce5e5f
DE
4667
4668@vindex SYMBOL_LOC_ARG
329baa95
DE
4669@item gdb.SYMBOL_LOC_ARG
4670Value is an argument. This value is at the offset stored within the
4671symbol inside the frame's argument list.
b3ce5e5f
DE
4672
4673@vindex SYMBOL_LOC_REF_ARG
329baa95
DE
4674@item gdb.SYMBOL_LOC_REF_ARG
4675Value address is stored in the frame's argument list. Just like
4676@code{LOC_ARG} except that the value's address is stored at the
4677offset, not the value itself.
b3ce5e5f
DE
4678
4679@vindex SYMBOL_LOC_REGPARM_ADDR
329baa95
DE
4680@item gdb.SYMBOL_LOC_REGPARM_ADDR
4681Value is a specified register. Just like @code{LOC_REGISTER} except
4682the register holds the address of the argument instead of the argument
4683itself.
b3ce5e5f
DE
4684
4685@vindex SYMBOL_LOC_LOCAL
329baa95
DE
4686@item gdb.SYMBOL_LOC_LOCAL
4687Value is a local variable.
b3ce5e5f
DE
4688
4689@vindex SYMBOL_LOC_TYPEDEF
329baa95
DE
4690@item gdb.SYMBOL_LOC_TYPEDEF
4691Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
4692have this class.
b3ce5e5f
DE
4693
4694@vindex SYMBOL_LOC_BLOCK
329baa95
DE
4695@item gdb.SYMBOL_LOC_BLOCK
4696Value is a block.
b3ce5e5f
DE
4697
4698@vindex SYMBOL_LOC_CONST_BYTES
329baa95
DE
4699@item gdb.SYMBOL_LOC_CONST_BYTES
4700Value is a byte-sequence.
b3ce5e5f
DE
4701
4702@vindex SYMBOL_LOC_UNRESOLVED
329baa95
DE
4703@item gdb.SYMBOL_LOC_UNRESOLVED
4704Value is at a fixed address, but the address of the variable has to be
4705determined from the minimal symbol table whenever the variable is
4706referenced.
b3ce5e5f
DE
4707
4708@vindex SYMBOL_LOC_OPTIMIZED_OUT
329baa95
DE
4709@item gdb.SYMBOL_LOC_OPTIMIZED_OUT
4710The value does not actually exist in the program.
b3ce5e5f
DE
4711
4712@vindex SYMBOL_LOC_COMPUTED
329baa95
DE
4713@item gdb.SYMBOL_LOC_COMPUTED
4714The value's address is a computed location.
b3ce5e5f 4715@end vtable
329baa95
DE
4716
4717@node Symbol Tables In Python
4718@subsubsection Symbol table representation in Python.
4719
4720@cindex symbol tables in python
4721@tindex gdb.Symtab
4722@tindex gdb.Symtab_and_line
4723
4724Access to symbol table data maintained by @value{GDBN} on the inferior
4725is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
4726@code{gdb.Symtab}. Symbol table and line data for a frame is returned
4727from the @code{find_sal} method in @code{gdb.Frame} object.
4728@xref{Frames In Python}.
4729
4730For more information on @value{GDBN}'s symbol table management, see
4731@ref{Symbols, ,Examining the Symbol Table}, for more information.
4732
4733A @code{gdb.Symtab_and_line} object has the following attributes:
4734
4735@defvar Symtab_and_line.symtab
4736The symbol table object (@code{gdb.Symtab}) for this frame.
4737This attribute is not writable.
4738@end defvar
4739
4740@defvar Symtab_and_line.pc
4741Indicates the start of the address range occupied by code for the
4742current source line. This attribute is not writable.
4743@end defvar
4744
4745@defvar Symtab_and_line.last
4746Indicates the end of the address range occupied by code for the current
4747source line. This attribute is not writable.
4748@end defvar
4749
4750@defvar Symtab_and_line.line
4751Indicates the current line number for this object. This
4752attribute is not writable.
4753@end defvar
4754
4755A @code{gdb.Symtab_and_line} object has the following methods:
4756
4757@defun Symtab_and_line.is_valid ()
4758Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
4759@code{False} if not. A @code{gdb.Symtab_and_line} object can become
4760invalid if the Symbol table and line object it refers to does not
4761exist in @value{GDBN} any longer. All other
4762@code{gdb.Symtab_and_line} methods will throw an exception if it is
4763invalid at the time the method is called.
4764@end defun
4765
4766A @code{gdb.Symtab} object has the following attributes:
4767
4768@defvar Symtab.filename
4769The symbol table's source filename. This attribute is not writable.
4770@end defvar
4771
4772@defvar Symtab.objfile
4773The symbol table's backing object file. @xref{Objfiles In Python}.
4774This attribute is not writable.
4775@end defvar
4776
2b4fd423
DE
4777@defvar Symtab.producer
4778The name and possibly version number of the program that
4779compiled the code in the symbol table.
4780The contents of this string is up to the compiler.
4781If no producer information is available then @code{None} is returned.
4782This attribute is not writable.
4783@end defvar
4784
329baa95
DE
4785A @code{gdb.Symtab} object has the following methods:
4786
4787@defun Symtab.is_valid ()
4788Returns @code{True} if the @code{gdb.Symtab} object is valid,
4789@code{False} if not. A @code{gdb.Symtab} object can become invalid if
4790the symbol table it refers to does not exist in @value{GDBN} any
4791longer. All other @code{gdb.Symtab} methods will throw an exception
4792if it is invalid at the time the method is called.
4793@end defun
4794
4795@defun Symtab.fullname ()
4796Return the symbol table's source absolute file name.
4797@end defun
4798
4799@defun Symtab.global_block ()
4800Return the global block of the underlying symbol table.
4801@xref{Blocks In Python}.
4802@end defun
4803
4804@defun Symtab.static_block ()
4805Return the static block of the underlying symbol table.
4806@xref{Blocks In Python}.
4807@end defun
4808
4809@defun Symtab.linetable ()
4810Return the line table associated with the symbol table.
4811@xref{Line Tables In Python}.
4812@end defun
4813
4814@node Line Tables In Python
4815@subsubsection Manipulating line tables using Python
4816
4817@cindex line tables in python
4818@tindex gdb.LineTable
4819
4820Python code can request and inspect line table information from a
4821symbol table that is loaded in @value{GDBN}. A line table is a
4822mapping of source lines to their executable locations in memory. To
4823acquire the line table information for a particular symbol table, use
4824the @code{linetable} function (@pxref{Symbol Tables In Python}).
4825
4826A @code{gdb.LineTable} is iterable. The iterator returns
4827@code{LineTableEntry} objects that correspond to the source line and
4828address for each line table entry. @code{LineTableEntry} objects have
4829the following attributes:
4830
4831@defvar LineTableEntry.line
4832The source line number for this line table entry. This number
4833corresponds to the actual line of source. This attribute is not
4834writable.
4835@end defvar
4836
4837@defvar LineTableEntry.pc
4838The address that is associated with the line table entry where the
4839executable code for that source line resides in memory. This
4840attribute is not writable.
4841@end defvar
4842
4843As there can be multiple addresses for a single source line, you may
4844receive multiple @code{LineTableEntry} objects with matching
4845@code{line} attributes, but with different @code{pc} attributes. The
4846iterator is sorted in ascending @code{pc} order. Here is a small
4847example illustrating iterating over a line table.
4848
4849@smallexample
4850symtab = gdb.selected_frame().find_sal().symtab
4851linetable = symtab.linetable()
4852for line in linetable:
4853 print "Line: "+str(line.line)+" Address: "+hex(line.pc)
4854@end smallexample
4855
4856This will have the following output:
4857
4858@smallexample
4859Line: 33 Address: 0x4005c8L
4860Line: 37 Address: 0x4005caL
4861Line: 39 Address: 0x4005d2L
4862Line: 40 Address: 0x4005f8L
4863Line: 42 Address: 0x4005ffL
4864Line: 44 Address: 0x400608L
4865Line: 42 Address: 0x40060cL
4866Line: 45 Address: 0x400615L
4867@end smallexample
4868
4869In addition to being able to iterate over a @code{LineTable}, it also
4870has the following direct access methods:
4871
4872@defun LineTable.line (line)
4873Return a Python @code{Tuple} of @code{LineTableEntry} objects for any
697aa1b7
EZ
4874entries in the line table for the given @var{line}, which specifies
4875the source code line. If there are no entries for that source code
329baa95
DE
4876@var{line}, the Python @code{None} is returned.
4877@end defun
4878
4879@defun LineTable.has_line (line)
4880Return a Python @code{Boolean} indicating whether there is an entry in
4881the line table for this source line. Return @code{True} if an entry
4882is found, or @code{False} if not.
4883@end defun
4884
4885@defun LineTable.source_lines ()
4886Return a Python @code{List} of the source line numbers in the symbol
4887table. Only lines with executable code locations are returned. The
4888contents of the @code{List} will just be the source line entries
4889represented as Python @code{Long} values.
4890@end defun
4891
4892@node Breakpoints In Python
4893@subsubsection Manipulating breakpoints using Python
4894
4895@cindex breakpoints in python
4896@tindex gdb.Breakpoint
4897
4898Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
4899class.
4900
0b982d68
SM
4901A breakpoint can be created using one of the two forms of the
4902@code{gdb.Breakpoint} constructor. The first one accepts a string
4903like one would pass to the @code{break}
4904(@pxref{Set Breaks,,Setting Breakpoints}) and @code{watch}
4905(@pxref{Set Watchpoints, , Setting Watchpoints}) commands, and can be used to
4906create both breakpoints and watchpoints. The second accepts separate Python
4907arguments similar to @ref{Explicit Locations}, and can only be used to create
4908breakpoints.
4909
b89641ba 4910@defun Breakpoint.__init__ (spec @r{[}, type @r{][}, wp_class @r{][}, internal @r{][}, temporary @r{][}, qualified @r{]})
0b982d68
SM
4911Create a new breakpoint according to @var{spec}, which is a string naming the
4912location of a breakpoint, or an expression that defines a watchpoint. The
4913string should describe a location in a format recognized by the @code{break}
4914command (@pxref{Set Breaks,,Setting Breakpoints}) or, in the case of a
4915watchpoint, by the @code{watch} command
4916(@pxref{Set Watchpoints, , Setting Watchpoints}).
4917
4918The optional @var{type} argument specifies the type of the breakpoint to create,
4919as defined below.
4920
4921The optional @var{wp_class} argument defines the class of watchpoint to create,
4922if @var{type} is @code{gdb.BP_WATCHPOINT}. If @var{wp_class} is omitted, it
4923defaults to @code{gdb.WP_WRITE}.
4924
4925The optional @var{internal} argument allows the breakpoint to become invisible
4926to the user. The breakpoint will neither be reported when created, nor will it
4927be listed in the output from @code{info breakpoints} (but will be listed with
4928the @code{maint info breakpoints} command).
4929
4930The optional @var{temporary} argument makes the breakpoint a temporary
4931breakpoint. Temporary breakpoints are deleted after they have been hit. Any
4932further access to the Python breakpoint after it has been hit will result in a
4933runtime error (as that breakpoint has now been automatically deleted).
b89641ba
SM
4934
4935The optional @var{qualified} argument is a boolean that allows interpreting
4936the function passed in @code{spec} as a fully-qualified name. It is equivalent
4937to @code{break}'s @code{-qualified} flag (@pxref{Linespec Locations} and
4938@ref{Explicit Locations}).
4939
0b982d68
SM
4940@end defun
4941
b89641ba 4942@defun Breakpoint.__init__ (@r{[} source @r{][}, function @r{][}, label @r{][}, line @r{]}, @r{][} internal @r{][}, temporary @r{][}, qualified @r{]})
0b982d68
SM
4943This second form of creating a new breakpoint specifies the explicit
4944location (@pxref{Explicit Locations}) using keywords. The new breakpoint will
4945be created in the specified source file @var{source}, at the specified
4946@var{function}, @var{label} and @var{line}.
4947
b89641ba
SM
4948@var{internal}, @var{temporary} and @var{qualified} have the same usage as
4949explained previously.
329baa95
DE
4950@end defun
4951
cda75e70
TT
4952The available types are represented by constants defined in the @code{gdb}
4953module:
4954
4955@vtable @code
4956@vindex BP_BREAKPOINT
4957@item gdb.BP_BREAKPOINT
4958Normal code breakpoint.
4959
4960@vindex BP_WATCHPOINT
4961@item gdb.BP_WATCHPOINT
4962Watchpoint breakpoint.
4963
4964@vindex BP_HARDWARE_WATCHPOINT
4965@item gdb.BP_HARDWARE_WATCHPOINT
4966Hardware assisted watchpoint.
4967
4968@vindex BP_READ_WATCHPOINT
4969@item gdb.BP_READ_WATCHPOINT
4970Hardware assisted read watchpoint.
4971
4972@vindex BP_ACCESS_WATCHPOINT
4973@item gdb.BP_ACCESS_WATCHPOINT
4974Hardware assisted access watchpoint.
4975@end vtable
4976
4977The available watchpoint types represented by constants are defined in the
4978@code{gdb} module:
4979
4980@vtable @code
4981@vindex WP_READ
4982@item gdb.WP_READ
4983Read only watchpoint.
4984
4985@vindex WP_WRITE
4986@item gdb.WP_WRITE
4987Write only watchpoint.
4988
4989@vindex WP_ACCESS
4990@item gdb.WP_ACCESS
4991Read/Write watchpoint.
4992@end vtable
4993
329baa95
DE
4994@defun Breakpoint.stop (self)
4995The @code{gdb.Breakpoint} class can be sub-classed and, in
4996particular, you may choose to implement the @code{stop} method.
4997If this method is defined in a sub-class of @code{gdb.Breakpoint},
4998it will be called when the inferior reaches any location of a
4999breakpoint which instantiates that sub-class. If the method returns
5000@code{True}, the inferior will be stopped at the location of the
5001breakpoint, otherwise the inferior will continue.
5002
5003If there are multiple breakpoints at the same location with a
5004@code{stop} method, each one will be called regardless of the
5005return status of the previous. This ensures that all @code{stop}
5006methods have a chance to execute at that location. In this scenario
5007if one of the methods returns @code{True} but the others return
5008@code{False}, the inferior will still be stopped.
5009
5010You should not alter the execution state of the inferior (i.e.@:, step,
5011next, etc.), alter the current frame context (i.e.@:, change the current
5012active frame), or alter, add or delete any breakpoint. As a general
5013rule, you should not alter any data within @value{GDBN} or the inferior
5014at this time.
5015
5016Example @code{stop} implementation:
5017
5018@smallexample
5019class MyBreakpoint (gdb.Breakpoint):
5020 def stop (self):
5021 inf_val = gdb.parse_and_eval("foo")
5022 if inf_val == 3:
5023 return True
5024 return False
5025@end smallexample
5026@end defun
5027
329baa95
DE
5028@defun Breakpoint.is_valid ()
5029Return @code{True} if this @code{Breakpoint} object is valid,
5030@code{False} otherwise. A @code{Breakpoint} object can become invalid
5031if the user deletes the breakpoint. In this case, the object still
5032exists, but the underlying breakpoint does not. In the cases of
5033watchpoint scope, the watchpoint remains valid even if execution of the
5034inferior leaves the scope of that watchpoint.
5035@end defun
5036
fab3a15d 5037@defun Breakpoint.delete ()
329baa95
DE
5038Permanently deletes the @value{GDBN} breakpoint. This also
5039invalidates the Python @code{Breakpoint} object. Any further access
5040to this object's attributes or methods will raise an error.
5041@end defun
5042
5043@defvar Breakpoint.enabled
5044This attribute is @code{True} if the breakpoint is enabled, and
fab3a15d
SM
5045@code{False} otherwise. This attribute is writable. You can use it to enable
5046or disable the breakpoint.
329baa95
DE
5047@end defvar
5048
5049@defvar Breakpoint.silent
5050This attribute is @code{True} if the breakpoint is silent, and
5051@code{False} otherwise. This attribute is writable.
5052
5053Note that a breakpoint can also be silent if it has commands and the
5054first command is @code{silent}. This is not reported by the
5055@code{silent} attribute.
5056@end defvar
5057
93daf339
TT
5058@defvar Breakpoint.pending
5059This attribute is @code{True} if the breakpoint is pending, and
5060@code{False} otherwise. @xref{Set Breaks}. This attribute is
5061read-only.
5062@end defvar
5063
22a02324 5064@anchor{python_breakpoint_thread}
329baa95 5065@defvar Breakpoint.thread
5d5658a1
PA
5066If the breakpoint is thread-specific, this attribute holds the
5067thread's global id. If the breakpoint is not thread-specific, this
5068attribute is @code{None}. This attribute is writable.
329baa95
DE
5069@end defvar
5070
5071@defvar Breakpoint.task
5072If the breakpoint is Ada task-specific, this attribute holds the Ada task
5073id. If the breakpoint is not task-specific (or the underlying
5074language is not Ada), this attribute is @code{None}. This attribute
5075is writable.
5076@end defvar
5077
5078@defvar Breakpoint.ignore_count
5079This attribute holds the ignore count for the breakpoint, an integer.
5080This attribute is writable.
5081@end defvar
5082
5083@defvar Breakpoint.number
5084This attribute holds the breakpoint's number --- the identifier used by
5085the user to manipulate the breakpoint. This attribute is not writable.
5086@end defvar
5087
5088@defvar Breakpoint.type
5089This attribute holds the breakpoint's type --- the identifier used to
5090determine the actual breakpoint type or use-case. This attribute is not
5091writable.
5092@end defvar
5093
5094@defvar Breakpoint.visible
5095This attribute tells whether the breakpoint is visible to the user
5096when set, or when the @samp{info breakpoints} command is run. This
5097attribute is not writable.
5098@end defvar
5099
5100@defvar Breakpoint.temporary
5101This attribute indicates whether the breakpoint was created as a
5102temporary breakpoint. Temporary breakpoints are automatically deleted
5103after that breakpoint has been hit. Access to this attribute, and all
5104other attributes and functions other than the @code{is_valid}
5105function, will result in an error after the breakpoint has been hit
5106(as it has been automatically deleted). This attribute is not
5107writable.
5108@end defvar
5109
329baa95
DE
5110@defvar Breakpoint.hit_count
5111This attribute holds the hit count for the breakpoint, an integer.
5112This attribute is writable, but currently it can only be set to zero.
5113@end defvar
5114
5115@defvar Breakpoint.location
5116This attribute holds the location of the breakpoint, as specified by
5117the user. It is a string. If the breakpoint does not have a location
5118(that is, it is a watchpoint) the attribute's value is @code{None}. This
5119attribute is not writable.
5120@end defvar
5121
5122@defvar Breakpoint.expression
5123This attribute holds a breakpoint expression, as specified by
5124the user. It is a string. If the breakpoint does not have an
5125expression (the breakpoint is not a watchpoint) the attribute's value
5126is @code{None}. This attribute is not writable.
5127@end defvar
5128
5129@defvar Breakpoint.condition
5130This attribute holds the condition of the breakpoint, as specified by
5131the user. It is a string. If there is no condition, this attribute's
5132value is @code{None}. This attribute is writable.
5133@end defvar
5134
5135@defvar Breakpoint.commands
5136This attribute holds the commands attached to the breakpoint. If
5137there are commands, this attribute's value is a string holding all the
5138commands, separated by newlines. If there are no commands, this
5139attribute is @code{None}. This attribute is not writable.
5140@end defvar
5141
5142@node Finish Breakpoints in Python
5143@subsubsection Finish Breakpoints
5144
5145@cindex python finish breakpoints
5146@tindex gdb.FinishBreakpoint
5147
5148A finish breakpoint is a temporary breakpoint set at the return address of
5149a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
5150extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
5151and deleted when the execution will run out of the breakpoint scope (i.e.@:
5152@code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
5153Finish breakpoints are thread specific and must be create with the right
5154thread selected.
5155
5156@defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
5157Create a finish breakpoint at the return address of the @code{gdb.Frame}
5158object @var{frame}. If @var{frame} is not provided, this defaults to the
5159newest frame. The optional @var{internal} argument allows the breakpoint to
5160become invisible to the user. @xref{Breakpoints In Python}, for further
5161details about this argument.
5162@end defun
5163
5164@defun FinishBreakpoint.out_of_scope (self)
5165In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
5166@code{return} command, @dots{}), a function may not properly terminate, and
5167thus never hit the finish breakpoint. When @value{GDBN} notices such a
5168situation, the @code{out_of_scope} callback will be triggered.
5169
5170You may want to sub-class @code{gdb.FinishBreakpoint} and override this
5171method:
5172
5173@smallexample
5174class MyFinishBreakpoint (gdb.FinishBreakpoint)
5175 def stop (self):
5176 print "normal finish"
5177 return True
5178
5179 def out_of_scope ():
5180 print "abnormal finish"
5181@end smallexample
5182@end defun
5183
5184@defvar FinishBreakpoint.return_value
5185When @value{GDBN} is stopped at a finish breakpoint and the frame
5186used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
5187attribute will contain a @code{gdb.Value} object corresponding to the return
5188value of the function. The value will be @code{None} if the function return
5189type is @code{void} or if the return value was not computable. This attribute
5190is not writable.
5191@end defvar
5192
5193@node Lazy Strings In Python
5194@subsubsection Python representation of lazy strings.
5195
5196@cindex lazy strings in python
5197@tindex gdb.LazyString
5198
5199A @dfn{lazy string} is a string whose contents is not retrieved or
5200encoded until it is needed.
5201
5202A @code{gdb.LazyString} is represented in @value{GDBN} as an
5203@code{address} that points to a region of memory, an @code{encoding}
5204that will be used to encode that region of memory, and a @code{length}
5205to delimit the region of memory that represents the string. The
5206difference between a @code{gdb.LazyString} and a string wrapped within
5207a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
5208differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
5209retrieved and encoded during printing, while a @code{gdb.Value}
5210wrapping a string is immediately retrieved and encoded on creation.
5211
5212A @code{gdb.LazyString} object has the following functions:
5213
5214@defun LazyString.value ()
5215Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
5216will point to the string in memory, but will lose all the delayed
5217retrieval, encoding and handling that @value{GDBN} applies to a
5218@code{gdb.LazyString}.
5219@end defun
5220
5221@defvar LazyString.address
5222This attribute holds the address of the string. This attribute is not
5223writable.
5224@end defvar
5225
5226@defvar LazyString.length
5227This attribute holds the length of the string in characters. If the
5228length is -1, then the string will be fetched and encoded up to the
5229first null of appropriate width. This attribute is not writable.
5230@end defvar
5231
5232@defvar LazyString.encoding
5233This attribute holds the encoding that will be applied to the string
5234when the string is printed by @value{GDBN}. If the encoding is not
5235set, or contains an empty string, then @value{GDBN} will select the
5236most appropriate encoding when the string is printed. This attribute
5237is not writable.
5238@end defvar
5239
5240@defvar LazyString.type
5241This attribute holds the type that is represented by the lazy string's
f8d99587 5242type. For a lazy string this is a pointer or array type. To
329baa95
DE
5243resolve this to the lazy string's character type, use the type's
5244@code{target} method. @xref{Types In Python}. This attribute is not
5245writable.
5246@end defvar
5247
5248@node Architectures In Python
5249@subsubsection Python representation of architectures
5250@cindex Python architectures
5251
5252@value{GDBN} uses architecture specific parameters and artifacts in a
5253number of its various computations. An architecture is represented
5254by an instance of the @code{gdb.Architecture} class.
5255
5256A @code{gdb.Architecture} class has the following methods:
5257
5258@defun Architecture.name ()
5259Return the name (string value) of the architecture.
5260@end defun
5261
5262@defun Architecture.disassemble (@var{start_pc} @r{[}, @var{end_pc} @r{[}, @var{count}@r{]]})
5263Return a list of disassembled instructions starting from the memory
5264address @var{start_pc}. The optional arguments @var{end_pc} and
5265@var{count} determine the number of instructions in the returned list.
5266If both the optional arguments @var{end_pc} and @var{count} are
5267specified, then a list of at most @var{count} disassembled instructions
5268whose start address falls in the closed memory address interval from
5269@var{start_pc} to @var{end_pc} are returned. If @var{end_pc} is not
5270specified, but @var{count} is specified, then @var{count} number of
5271instructions starting from the address @var{start_pc} are returned. If
5272@var{count} is not specified but @var{end_pc} is specified, then all
5273instructions whose start address falls in the closed memory address
5274interval from @var{start_pc} to @var{end_pc} are returned. If neither
5275@var{end_pc} nor @var{count} are specified, then a single instruction at
5276@var{start_pc} is returned. For all of these cases, each element of the
5277returned list is a Python @code{dict} with the following string keys:
5278
5279@table @code
5280
5281@item addr
5282The value corresponding to this key is a Python long integer capturing
5283the memory address of the instruction.
5284
5285@item asm
5286The value corresponding to this key is a string value which represents
5287the instruction with assembly language mnemonics. The assembly
5288language flavor used is the same as that specified by the current CLI
5289variable @code{disassembly-flavor}. @xref{Machine Code}.
5290
5291@item length
5292The value corresponding to this key is the length (integer value) of the
5293instruction in bytes.
5294
5295@end table
5296@end defun
5297
5298@node Python Auto-loading
5299@subsection Python Auto-loading
5300@cindex Python auto-loading
5301
5302When a new object file is read (for example, due to the @code{file}
5303command, or because the inferior has loaded a shared library),
5304@value{GDBN} will look for Python support scripts in several ways:
5305@file{@var{objfile}-gdb.py} and @code{.debug_gdb_scripts} section.
5306@xref{Auto-loading extensions}.
5307
5308The auto-loading feature is useful for supplying application-specific
5309debugging commands and scripts.
5310
5311Auto-loading can be enabled or disabled,
5312and the list of auto-loaded scripts can be printed.
5313
5314@table @code
5315@anchor{set auto-load python-scripts}
5316@kindex set auto-load python-scripts
5317@item set auto-load python-scripts [on|off]
5318Enable or disable the auto-loading of Python scripts.
5319
5320@anchor{show auto-load python-scripts}
5321@kindex show auto-load python-scripts
5322@item show auto-load python-scripts
5323Show whether auto-loading of Python scripts is enabled or disabled.
5324
5325@anchor{info auto-load python-scripts}
5326@kindex info auto-load python-scripts
5327@cindex print list of auto-loaded Python scripts
5328@item info auto-load python-scripts [@var{regexp}]
5329Print the list of all Python scripts that @value{GDBN} auto-loaded.
5330
5331Also printed is the list of Python scripts that were mentioned in
9f050062
DE
5332the @code{.debug_gdb_scripts} section and were either not found
5333(@pxref{dotdebug_gdb_scripts section}) or were not auto-loaded due to
5334@code{auto-load safe-path} rejection (@pxref{Auto-loading}).
329baa95
DE
5335This is useful because their names are not printed when @value{GDBN}
5336tries to load them and fails. There may be many of them, and printing
5337an error message for each one is problematic.
5338
5339If @var{regexp} is supplied only Python scripts with matching names are printed.
5340
5341Example:
5342
5343@smallexample
5344(gdb) info auto-load python-scripts
5345Loaded Script
5346Yes py-section-script.py
5347 full name: /tmp/py-section-script.py
5348No my-foo-pretty-printers.py
5349@end smallexample
5350@end table
5351
9f050062 5352When reading an auto-loaded file or script, @value{GDBN} sets the
329baa95
DE
5353@dfn{current objfile}. This is available via the @code{gdb.current_objfile}
5354function (@pxref{Objfiles In Python}). This can be useful for
5355registering objfile-specific pretty-printers and frame-filters.
5356
5357@node Python modules
5358@subsection Python modules
5359@cindex python modules
5360
5361@value{GDBN} comes with several modules to assist writing Python code.
5362
5363@menu
5364* gdb.printing:: Building and registering pretty-printers.
5365* gdb.types:: Utilities for working with types.
5366* gdb.prompt:: Utilities for prompt value substitution.
5367@end menu
5368
5369@node gdb.printing
5370@subsubsection gdb.printing
5371@cindex gdb.printing
5372
5373This module provides a collection of utilities for working with
5374pretty-printers.
5375
5376@table @code
5377@item PrettyPrinter (@var{name}, @var{subprinters}=None)
5378This class specifies the API that makes @samp{info pretty-printer},
5379@samp{enable pretty-printer} and @samp{disable pretty-printer} work.
5380Pretty-printers should generally inherit from this class.
5381
5382@item SubPrettyPrinter (@var{name})
5383For printers that handle multiple types, this class specifies the
5384corresponding API for the subprinters.
5385
5386@item RegexpCollectionPrettyPrinter (@var{name})
5387Utility class for handling multiple printers, all recognized via
5388regular expressions.
5389@xref{Writing a Pretty-Printer}, for an example.
5390
5391@item FlagEnumerationPrinter (@var{name})
5392A pretty-printer which handles printing of @code{enum} values. Unlike
5393@value{GDBN}'s built-in @code{enum} printing, this printer attempts to
5394work properly when there is some overlap between the enumeration
697aa1b7
EZ
5395constants. The argument @var{name} is the name of the printer and
5396also the name of the @code{enum} type to look up.
329baa95
DE
5397
5398@item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
5399Register @var{printer} with the pretty-printer list of @var{obj}.
5400If @var{replace} is @code{True} then any existing copy of the printer
5401is replaced. Otherwise a @code{RuntimeError} exception is raised
5402if a printer with the same name already exists.
5403@end table
5404
5405@node gdb.types
5406@subsubsection gdb.types
5407@cindex gdb.types
5408
5409This module provides a collection of utilities for working with
5410@code{gdb.Type} objects.
5411
5412@table @code
5413@item get_basic_type (@var{type})
5414Return @var{type} with const and volatile qualifiers stripped,
5415and with typedefs and C@t{++} references converted to the underlying type.
5416
5417C@t{++} example:
5418
5419@smallexample
5420typedef const int const_int;
5421const_int foo (3);
5422const_int& foo_ref (foo);
5423int main () @{ return 0; @}
5424@end smallexample
5425
5426Then in gdb:
5427
5428@smallexample
5429(gdb) start
5430(gdb) python import gdb.types
5431(gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
5432(gdb) python print gdb.types.get_basic_type(foo_ref.type)
5433int
5434@end smallexample
5435
5436@item has_field (@var{type}, @var{field})
5437Return @code{True} if @var{type}, assumed to be a type with fields
5438(e.g., a structure or union), has field @var{field}.
5439
5440@item make_enum_dict (@var{enum_type})
5441Return a Python @code{dictionary} type produced from @var{enum_type}.
5442
5443@item deep_items (@var{type})
5444Returns a Python iterator similar to the standard
5445@code{gdb.Type.iteritems} method, except that the iterator returned
5446by @code{deep_items} will recursively traverse anonymous struct or
5447union fields. For example:
5448
5449@smallexample
5450struct A
5451@{
5452 int a;
5453 union @{
5454 int b0;
5455 int b1;
5456 @};
5457@};
5458@end smallexample
5459
5460@noindent
5461Then in @value{GDBN}:
5462@smallexample
5463(@value{GDBP}) python import gdb.types
5464(@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
5465(@value{GDBP}) python print struct_a.keys ()
5466@{['a', '']@}
5467(@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
5468@{['a', 'b0', 'b1']@}
5469@end smallexample
5470
5471@item get_type_recognizers ()
5472Return a list of the enabled type recognizers for the current context.
5473This is called by @value{GDBN} during the type-printing process
5474(@pxref{Type Printing API}).
5475
5476@item apply_type_recognizers (recognizers, type_obj)
5477Apply the type recognizers, @var{recognizers}, to the type object
5478@var{type_obj}. If any recognizer returns a string, return that
5479string. Otherwise, return @code{None}. This is called by
5480@value{GDBN} during the type-printing process (@pxref{Type Printing
5481API}).
5482
5483@item register_type_printer (locus, printer)
697aa1b7
EZ
5484This is a convenience function to register a type printer
5485@var{printer}. The printer must implement the type printer protocol.
5486The @var{locus} argument is either a @code{gdb.Objfile}, in which case
5487the printer is registered with that objfile; a @code{gdb.Progspace},
5488in which case the printer is registered with that progspace; or
5489@code{None}, in which case the printer is registered globally.
329baa95
DE
5490
5491@item TypePrinter
5492This is a base class that implements the type printer protocol. Type
5493printers are encouraged, but not required, to derive from this class.
5494It defines a constructor:
5495
5496@defmethod TypePrinter __init__ (self, name)
5497Initialize the type printer with the given name. The new printer
5498starts in the enabled state.
5499@end defmethod
5500
5501@end table
5502
5503@node gdb.prompt
5504@subsubsection gdb.prompt
5505@cindex gdb.prompt
5506
5507This module provides a method for prompt value-substitution.
5508
5509@table @code
5510@item substitute_prompt (@var{string})
5511Return @var{string} with escape sequences substituted by values. Some
5512escape sequences take arguments. You can specify arguments inside
5513``@{@}'' immediately following the escape sequence.
5514
5515The escape sequences you can pass to this function are:
5516
5517@table @code
5518@item \\
5519Substitute a backslash.
5520@item \e
5521Substitute an ESC character.
5522@item \f
5523Substitute the selected frame; an argument names a frame parameter.
5524@item \n
5525Substitute a newline.
5526@item \p
5527Substitute a parameter's value; the argument names the parameter.
5528@item \r
5529Substitute a carriage return.
5530@item \t
5531Substitute the selected thread; an argument names a thread parameter.
5532@item \v
5533Substitute the version of GDB.
5534@item \w
5535Substitute the current working directory.
5536@item \[
5537Begin a sequence of non-printing characters. These sequences are
5538typically used with the ESC character, and are not counted in the string
5539length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
5540blue-colored ``(gdb)'' prompt where the length is five.
5541@item \]
5542End a sequence of non-printing characters.
5543@end table
5544
5545For example:
5546
5547@smallexample
5548substitute_prompt (``frame: \f,
5549 print arguments: \p@{print frame-arguments@}'')
5550@end smallexample
5551
5552@exdent will return the string:
5553
5554@smallexample
5555"frame: main, print arguments: scalars"
5556@end smallexample
5557@end table
This page took 0.558779 seconds and 4 git commands to generate.