You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt Creator多次启动clangd进程且进程无法正常结束问题咨询

问题现象
  • Ubuntu系统下保持Qt Creator持续开启过夜后,通过htop观测到大量未正常退出的clangd残留进程
  • 涉及运行环境:
    • Qt Creator 7.0.0:基于GCC 10.3.1 20210422 (Red Hat 10.3.1-1) 64位版本构建,构建时间为2022年3月22日02:18:16,版本修订号为638b93591b
    • clangd 14.0.0:源码取自Qt适配的llvm-project分支,对应提交哈希为a8ed6c28965138fa1f2449e4ce3e9f391380d17b,适配Linux x86_64-unknown-linux-gnu平台
排查步骤
  • 确认残留clangd的父进程归属
    执行ps -ef | grep clangd查看残留进程的PPID字段:如果PPID为1(即被init进程接管),说明Qt Creator的clangd代码模型插件未正确回收已退出的子进程,属于典型的进程泄漏;如果PPID仍对应运行中的Qt Creator进程ID,说明插件内部进程生命周期管理逻辑异常,未向拉起的clangd实例发送退出信号。
  • 确认clangd进程的阻塞状态
    在htop中选中对应clangd进程按S键查看其当前系统调用状态:如果大量进程标记为Z(僵尸状态),说明Qt Creator未注册处理子进程退出的信号回调;如果进程标记为D(不可中断睡眠状态),通常是clangd后台索引大文件、网络挂载目录文件时触发了内核或文件系统层面的阻塞,无法响应退出请求。
  • 校验clangd插件的实例创建/销毁日志
    终端执行QT_LOGGING_RULES="qtc.clang*=true" qtcreator启动程序,开启clangd相关模块的调试日志,复现长时运行场景后,统计日志中clangd实例启动、销毁记录的数量差,确认是否存在打开多项目、切换编译配置时重复创建clangd实例但未触发销毁逻辑的问题。
解决建议
  • 临时清理方案:执行pkill -f clangd可一键清理所有残留clangd进程,操作不会损坏Qt Creator项目配置,后续触发代码补全、索引操作时会自动拉起新的clangd实例。
  • 配置规避方案:
    • 打开Qt Creator设置,进入「工具-选项-C++-Clangd」配置页,将单项目clangd实例数上限调整为1,关闭「后台自动索引非活跃项目」选项,减少无意义的clangd实例拉起。
    • 若对clangd的实时诊断、补全功能无强需求,可在同配置页取消勾选「使用clangd」选项,回退到Qt内置代码模型,彻底规避该进程泄漏问题。
  • 永久修复方案:
    该问题是Qt Creator 7.0.0正式版自带clangd插件的已知缺陷,后续7.0.x补丁版本、Qt Creator 8及以上正式版本已经修复了多实例clangd未正常回收的逻辑问题;同时Qt适配的clangd 15+版本也修复了长时运行下进程挂起无法响应退出信号的问题,将两个组件升级到对应修复版本即可彻底解决。

内容的提问来源于stack exchange,提问作者Andrey Korostin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 21:10:09