35
edits
Changes
Add screenshots, refine text
=== Visual Studio tools for multithreaded debugging ===
[[File:Threads.png|200px|thumb|left|alt| Threads Window]] [[File:ParallelStacks.png|200px|thumb|right|alt| Parallel Stacks Window]][[File:ParallelWatch.png|200px|thumb|left|alt| Parallel Watch Window]][[File:DebugLocation.png|200px|thumb|right|alt| Debug Location Windows]][[File:Tasks.png|200px|thumb|left|alt| Tasks Windows]][[File:GPUThreads.png|200px|thumb|right|alt|GPU Threads Windows]][[File:AttachToProcess.png|200px|thumb|left|alt|Attach to Process Dialog]][[File:Processes.png|200px|thumb|right|alt|Processes Window]]Visual Studio provides the developers with a variety of tools to assist with the multithreaded application debugging based on the specifics of the implementation:* '''Threads'''** 1. '''Threads window''' - Allows to view and manipulate the threads, also provides partial call stack for each of the threads** 2. '''Thread markers''' - Icon resembling two cloth threads indicating where a thread is stopped. Provides a DataTip containing the name and thread ID, as well as thread manipulation shortcut menu ** 3. '''Parallel Stacks window''' - Shows call stack information for all the threads in the program** 4. '''Parallel Watch window''' - Tracks the values produced by the multithreaded expression** 5. '''Debug Location toolbar''' - Allows to manipulate manipulating threads and processes* '''Task parallelism'''** '''Parallel Stacks window''' (discussed above)** '''Parallel Watch window''' (discussed above)** 6. '''Tasks window''' - Lists all the current parallel and scheduled tasks* '''GPU threads'''** 7. '''GPU Threads window''' - Allows to work working with the GPU threads* '''Processes'''** 8. '''Attach to Process dialog box''' - Allows the developer to attach the VS debugger to the process, enables the process debugging** 9. '''Processes window''' - Lists all the processes currently attached to the debugger** '''The tools mentioned above can be divided into the following categories depending on the multithreading technique: 1. Threads - Threads windows, Thread markers, Parallel Stacks window, Parallel Parallel Watch window, Debug Location toolbar 2. Tasks - Parallel Stacks window, Parallel Watch window, Tasks window 3. GPU Threads - GPU Threads window 4. Processes - Attach to Process dialog, Processes window, Debug Location toolbar''' (discussed above) For our project, we are going to do OpenMP debugging, so we will need the following tools: * Breakpoints* Watch window* Thread markers* Threads window* Parallel Watch window* Parallel Stacks window
== Basic Debugging Steps ==