How to debug a single thread in Visual Studio?

Here's what I did:

  1. Set a conditional break point that I knew would only hit on the thread that I was looking for.

  2. Once the breakpoint hits and you are in the thread you want, in the Visual Studio Threads window (while debugging, Debug -> Windows -> Threads), Ctrl + A (to select all threads), and then Ctrl + click the thread you are currently on. You should have all threads except the one you want to debug selected.

  3. Right-click, and choose "Freeze".

Now, Visual Studio will only step through the thawed thread. It seems to be much slower when doing this, presumably because it has to loop through all of the frozen threads, but it brought some sanity to my multi-threaded debugging.


Freeze/Thaw threads is an incorrect way because other threads don't execute any code.

The most correct and usable way is to:

  1. Hit Ctrl+A in the breakpoints window (select all breakpoints).
  2. Right click and select "Filter...".
  3. Enter "ThreadId=(current thread id)".

In Visual Studio 2015 and newer, the process is similar:

  1. Hit Ctrl+A in the breakpoints window (select all breakpoints).
  2. Right click and select "Settings...".
  3. Check "Conditions" and select "Filter" in the dropdown
  4. Enter "ThreadId=(current thread id)".

So all threads are executed, but the debugger hits on the current thread only.