步骤如下:
一、查看线程状态和打印变量值
1、gdb -p 进程号
2、thread apply all bt (查看所有线程都运行到了哪里,是否 有hang住的地方,以及确定要打印的变量属于哪个thread下、属于哪个堆栈帧)
3、thread $THREAD_ID (切换到所需查看的线程id)
4、frame $FRAME_ID (切换到对应的堆栈帧)
5、p $VAR_NAME (打印变量值)
注:如果没有切换到对应的thread和frame,则无法打印出想看的变量值。
二、查看死锁
1、p $MUTEX_VAR (打印互斥锁变量,查看器__owner的值,找到对应线程)
2、thread apply $THREAD_ID bt (打印线程的堆栈信息,查看是在哪里hang住导致没有释放锁)