From Fedora Project Wiki

Archer

Summary

Archer is a gdb development branch focusing on better C++ support. It also includes Python scripting capabililites.

Owner

  • email: tromey@redhat.com

Current status

  • Targeted release: Releases/11
  • Last updated: 2009-03-04
  • Percentage of completion: 100%

All the planned features are in rawhide. There is some ongoing discussion about placement of a few scripts (pretty-printers for libstdc++), but this will all be worked out in the very near future.

Detailed Description

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.

We plan to at least merge the python scripting branch, the "catch syscall" branch, the lazy debuginfo reading branch, and a couple of branches related to C++ debugging improvements.

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.

Scope

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"

User Experience

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.

Dependencies

I think this work is relatively self-contained.

The libstdc++ work amounts to just installing one more file in the appropriate place.

Contingency Plan

None necessary. We can just ship plain gdb.

Documentation

The Archer branches include updates to the gdb manual.

Release Notes

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