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 }