1.工具
pstack 进程PID,多次查看线程状态,如果一直处于一样,则锁住了,需进一步分析 谁 拿了锁,
为了方便对应代码分析 ,需要打印出线程的TID 非线程ID,
{
#include <linux/unistd.h>
pid_t tid = (pid_t)syscall(SYS_gettid);
}
2. gdb attach PID
info thread
t 1
p mutex 可看到哪个线程(TID) 拿了锁
参考:
http://www.ibm.com/developerworks/cn/linux/l-cn-deadlock/
一个 Linux 上分析死锁的简单方法
3. valgrind 工具 用于内存问题分析,非常准。目前只有linux版本。