Action Point Width and Process/Thread State
To see how this works, let’s add some breakpoints of varying widths. The program here has four processes, each with three threads.
In the Processes & Threads view, we’ll group by Thread State and Source Line and display the List View (
).
Using the default Process Width:
Set a breakpoint with the default width of Process.
Select
Go from the debug toolbar.
Each of the four processes had a thread (#2) that hit the breakpoint (although it’s also possible that another thread in a process would have had time to hit the breakpoint before it was stopped).
The first thread that hit the breakpoint stopped all other threads at whatever point they had reached.
Using Thread Width: We’ll change the breakpoint’s width to Thread, and run the program again.
Each of the eight threads that could encounter the breakpoint did, and are stopped. The other four continue to run, i.e. the threads hitting the breakpoint do not stop other threads.
Using Group Width: We’ll change the breakpoint’s width to Group and run the program again. When a thread hits the breakpoint, all threads in all processes in the group stop.
Selecting Go again resumes all the threads until one hits the breakpoint, at which point, all other threads are again stopped. We can continue to run the program until all eight threads have passed the breakpoint. With no more threads to hit the breakpoint, all the threads are left running.