Debugging with GDB: Objfiles In Python |
---|
Next: Frames In Python, Previous: Progspaces In Python, Up: Python API [Contents][Index]
GDB loads symbols for an inferior from various symbol-containing files (see Files). These include the primary executable file, any shared libraries used by the inferior, and any separate debug info files (see Separate Debug Files). GDB calls these symbol-containing files objfiles.
The following objfile-related functions are available in the
gdb
module:
When auto-loading a Python script (see Python Auto-loading), GDB
sets the “current objfile” to the corresponding objfile. This
function returns the current objfile. If there is no current objfile,
this function returns None
.
Return a sequence of all the objfiles current known to GDB. See Objfiles In Python.
Look up name, a file name or build ID, in the list of objfiles
for the current program space (see Progspaces In Python).
If the objfile is not found throw the Python ValueError
exception.
If name is a relative file name, then it will match any source file name with the same trailing components. For example, if name is ‘gcc/expr.c’, then it will match source file name of /build/trunk/gcc/expr.c, but not /build/trunk/libcpp/expr.c or /build/trunk/gcc/x-expr.c.
If by_build_id is provided and is True
then name
is the build ID of the objfile. Otherwise, name is a file name.
This is supported only on some operating systems, notably those which use
the ELF format for binary files and the GNU Binutils. For more details
about this feature, see the description of the --build-id
command-line option in Command Line Options in The GNU Linker.
Each objfile is represented by an instance of the gdb.Objfile
class.
The file name of the objfile as a string, with symbolic links resolved.
The value is None
if the objfile is no longer valid.
See the gdb.Objfile.is_valid
method, described below.
The file name of the objfile as specified by the user as a string.
The value is None
if the objfile is no longer valid.
See the gdb.Objfile.is_valid
method, described below.
For separate debug info objfiles this is the corresponding gdb.Objfile
object that debug info is being provided for.
Otherwise this is None
.
Separate debug info objfiles are added with the
gdb.Objfile.add_separate_debug_file
method, described below.
The build ID of the objfile as a string.
If the objfile does not have a build ID then the value is None
.
This is supported only on some operating systems, notably those which use the ELF format for binary files and the GNU Binutils. For more details about this feature, see the description of the --build-id command-line option in Command Line Options in The GNU Linker.
The containing program space of the objfile as a gdb.Progspace
object. See Progspaces In Python.
The pretty_printers
attribute is a list of functions. It is
used to look up pretty-printers. A Value
is passed to each
function in order; if the function returns None
, then the
search continues. Otherwise, the return value should be an object
which is used to format the value. See Pretty Printing API, for more
information.
The type_printers
attribute is a list of type printer objects.
See Type Printing API, for more information.
The frame_filters
attribute is a dictionary of frame filter
objects. See Frame Filter API, for more information.
One may add arbitrary attributes to gdb.Objfile
objects
in the usual Python way.
This is useful if, for example, one needs to do some extra record keeping
associated with the objfile.
In this contrived example we record the time when GDB loaded the objfile.
(gdb) python import datetime def new_objfile_handler(event): # Set the time_loaded attribute of the new objfile. event.new_objfile.time_loaded = datetime.datetime.today() gdb.events.new_objfile.connect(new_objfile_handler) end (gdb) file ./hello Reading symbols from ./hello...done. (gdb) python print gdb.objfiles()[0].time_loaded 2014-10-09 11:41:36.770345
A gdb.Objfile
object has the following methods:
Returns True
if the gdb.Objfile
object is valid,
False
if not. A gdb.Objfile
object can become invalid
if the object file it refers to is not loaded in GDB any
longer. All other gdb.Objfile
methods will throw an exception
if it is invalid at the time the method is called.
Add file to the list of files that GDB will search for debug information for the objfile. This is useful when the debug info has been removed from the program and stored in a separate file. GDB has built-in support for finding separate debug info files (see Separate Debug Files), but if the file doesn’t live in one of the standard places that GDB searches then this function can be used to add a debug info file from a different place.
Next: Frames In Python, Previous: Progspaces In Python, Up: Python API [Contents][Index]