Hello,
Here are the key parts:
- The memory view is org.eclipse.debug.internal.ui.views.memory.MemoryView, and the classes in the same package
- The interfaces representing the data model include org.eclipse.debug.core.model.IMemoryBlockRetrieval and org.eclipse.debug.core.model.IMemoryBlock
- The interface that connects the platform memory model to the DSF memory model is org.eclipse.cdt.dsf.debug.internal.provisional.model.IMemoryBlockRetrievalManager
- The interface for the memory service in DSF is org.eclipse.cdt.dsf.debug.service.IMemory
For those interface listed above you can use "Type Hierarchy" in Eclipse to explore the different implementations, depending on which versions of GDB. In the same order as above, the concrete classes are:
- org.eclipse.cdt.dsf.gdb.internal.memory.GdbMemoryBlockRetrieval and org.eclipse.cdt.dsf.gdb.internal.memory.GdbMemoryBlock
- org.eclipse.cdt.dsf.gdb.internal.memory.GdbMemoryBlockRetrievalManager
- org.eclipse.cdt.dsf.gdb.service.GDBMemory (with some of the subclasses providing specialization for specific versions of GDB)
The above is the overview, you probably want breakpoints on:
- AddMemoryBlockAction line: 395: "setEnabled(MemoryViewUtil.isValidContext(debugContext));"
- RetargetAddMemoryBlockAction line: 67: updateAction(Object) method
to identify why/when the add memory action is not being enabled properly.
I hope that helps.
Jonah