Debugger Machine Interface (DMI)
This is the home page for the Debugger Machine Interface (DMI) project.
Debugger Machine Interface (DMI) Working Group
MI is a line-based machine-oriented text interface to a debugger. The Gnu GDB debugger offers a reference implementation of MI emission. The MI interface is quickly becoming a de facto standard for integrating debuggers into a variety of environments. For example, Eclipse/CDT (http://www.eclipse.org/cdt) is a C/C++ IDE which consumes the MI emission (from GDB). Apple's Xcode is another IDE which utilizes the interface.
As more vendors turn to the MI API, it becomes important to standardize the API so that implementations don't diverge. Vendors' tools must continue to work with debuggers that emit the interface.
The current MI interface is incomplete: various vendors (and the open source community) have seen the need to add enhancements. The interface is also not completely documented in its various forms. For example, the GDB manual (http://sources.redhat.com/gdb/current/onlinedocs/gdb_25.html#SEC240) documents only a subset of the interface, while the Apple extensions are not documented at all (neither have they been incorporated back into open source).
This makes it difficult for tools vendors (open source or not) and debuggers to work well together in a consistent manner.
The purpose of the working group is to transform the MI interface into a standard Debugger Machine Interface (DMI).
The goals of the working group are:
- Document the existing interface
- Agree on changes and enhancements to the interface
- Define vendor extensibility (that is, how 3rd party tools providers may extend the interface)
- Decide which vendor extensions should be part of the standard interface
- Implement the agreed on interface in Gnu GDB, as a reference implementation
The goals for the specification are:
- Clarity and consistency (as the highest priority)
- Vendor-neutrality (where possible)
- Platform/OS-neutrality (where possible)
- Language-neutrality (where possible)
- Provision of a single specification for all vendors and debuggers
- Compatibility with earlier versions
- Improvement of the interface over time
- Run-time performance (the interface shouldn't require operations which lead to poor performance)
- Use of standard good practices in creating the specification (such as referencing and incorporating knowledge of related specifications where sensible)
- Support the Gnu GDB project by implementing any agreed changes and enhancements to the interface.
Non-goals for the specification are:
- Support for debugger "futures"
- Formal standardization of the interface (ANSI or ISO)
- Enforcing particular semantics on debuggers
Current Group Members
FSF Developers (GNU GDB, GNU Emacs):
Nick Roberts mailto:firstname.lastname@example.org
Bob Rossi mailto:email@example.com
Eli Zaretskii mailto:firstname.lastname@example.org
Interested Tools Vendors:
Apple (Jim Ingham mailto:email@example.com
Intel Corporation (TBD)
QNX (Alain Magloire mailto:firstname.lastname@example.org)
RedHat (Andrew Cagney mailto:email@example.com
CodeSourcery (Daniel Jacobowitz mailto:firstname.lastname@example.org)
Los Alamos (Greg Watson mailto:email@example.com
Absoft (Rod Mach mailto:firstname.lastname@example.org)
DWARF committee chair)
Susan Macchia (mailto:email@example.com)
Vladimir Prus <mailto:firstname.lastname@example.org>
How to become a member
If you would like to be added to this working group, please contact Susan Macchia (mailto:email@example.com).
You do not need to be a workgroup member to participate in discussions about DMI or the Public Review, just join the DMI Mailing List (http://lists.linux-foundation.org/mailman/listinfo/dmi-discuss).
The dmi-workgroup mailing list (http://lists.freestandards.org/mailman/listinfo/dmi-workgroup) is for workgroup related info (meeting agenda, minutes, announcements).
We also encourage you to support our sponsor, the Free Standards Group.
Developing the DMI Spec
We will be using a series of wiki pages to develop the spec. See the meeting minutes in the dmi-workgroup list (http://lists.freestandards.org/pipermail/dmi-workgroup/2006-May/thread.html#8).
The first pass is to document what the manual says/what gdb does, including vendor variations. A wiki is a good tool for this kind of collaborative content gathering.
The DMIwiki is the place to start.