Multi Level Hierarchy in the Debug View using DSF (Dobrin)
Currently Platform Flexible enables the debug view to show any hierarchy of objects.
DSF currently has defined two data model interfaces IExecutionDMContext and IContainerDMContext
and two view models classes: AbstractThreadVMNode and AbstractContainerVMNode.
I would like to explore these interfaces and the classes using them to deliver the following features:
- Containers can be recursive - each container can have its own stack and/or other child containers.
- The user should be able to filter and show container nodes or container types.
- The user should be able to group and ungroup container nodes or container types.
- Filtering and grouping nodes can be both with the involvement of the back end debugger or not.
- The user should be able to change the way the contaniers are presented in the debug view without changing the container's hierarchy.
- The containers can have types so the user can filter or group containers by container type.
I believe these features are driven from the following use cases:
The debug view shows hierarchy "core – process - thread" The user can switch the hierarchy to show "process – thread – core"
The debug view shows hierarchy "core – thread – process" The user can hide and show all "core" nodes. All "thread" nodes will appear as children of the launch node. The user can hide specific core from the hierarchy. Its "thread" nodes can either hide, or they can become children of the launch node.
The user of a multicore system can hide and show the boards the cores / devices / connections the core belongs to.
The user can create custom groups that he can use for synchronized stepping / running / halting.
The user can hide in the debug view all threads and processes with names that matches a specific pattern.
DSF seems to have a limitation where it only accepts a single level of IContainerDMContext.
Currently I know of two Bugzilla entries related to the idea:
I think we can reuse the first one to further discussion on the topic. To discuss requirements and use cases we can use the use case page.