Next: Interrupted System Calls, Previous: Background Execution, Up: Thread Stops

#### 5.5.4 Thread-Specific Breakpoints

When your program has multiple threads (see Debugging Programs with Multiple Threads), you can choose whether to set breakpoints on all threads, or on a particular thread.

`break` linespec `thread` threadno
`break` linespec `thread` threadno `if ...`
  linespec specifies source lines; there are several ways of writing them (see Specify Location), but the effect is always to specify some source line.

  Use the qualifier ‘`thread threadno`’ with a breakpoint command to specify that you only want gdb to stop the program when a particular thread reaches this breakpoint. The threadno specifier is one of the numeric thread identifiers assigned by gdb, shown in the first column of the ‘`info threads`’ display.

  If you do not specify ‘`thread threadno`’ when you set a breakpoint, the breakpoint applies to all threads of your program.

  You can use the `thread` qualifier on conditional breakpoints as well; in this case, place ‘`thread threadno`’ before or after the breakpoint condition, like this:

                (gdb) break frik.c:13 thread 28 if bartab > lim

Thread-specific breakpoints are automatically deleted when gdb detects the corresponding thread is no longer in the thread list. For example:

         (gdb) c
         Thread-specific breakpoint 3 deleted - thread 28 no longer in the thread list.

There are several ways for a thread to disappear, such as a regular thread exit, but also when you detach from the process with the `detach` command (see Debugging an Already-running Process), or if gdb loses the remote connection (see Remote Debugging), etc. Note that with some targets, gdb is only able to detect a thread has exited when the user explictly asks for the thread list with the `info threads` command.