About Device Debugging

The Eclipse Platform project contains a set of debugging API's and debugger views from which several debuggers are derived, most notably the Java Debugger (JDT) and the C/C++ Debugger (CDT). However, these API's and views are geared towards developing a single application on a fast workstation with a simple hierarchical debug model (processor, thread, stack frame).

Debugging software running on embedded devices or remote systems differs from debugging host applications in several ways. First, the hardware model is usually different, with embedded devices often employing multiple processors in multi-core and/or processor + DSP configurations. Second, the memory models are more complex and varied. Memory is usually very limited, often shared between multiple cores, often of variable width, and often used in multiple MMU configurations depending on the target operating system and the device configuration. Third, debugging device software requires a deeper visibility into the target, including access to on-chip peripherals, visibility into on-chip and off-chip processor cache, ability to program target flash, ability to trace instruction flow using on-chip trace buffers, and ability to perform low-level target hardware diagnostics. Fourth, embedded devices often have specialized means for debug access that usually require additional hardware and/or target software. This debug access can be slower than typical host application debugging and can therefore put a premium on overall debugger performance and the amount of interaction the debugger has with the target. Many of these requirements cannot be well covered today using only the Platform debug API's and views or the CDI interface in CDT.

The mission of the Device Debugging (DD) project is to build enhanced debug models, API's, and views that augment the Eclipse Debug Platform in order to address the added complexities of device software debugging described above. As such, much of the work in this project is incorporated back into the Eclipse platform.

As described on the DD Wiki, these are the current goals for Device Debugging project at this point.

  • Modify the Eclipse Debug Model Interfaces in order to enable more customized debugger implementations, especially those geared towards the embedded space. The first version was released in Eclipse 3.2. The platform debug team and the DD project are currently looking at improvements.
  • Provide a new Debug Model implementation that takes a more modular approach to connecting debugger backends into Eclipse. This is called Debugger Services Framework (DSF).
  • Enhance the debugger views for multi-core and multi-process support and provide specific improvements in those views for embedded development. Multi-core enhancements are proposed for the Eclipse 3.3 release. We are looking at additional view enhancements.
  • Integrated with the SPIRIT consortium for tooling and debugger data file specification.
  • Provide the next generation implementation for the CDT MI debugger.

For more information, see

  • See DSF Design Documents on the Help Server for the latest documentation and instructions.
  • Flexible Debug Platform | A proposal for extensions to the Eclipse Debug platform that allow pluggable debuggers and a large amount of customization of the debugging experience in Eclipse. This is currently being implemented for Eclipse 3.2 and have been the primary focus of the Device Debugging project thus far.
  • Open Debug Server Proposal | A concept for an open source debugger with pluggability in several functional areas.
  • Update Policy Prototype | Ideas for a new view update policy implementation in Eclipse 3.2.
  • Multiple Debug Context Proposal | Ideas for associated debugger views with specific debug contexts.
  • Pinned Debug Views Proposal | Ideas for cloning and pinning of debugger views for use with multipel debug contexts.
  • Memory View Enhancements | Planned enhancements to the platform memory view in Eclipse 3.2.
  • DD Project Plan | Release plan for Device Debug capabilities.