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

Difference between revisions of "PinAndClone"

m (Pin & Clone Feature)
(Requirements)
Line 17: Line 17:
 
=== Requirements  ===
 
=== Requirements  ===
  
*Debug views shall have a toggle toolbar button to enable/disable pinning operation.
+
==== General  ====
  
:*When view is pinned, there shall be an indication of which debug context the view is attached.  
+
*Debug views shall have a toggle toolbar button for enable/disable pinning operation.
:*When view is pinned and the pinned debug context is removed from the Launch view, the view shall blank out but the button shall state pinned.  
+
 
:*When view is pinned and the pinned debug context is added to the Launch view, the view shall update itself with the lastest data from the model. 
+
:*When the view is pinned, there shall be an indication of which debug context the view is attached.
 +
:*When the view is pinned and the pinned debug context is removed from the Launch view, the view shall blank out, but the button shall state pinned.  
 +
:*When the view is pinned and the pinned debug context is added to the Launch view, the view shall update itself with the lastest data from the model. 
  
 
*Debug views shall have a toolbar button to enable clone operation, pressing the clone button will open a new view of the same type.
 
*Debug views shall have a toolbar button to enable clone operation, pressing the clone button will open a new view of the same type.
Line 27: Line 29:
 
:*The title of the view shall have an index to differentiate itself from other view of the same type i.e Expressions.
 
:*The title of the view shall have an index to differentiate itself from other view of the same type i.e Expressions.
  
 
+
==== Debug Views Specific<br> ====
 +
 
 +
*Disassembly View and Memory View
 +
 
 +
:*When the view is pinned, the view shall indicates the '''process '''name as the pinned debug context and the first avaliable '''thread '''shall be used to perform expression evaluation for the start address.
 +
 
 +
*Registers/Expressions/Variables View
 +
:*When the view is pinned, the view shall indicates the selected debug element in the Launch view as the pinned debug context.
  
 
=== '''Use Cases'''  ===
 
=== '''Use Cases'''  ===

Revision as of 14:57, 13 September 2010

Pin & Clone Feature

Key Worlds and Phrases

Launch View: Known as Debug view, where stack frames, threads, processes, and others are display.

Debug Views: Views that reacts to debug context event, such as Expressions, Variables, Registers, Memory, Disassembly, Modules, and others.


Problem Definition

Debug views are used to monitor data for the selected debug context. In a multi-cores/threads/sessions environment, it is desirable to be able to compare data between debug contexts. Right now, the only way to be able to achieve the comparison is to open another workbench window, this also have its limitation. With two workbench windows open, realestate is an issue, and as well as debug context change can cause the debug views to change.

To achieve data comparison, it is necessary to be able to open multiple instances of a debug view in the same workbench window and be able to pin the view to a debug context.


Requirements

General

  • Debug views shall have a toggle toolbar button for enable/disable pinning operation.
  • When the view is pinned, there shall be an indication of which debug context the view is attached.
  • When the view is pinned and the pinned debug context is removed from the Launch view, the view shall blank out, but the button shall state pinned.
  • When the view is pinned and the pinned debug context is added to the Launch view, the view shall update itself with the lastest data from the model. 
  • Debug views shall have a toolbar button to enable clone operation, pressing the clone button will open a new view of the same type.
  • The title of the view shall have an index to differentiate itself from other view of the same type i.e Expressions.

Debug Views Specific

  • Disassembly View and Memory View
  • When the view is pinned, the view shall indicates the process name as the pinned debug context and the first avaliable thread shall be used to perform expression evaluation for the start address.
  • Registers/Expressions/Variables View
  • When the view is pinned, the view shall indicates the selected debug element in the Launch view as the pinned debug context.

Use Cases

Compare expressions/variables between two cores

Goal: User launches a debug session with a multi-cores system and would like to monitor an array in share memory

Usage Flow:

  1. Launch a debug session
  2. Selects the thread element of Core 1 in the Launch view
  3. Open the Expressions view and add an array variable to watch
  4. Click on the pin toolbar button in the Expressions view 5. Selects the thread element of Core 2 in the Launch view 6. Open a second Expression view and add an array variable to watch 7. Click on the pin toolbar button in the second Expressions view 8. Compares the array between two cores

Post Conditions:

  1. The views do not react to debug context change
  2. The views will continue to update whenever the array’s value changed

 

Compare memory between two processes

Goals: User launches a debug session and would like pin the Memory view to a process and compare the memory with another process

Usage Flow:

  1. Launch two debug sessions 
  2. Selects a process in the Launch view 
  3. Open a Memory view and set the start address 
  4. Click on the pin toolbar button in the Memory view 
  5. Selects another process in the Launch view 
  6. Open a second Memory view and set the start address

Post Conditions:

  1. The first Memory view does not reacts to debug context change 
  2. The views will continue to update whenever memory has changed

 

Pin Disassembly view on a process

Goals: User should be able to pin the Disassembly view to a process

Usage Flow: 

  1. Launch a debug session 
  2. Selects a process in the Launch view 
  3. Open the Disassembly view 
  4. Click on the pin toolbar button in the Disassembly view 
  5. Selects a different process and perform step operations

Post Conditions:

  1. The Disassembly view should not follows the debug context and remains on the pinned process

 

Pinned context gets out of scope

Goals: Expressions view should remember pinned context when context gets out of scope

Pre Conditions:

  1. There is already a debug session 
  2. The Expressions view is pinned to a stackframe

Usage Flow:

  1. Steps out of the stackframe that is pinned to the Expressions view 
  2. Terminate the debug session 
  3. Restart the debug session

Post Conditions:

  1. The Expressions view should blank out when the stackframe is out of scope (or session terminated), however the view should not unpin itself 
  2. The Expressions view should reattach itself to stackframe context when it is valid


UI Presentation

These are ideas in past discussions on how the UI should look like.

  • Have a pin toolbar button in the view, when pressed, the view will detach itself from debug context change event (I like this the most, it is simple and clean). Debug context can be provided from the debug view or create a drop down list with all pinnable debug contexts.
  • The view tab and the text in the Launch view would change to a matching color ??? (Might not be able to implement due to platform and SWT changes)
  • Have a tooltip show the pinned context or display the pinned context in a label above the tree view 
  • Embed breadcrumb into the view and have it as the context provider (I think this is a bit over kill, but it is the best to be able to switch context without using the Launch view).
  • Have the Variables view to compare values for different threads, value columns for each thread. (This is only good for thread, doesn’t solve multi-processes/sessions case and only applicable to the Variable view)

 

UI Mockup

TBD.

Back to the top