Archer is a gdb development branch focusing on better C++ support. It also includes Python scripting capabililites.
- Name: Tom Tromey
- email: firstname.lastname@example.org
- Targeted release: Releases/11
- Last updated: 2008-12-01
- Percentage of completion: 50%
More information on the Archer project can be found on the gdb wiki: http://sourceware.org/gdb/wiki/ProjectArcher
Archer is a long-term project with multiple branches being developed in parallel. We'll merge these branches together to produce a released version for Fedora.
Benefit to Fedora
In the F11 time frame, this will bring Python scripting to gdb, plus some bug fixes. This will improve the debugging experience on Fedora by making the debugger more powerful. Note that, while all this code will eventually go into the upstream gdb, that process is very slow. Shipping Archer will put Fedora on the cutting edge here.
The Fedora-related changes are reasonably small. Essentially, the gdb package must be updated to require python-devel, and the gdb patches must be rebased on a later gdb.
We'll also be shipping some application- or library-specific pretty-printers. This functionality relies on the Python support. Currently we have printers for most of the containers in libstdc++; those will be integrated there.
How To Test
Testing is done using the gdb test suite. Archer ships tests for the Python work. A simple smoke test can be done by starting the resulting gdb and verifying that the "python" command works, e.g.: "python print 23"
The most obvious change will be that libstdc++ classes will pretty-print nicely by default. For power users, Python scripting will open many more debugging possibilities.
I think this work is relatively self-contained.
The libstdc++ work amounts to just installing one more file in the appropriate place.
None necessary. We can just ship plain gdb.
The Archer branches include updates to the gdb manual.
The version of GDB included in Fedora contains patches and modifications not in the upstream GDB. Notable changes from upstream include:
- GDB can debug programs compiled with -fpie.
- GDB can be scripted using Python. This is used to support the new type-specific pretty-printing feature.
- GDB lazily reads debug info, resulting in faster startup when the debugee uses many shared libraries.
- A new "catch syscall" command has been added. This will cause GDB to stop your program when a syscall is entered or exited.
- C++ debugging support has been improved. The expression parser handles more cases correctly, and GDB can now properly handle exceptions thrown during an inferior function call.
Comments and Discussion