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