You can have a breakpoint on a specific thread by filtering a regular breakpoint:
stop in foo -thread t@4
Where the t@4 refers to the thread with id 4.
When a thread hits a breakpoint, all threads stop. This is knows as "sympathetic stop," or "stop the world".
From the point of view of /proc and LWPs this is synchronous debugging.
To ease thread navigation, put this in your .dbxrc.
_cb_prompt() {
if [ $mtfeatures = "true"]
then
PS1='[$thread $lwp]: '
else
PS1="(dbx-$proc) "
fi
}