gdb 查看死锁
来源:互联网 发布:java实现md5解密算法 编辑:程序博客网 时间:2024/05/16 07:54
gdb 查看死锁 2010-12-16 10:17:22
http://blog.chinaunix.net/uid-23766031-id-2386460.html
分类: LINUX
死锁:一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被
其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。
gdb调试死锁的方法:
gdb
attach pid
thread apply all bt
找到_lll_lock_wait 锁等待的地方。
然后查找该锁被哪个线程锁住了。
例如:
查看哪个线程拥有互斥体
(gdb) print AccountA_mutex
1 = {__m_reserved = 2, __m_count = 0, __m_owner = 0x2527,
__m_kind = 0, __m_lock
= {__status = 1, __spinlock = 0}}
(gdb) print 0x25272 = 9511
(gdb) print AccountB_mutex
3 = {__m_reserved = 2, __m_count = 0, __m_owner = 0x2529,
__m_kind = 0, __m_lock = {__status = 1, __spinlock = 0}}
(gdb) print 0x25294 = 9513
(gdb)
从上面的命令中,我们可以看出AccontA_mutex是被线程 5(LWP 9511)加锁(拥有)的,而AccontB_mutex是被线程 3(LWP 9513)加锁(拥有)的。
找出死锁的地方,对应检查代码就可以了。死锁大多是对锁的使用发生交叉所致的,解决死锁的方法常有:
有序资源分配法
银行算法
- gdb 查看死锁
- gdb 查看死锁
- 查看死锁
- 查看死锁
- 查看死锁
- 查看死锁
- 查看死锁
- 查看死锁:
- gdb调试死锁线程
- GDB:调试死锁
- gdb 死锁线程
- gdb寻找死锁
- SQL查看死锁+清理死锁
- 使用gdb调试多线程死锁
- 嵌入式 GDB调试死锁示例
- 使用gdb调试死锁线程
- 关于gdb调试线程死锁
- GDB调试多线程及死锁
- 继承中的向上类型转换
- bzoj1571 滑雪课Ski
- Matplotlib学习笔记1-2D绘图
- 关于no rule to make target kernel/bounds.c错误的一种解决办法
- ORA-02051问题
- gdb 查看死锁
- 机器学习中为什么需要对数据进行归一化?
- HDOJ1297
- 一点感想
- httpclient 访问https
- 新的开始
- 微信公众号第三方平台开发PYTHON教程 PART 6
- 沉浸式标题栏样式
- 2015年中国1%人口抽样调查主要数据公报(全文)