Linux下用gdb定位死锁方法

       linux下多线程可能会遇到死锁问题,死锁问题一般是两个线程争抢某种资源导致的,比如线程1已经拥有A锁,它同时还想获取B锁,而此时线程2已经拥有B锁,同时去获取A锁,这样线程1和2就因为无法获得各自想要获取的锁而阻塞。

       可以用gdb调试来查看死锁的线程及位置。

       命令如下:

       gdb

       attach pid

       thread applay all bt

       然后查看所有线程的栈信息,找出其中符合死锁条件的两个线程,找出死锁具体位置。

       有个问题,一般为了减小生成的目标文件的大小,都会使用strip命令来去除目标文件的一些符号表,调试符号表信息等,此时就看不到栈的具体信息。如果此时死锁环境还存在,可以将一个no strip的版本放到环境下,生成一个nm文件来查看线程阻塞位置。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值