当前位置: 首页 > news >正文

查看进程的线程状态、线程数,排查线程死锁问题

通过查看进程的线程状态、线程数,排查线程死锁问题!!!

Claude Code排查这个问题用了一整天!!!,中间它甚至怀疑过设计问题、使用开源框架版本问题、配置问题 /(ㄒoㄒ)/~~## GDB 调试方法### 1. 检查进程线程数量


```bash
ps -eLf | grep 你的进程名称 | wc -l
```如果线程数量正常但只有部分线程输出日志,说明有线程阻塞。### 2. 查看所有线程列表```bash
gdb -batch -ex "info threads" -p <pid>
```输出示例:
```
[New LWP 649200]
[New LWP 649201]
...
This GDB supports auto-downloading debuginfo...
[Thread debugging using libthread_db enabled]
Using host libthread_db library...
```### 3. 查看所有线程堆栈```bash
gdb -batch -ex "thread apply all bt" -p <pid>
```关键输出分析:**正常线程(在 sleep):**
```
Thread 17 (Thread 0x798a5ebbb6c0 (LWP 649205) "你的进程名称"):
#2  0x0000611409b9922b in std::__1::this_thread::sleep_for(...)
#3  ........
#4 .......
```**死锁线程(在 futex_wait):** ``` Thread 16 (Thread 0x798a5d6a56c0 (LWP 649206) "你的进程名称"): #0 futex_wait (private=0, expected=2, futex_word=0x6114215a98a8) #1 __GI___lll_lock_wait (futex=futex@entry=0x6114215a98a8) #2 0x0000798a636a0101 in lll_mutex_lock_optimized (mutex=0x6114215a98a8) #3 ___pthread_mutex_lock (mutex=0x6114215a98a8) #4 0x0000611409b8c706 in std::__1::mutex::lock() () ```### 4. 分析死锁模式从堆栈可以看出死锁链:1. `DataProcessor::run()` 调用 `TimerTask::execute_expired_tasks()` 2. `execute_expired_tasks()` 持有锁,执行回调 `BlockManager::on_block_timeout()` 3. 回调调用 `TimerTask::remove_task()` 4. `remove_task()` 尝试获取同一个锁 → **死锁**### 5. 统计阻塞线程数量```bash gdb -batch -ex "thread apply all bt" -p <pid> 2>/dev/null | grep -c "futex_wait" ```如果多个线程都在 `futex_wait`,说明存在锁竞争问题。### 6. 检查锁地址不同线程等待不同锁地址表示各自独立的锁问题: ```bash gdb -batch -ex "thread apply all bt" -p <pid> 2>/dev/null | grep "futex_word=" ```### 调试技巧总结| 命令 | 用途 | |------|------| | `info threads` | 查看线程列表 | | `thread apply all bt` | 所有线程堆栈 | | `thread <n>` | 切换到指定线程 | | `bt` | 当前线程堆栈 | | `frame <n>` | 切换到指定栈帧 | | `p *mutex` | 查看锁状态 |

 

http://www.jsqmd.com/news/944541/

相关文章:

  • HDRI到立方体贴图转换:专业3D渲染环境光照解决方案
  • AI 推广公司哪家好?优推宝摘金 AI 凭 GEO 技术给出答案 - 新闻快传
  • OpenThaiGPT-MedChatModelv11实战教程:构建泰语医疗聊天机器人的7个实用案例
  • Unity手游热更新调试实战:VSCode + EmmyLua 连接真机Player全流程
  • 一键生成全篇论文!精选5款AI写论文软件指南,从文献检索到论文初稿自动化生成!
  • Mermaid Live Editor:让代码思维绘制专业图表,5步开启高效可视化之旅
  • 2026年便携式浊度计十大品牌权威排行:精准选型、稳定运行与全场景适配指南 - 水质仪表品牌排行榜
  • cann/cannbot-skills 大型PR检视场景
  • 2026年江苏实验室家具设备厂家推荐:PP实验台、通风柜、半导体家具、高氯酸/喷淋/自净化通风柜实力品牌盘点 - 品牌企业推荐师(官方)
  • 2026亲测:专业降AIGC工具TOP1推荐 - 降AI小能手
  • 【AI Daily】AI日报 2026-06-02
  • 别再只设频率了!深入理解CST时域求解器的‘激励信号’与仿真终止条件
  • 降AI率天花板!AI率92%暴降至5%!实测10款降AIGC平台!薅羊毛技巧!
  • 当“虚构的解决方案”成为试金石:搜极星如何将市场幻想变为可验证的现实?
  • jsdiff:如何用JavaScript实现专业级文本差异比对?[特殊字符]
  • Three.js 水面效果进阶:从静态湖泊到动态海面,性能优化与常见坑点排查
  • 通达信缠论插件:3分钟实现自动笔段中枢分析的终极解决方案
  • CST时域求解器收敛性实战:手把手教你设置Maximum Solver Duration和Accuracy,告别仿真警告
  • 北京朝阳区黄金回收去哪里好?按你的黄金类型和需求来,这篇一次说清楚 - 新闻快传
  • 如何让老旧电视焕发新生:MyTV-Android电视直播解决方案
  • 龙岩新罗区承宥工程担保:福建全场景合规保函服务提供商 - 奔跑123
  • 好用还专业!盘点2026年口碑爆棚的AI论文写作工具
  • AI架构的转变:从向量到图谱
  • 拟人化≠信任:Nature 最新研究揭示 AI 客服的“双重信任“密码
  • Hermes WebUI工作区路径信任级别:安全访问控制机制详解
  • SeedVR2:让AI视频从模糊到高清的魔法修复工具
  • 终极指南:3步用OpenCore Legacy Patcher突破旧Mac系统限制
  • 5分钟掌握:高效歌词下载工具使用全指南
  • 破解传统煲仔饭运营痛点:TSS方法论如何重构商用煲仔饭机效率优势? - 资讯快报
  • 2026 盐城卫生间漏水维修免踩坑指南,靠谱的防水补漏公司权威推荐:卫生间、阳台、屋顶、地下室、飘窗、外墙漏水,专业防水公司TOP5口碑榜+全维度测评(2026年6月最新深度行业资讯) - 防水资讯