Debug Threads and Processes in Visual Studio
Threads and processes are related concepts in computer science. Both represent sequences of instructions that must execute in a specific order. Instructions in separate threads or processes, however, can execute in parallel.
Processes exist in the operating system and correspond to what users see as programs or applications. A thread, on the other hand, exists within a process. For this reason, threads are sometimes referred to as light-weight processes. Each process consists of one or more threads.
The existence of multiple processes enables a computer to perform more than one task at a time. The existence of multiple threads enables a process to separate work to be performed in parallel. On a computer with multiprocessors, processes or threads can run on different processors. This enables true parallel processing.
Perfect parallel processing is not always possible. Threads sometimes must be synchronized. One thread may have to wait for a result from another thread, or one thread may need exclusive access to a resource that another thread is using. Synchronization problems are a common cause of bugs in multithreaded applications. Sometimes threads may end up waiting for a resource that never becomes available. This results in a condition called deadlock.
The Visual Studio debugger provides powerful but easy-to-use tools for debugging threads and processes.
Tools for Debugging Threads and Processes in Visual Studio
The primary tools for working with processes in Visual Studio are the Attach to Process dialog box, the Processes window, and the Debug Location toolbar. The primary tools for debugging threads are the Threads window, thread markers in source windows, and the Debug Location toolbar.
The primary tools for debugging multithreaded applications are the Parallel Stacks and Parallel Tasks, Parallel Watch, and GPU Threads windows.
The following table shows the information available and the actions you can perform in each of these places:
User Interface |
Information Available |
Actions You Can Perform |
---|---|---|
Attach to Process dialog box |
Available Processes you can attach to:
|
Select a process to attach to Select a remote computer Change transport type for connecting to remote computers |
Processes window |
Attached Processes:
|
Tools:
Shortcut menu:
|
Threads window |
Threads in current process:
|
Tools:
Shortcut menu:
Other actions:
|
Source window |
Thread indicators in left gutter indicate single or multiple threads (off by default, turned on by using shortcut menu in Threads window) |
Shortcut menu:
|
Debug Location toolbar |
|
|
Parallel Stacks window |
|
|
Parallel Tasks window |
|
|
Parallel Watch window |
|
|
GPU Threads window |
|
|
See Also
Other Resources
Attach to Running Processes with the Visual Studio Debugger