dbx 通过检测程序是否利用 libthread.so 来识别多线程程序。程序对 libthread.so 的使用方法有两种:一是通过 -lthread 或 -mt 对其进行显式编译;二是通过 -lpthread 对其进行隐式编译。
检测到多线程程序时,dbx 会尝试装入 libthread_db.so,它是一个专门用于进行线程调试的系统库,位于 /usr/lib 目录下。
dbx 是同步式的;所以当某个线程或轻量级进程 (lightweight process, LWP) 停止时,所有其他线程和 LWP 也会相应停止。 我们有时将这种行为称作 "stop the world" 模型。