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