|
|
(73 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
− | This sub-group is focused on improving the workflow of multi-context debugging. ''Multi-context'' refers to simultaneous debugging of multiple cores, processes, threads, or other objects which are represented in standard debugger views.
| + | The work tracked by this page has moved to this [[CDT/designs/MultiCoreDebug| new page]] as part of the CDT project. |
| | | |
− | == Use Cases ==
| + | The Multi-core Debugging Work Group page can be found [[CDT/MultiCoreDebugWorkingGroup|here]]. |
− | | + | |
− | '''Format:'''
| + | |
− | * ''Family of use cases''
| + | |
− | *; ''Use case'' : ''Description of the use case''
| + | |
− | *:; ''Scenario'':
| + | |
− | *:;:* ''Step''
| + | |
− | | + | |
− | | + | |
− | * I. Programs with multiple threads
| + | |
− | | + | |
− | *;1 Two or more threads interacting : User is debugging a program with multiple threads which are interacting with each other.
| + | |
− | *:; a) Debugging threads which contend for the same lock. :
| + | |
− | *:;:# When a thread blocks while stepping,
| + | |
− | *:;:# User switches focus to another thread and steps until the lock is released,
| + | |
− | *:;:# User switches focus back to the first thread and continues debugging.
| + | |
− | *:; b) Debugging race conditions where multiple threads are reading and writing some shared data :
| + | |
− | *:;:# User sets a breakpoint at a location where a shared variable is written.
| + | |
− | *:;:# Multiple threads hit the breakpoint
| + | |
− | *:;:# User looks at each threads to see the thread-private data in each thread.
| + | |
− | *:;:# User steps the threads individually to watch what happens to the shared data.
| + | |
− | *:;:# Alternatively, user steps all threads.
| + | |
− | *:;:# Multiple threads may hit the breakpoint at the same time.
| + | |
− | *:;:# User sets another breakpoint further down in routines that access the shared data.
| + | |
− | *:;:# User continues some or all of the threads which stopped at the first breakpoint so that they may reach the second breakpoint.
| + | |
− | | + | |
− | *;2 Debugging a subset of threads : User is debugging a program with multiple threads, but he is interested only in interacting with some of the threads.
| + | |
− | *:; a) User debugs with breakpoints restricted to a sub-set of threads.
| + | |
− | *:;:# User creates a breakpoint on the routine to be debugged.
| + | |
− | *:;:# User defines which threads should be allowed to hit the breakpoint.
| + | |
− | *:;:# The threads hit the breakpoint and user steps through them.
| + | |
− | *:; b) Run control for a subset of threads : User repeatedly suspends and resumes a subset of threads.
| + | |
− | *:; c) Terminating/re-launching :
| + | |
− | *:;:# User debugs a subset of threads (using filtered breakpoints, etc.).
| + | |
− | *:;:# User terminates and relaunches a process, and continues to debug the same set of threads.
| + | |
− | | + | |
− | *;3 Program with large number (100+) of threads : User is debugging programs with large numbers of threads and he needs to manage those threads effectively.
| + | |
− | *:; a) User needs to switch between suspended threads
| + | |
− | *:;:# User sets a breakpoint that some threads may hit.
| + | |
− | *:;:# Some threads hit the breakpoint.
| + | |
− | *:;:# User switches focus between suspended threads to control them and examine their data.
| + | |
− | *:; b) Threads created/destroyed rapidly: User is debugging a process with threads being created and destroyed at a rapid rate (more than 1 thread/sec.)
| + | |
− | | + | |
− | | + | |
− | * II. Multiple processes that interact with each other
| + | |
− | | + | |
− | * III. Systems with multiple cores
| + | |
− | | + | |
− | | + | |
− | == Problems with Current Workflow ==
| + | |
− | | + | |
− | == Proposed Changes ==
| + | |
− | | + | |
− | | + | |
− | == Old Documents ==
| + | |
− | This sub-group was created following a discussion about platform debug dev: [http://dev.eclipse.org/mhonarc/lists/platform-debug-dev/msg01179.html "ideas for improving multi-context debugging"].
| + | |
− | * [[DSDP/DD/MultiContext_UnlinkViewContextProposal|Unlink View Context proposal]]
| + | |