Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

CDT/Obsolete/cdt-debug-edc/Tour

< CDT‎ | Obsolete‎ | cdt-debug-edc
Revision as of 15:02, 22 January 2020 by Jonah.kichwacoders.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Warning2.png
Note: The contents of this page is obsolete, but it may still contain some interesting tid-bits.

EDC Components

Run Control

org.eclipse.cdt.debug.edc.internal.services.dsf.RunControl implements the core debug model for execution contexts (Processes & Threads). Context creation and management happens here along with support for the basics like stepping, stopping, resuming, terminating etc. Events from the debug target (breakpoints, exceptions, library loads) are handled here as well.

Modules

org.eclipse.cdt.debug.edc.internal.services.dsf.Modules keeps track of each bit of code loaded on the debug target. Unless you know where the code is you can't stop in it, step in it, or set breakpoints in it. This relies on an accurate set of library loaded events from the debug target agent.

Symbols

Accurate symbol reading is key to almost everything a source level debugger does. The packages org.eclipse.cdt.debug.edc.internal.symbols and org.eclipse.cdt.debug.edc.internal.symbols.dwarf contain a general symbol reader interface and an implementation that understands the DWARF format. Both are design for the needs of a debugger, not for general symbol browsing. So far development has focused on making a complete reader that is well integrated with the rest of EDC. Development is continuing to make the reader faster and scale to very large symbol files.

Variables & Expressions

Variables are handled as Expressions and Expressions are parsed using the CDT lauguage parser and then evaluated in org.eclipse.cdt.debug.edc.internal.eval.ast.engine and org.eclipse.cdt.debug.edc.internal.eval.ast.engine.instructions.

TCF Agent Management

When an EDC debugger needs the services of a TCF agent it will use the TCFServiceManager to find a sutiable agent if one it running and launch an available agent if needed. An example is in org.eclipse.cdt.debug.edc.windows.Win32AgentDescriptor.

TCF Interfaces

In addition to the fine interfaces provided by the TCF project EDC has some new ones in org.eclipse.cdt.debug.edc.tcf.extension.services:

ILogging - Let's clients listen for log messages from the agent

ISettings - Let's clients push a set of settings properties to an agent

ISimpleRegisters - A simplified registers interface. Created while the TCF IRegisters interface was still evolving it is probably unecessary now and can be phased out.

ISymbianInstall - Manages downloading and installing a Symbian application onto a connected phone. This is currently specific Symbian and doesn't belong in CDT. It will be moved later to evolved into a more general installation interface.

Snapshots

The EDC debugger supports a debug snapshot feature that lets you capture the state of a debug session at any point and then view it again later just as you would a live session. Debug snapshots captured during a session are combined into a snapshot album. There is some early support for this in org.eclipse.cdt.debug.edc.internal.snapshot. Complete support is coming as soon as a few things work their way through the Eclipse IP review process.

Tests

Tests are in org.eclipse.cdt.debug.edc.tests. Some of the tests can be run without starting a debug session. Others start a debug session using a saved snapshot and then test it as if it were a live session.

Back to the top