- 下载deadlock.py
https://github.com/facebook/folly/blob/main/folly/experimental/gdb/deadlock.py
-
用gdb附加到死锁的程序
gdb attach pid
-
加载deadlock.py
source -v /xxx/deadlock.py
-
调用脚本,输出死锁位置
deadlock
上述deadlock.py要求安装python3,对gcc好像也有要求,在CentOS7上试了不行,所以需要用手动的方式打印
-
用gdb附加到死锁的程序
gdb attach pid
-
查看死锁的线程
最后一帧显示__lll_lock_wait
-
查看代码,找出mutex变量的名字,如g_mutex
-
打印g_mutex
p g_mutex,会显示出来持有线程id:__owner = xxx
即发生死锁线程