故障排查 预计阅读 12 分钟

Clash 客户端打开就闪退?启动崩溃的六类原因与逐项处理

按配置文件语法错误、端口占用、内核文件缺失、权限不足、系统组件缺失与缓存损坏六类原因,给出各平台上确认问题与恢复启动的具体步骤。

先区分窗口退出与内核退出

Clash 打开就闪退,先别急着重装。桌面客户端通常由图形界面、代理内核和后台服务几部分组成。窗口消失,可能只是收到了“最小化到托盘”的指令;窗口还能打开但连接不可用,也可能是内核启动失败。这两种情况需要查看的日志并不相同。

  1. 先看 Windows 通知区域或 macOS 菜单栏是否还有图标。通过图标打开主窗口,能正常显示就不属于启动崩溃。
  2. 在 Windows「任务管理器」→「详细信息」中检查客户端及内核进程;macOS 用「活动监视器」搜索应用名。不要仅凭窗口是否存在判断进程状态。
  3. 记录点击启动的准确时间,保留这一分钟内的应用日志和系统崩溃记录。优先查第一条错误,最后的“进程退出”通常只是结果。

下面按六类原因逐项检查。表中的报错是定位线索,不表示所有客户端都会显示完全相同的文字。

线索优先检查
yaml: line …配置语法及客户端覆写内容
address already in use代理端口、控制端口或 DNS 监听冲突
no such file / exec format error内核路径与处理器架构
permission denied数据目录、执行权限与 TUN 服务
缺少 DLL 或动态库对应客户端要求的系统组件
更新后界面恢复失败窗口状态、前端缓存或配置数据库

一、配置文件语法错误

刚更新订阅、编辑覆写文件或切换配置后才出问题,先查配置。YAML 的缩进必须用空格,同一层级应对齐;冒号后漏空格、列表少了短横线,都可能导致解析失败。另一个常见原因是把面向 mihomo 的配置交给旧版 Clash 内核:即使 YAML 语法正确,字段和规则能力也未必兼容。

先找到实际加载的文件

客户端可能将订阅、覆写和界面设置合并成运行配置。因此,订阅原文件能解析,不代表最终配置能启动。通过日志中的配置路径确认目标;界面还能打开时,可在设置或配置管理入口查找数据目录、运行配置或日志入口。不同客户端的按钮名称不同,不要直接覆盖安装目录里碰巧叫 config.yaml 的文件。

以 Windows 上的 mihomo 为例,在实际内核所在目录打开 PowerShell。假定配置保存在 C:\ClashData\config.yaml,数据文件也位于该目录,可执行:

.\mihomo.exe -t -d "C:\ClashData" -f "C:\ClashData\config.yaml"

-t 用于测试配置后退出;-f 指定配置文件;-d 指定工作目录。请把路径换成自己的真实位置,并使用客户端配套内核。不要把这条命令当作所有图形客户端的启动参数。地理数据库或规则提供器文件缺失,也可能让测试失败,需要按错误内容继续判断。

  • 日志指向第 20 行时,同时查看第 19 行;上一行未闭合的引号也会让下一行报错。
  • 遇到“策略不存在”,逐字检查规则目标与策略组名称,包括空格和大小写。
  • 遇到不支持的规则类型,确认当前运行的是哪个内核,不要只看客户端名称。

恢复时先停用最近添加的覆写,或切回最后一次可用配置。字段用途不确定时,可对照配置字段文档,不要一次删除整段 DNS 或规则配置。

二、端口占用导致内核退出

端口冲突通常发生在同时启动两个代理客户端、旧内核没有退出,或后台服务与手动运行的内核重复启动时。7890 常用作混合代理端口,9090 常见于控制接口,但这些都不是所有客户端固定使用的端口。排查时要以日志里实际出现的地址和端口为准。

查询占用者,不要直接结束陌生进程

Windows 可在终端执行以下命令,末列是进程 PID:

netstat -ano | findstr :7890
netstat -ano | findstr :9090

重点看本地地址对应端口且状态为 LISTENING 的记录,再到「任务管理器」→「详细信息」按 PID 确认程序。macOS 可使用:

lsof -nP -iTCP:7890 -sTCP:LISTEN
lsof -nP -iTCP:9090 -sTCP:LISTEN

Linux 可用 ss -lntp 查看 TCP 监听;查看其他用户的进程信息可能需要相应权限。如果报错涉及 DNS 的 UDP 监听,还要检查 UDP,而不是只查 TCP。

  1. 确认占用者是旧客户端后,通过它的退出菜单正常停止,并检查后台服务是否仍在运行。
  2. 确实需要同时运行两套配置时,为代理和控制接口分别分配不同端口,例如将其中一套的混合端口改为 7893。
  3. 修改后同步调整系统代理和浏览器手动代理设置。内核已监听新端口,而应用仍连接旧端口,会表现为“启动成功但不能联网”。

若日志显示的是访问套接字被拒绝,而没有找到监听者,还应检查 Windows 保留端口范围和安全策略。不要把每一种绑定失败都归结为程序占用。

三、内核文件缺失或架构不符

图形界面能出现,随后提示内核启动失败,常见原因是压缩包未完整解压、只复制了主程序、应用更新后仍引用旧路径,或安全软件把内核移入隔离区。有些客户端会独立下载内核,下载中断也会留下界面正常、内核缺失的状态。

  • no such file or directory:先核对日志中的完整路径及文件是否存在;Linux 上也可能是所需动态加载器不存在。
  • exec format error:优先核对架构和文件格式,例如把 ARM64 Linux 内核用于 x86_64 Linux。
  • “找不到指定的文件”:检查的是内核或其依赖文件,不一定是主程序本身。

从原项目发布渠道重新获取适配系统与架构的完整安装包,再按客户端提供的修复或重装流程恢复。macOS 可通过「苹果菜单」→「关于本机」查看芯片类型;Windows 在「设置」→「系统」→「系统信息」查看系统类型;Linux 用 uname -m 区分 x86_64 与 aarch64。

若系统有隔离记录,先核实文件来源和触发原因,再按系统提示处理。不要关闭整套安全防护,也不要从不明网盘单独找一个同名可执行文件替换。客户端与内核存在接口配合关系,任意混装可能让启动错误变得更隐蔽。

四、权限不足与 TUN 服务异常

普通系统代理通常不需要客户端一直以管理员身份运行;创建 TUN 设备、修改路由或安装后台服务则可能需要额外权限。若关闭 TUN 后能正常启动,应优先检查服务状态、虚拟网卡与权限,而不是反复改订阅。

按平台缩小权限范围

  • Windows:先退出所有重复实例,通过客户端提供的服务管理入口检查服务是否安装、能否启动。只有安装或修复服务确实要求提权时,再确认管理员授权。也要检查应用数据目录是否被设为只读。
  • macOS:将应用放入「应用程序」目录后再启动。遇到辅助工具授权或系统安全提示,先核实开发者与来源,再按系统界面允许相关操作;不要用批量移除安全属性的命令掩盖错误。
  • Linux:从终端启动以查看标准错误。自行下载的可信内核若缺少执行位,可对该文件设置执行权限;TUN 则另查 /dev/net/tun 是否存在,以及服务是否拥有所需权限。
  • Android:首次启用 VPN 模式需要确认系统连接请求。同一用户或资料空间内通常只能有一个活动 VPN,先停止其他 VPN 应用,再尝试连接。

还要区分“不能写配置”与“不能创建网卡”。前者通常能在日志里看到配置、数据库或日志目录的写入失败;后者多发生在 TUN 初始化阶段。长期以管理员身份运行整个界面,并不能替代修复错误的目录权限。

五、系统组件或运行环境缺失

如果连应用日志都来不及生成,启动器直接提示缺少 DLL、WebView 或共享库,就应该先查界面运行环境。不同 Clash 客户端的界面技术不同:使用 Electron、Tauri 或 Flutter 的应用,依赖项并不相同,不能照着另一个客户端的教程把运行库全部装一遍。

  1. Windows:按提示记录完整组件名。明确缺少 WebView2 时,从微软官方渠道安装对应运行时;明确缺少 Microsoft Visual C++ 运行库时,依项目要求选择架构。不要单独下载 DLL 塞进系统目录。
  2. macOS:在「控制台」→「崩溃报告」中查找对应进程,确认是否为系统版本不受支持或架构加载失败。最低系统要求以该客户端当前版本的发布说明为准。
  3. Linux:从终端启动查看缺少的共享库;对来源可信的程序,可用 ldd 检查动态依赖。优先使用适配发行版的软件包,并通过系统包管理器补齐依赖,不要手动替换系统核心库。

Windows 还可按 Win + R,输入 perfmon /rel 打开可靠性监视器,查看同一时间的应用程序失败记录。故障模块名称和异常代码值得保留,但只看到一个系统 DLL 名称,并不能直接证明该 DLL 已损坏。

六、缓存或应用状态损坏

升级中断、突然断电或跨版本迁移,可能损坏窗口状态、界面缓存或本地数据库。这类问题常表现为窗口白屏、启动后立刻退出,或每次恢复上次页面时崩溃。清理缓存可以作为后面的步骤,但不应该成为第一步。

桌面端:备份后重建,不整目录删除

  1. 退出界面、内核及后台服务,确认没有进程继续写入数据。
  2. 按项目文档或日志找到实际数据目录,完整复制一份备份。不同客户端即使名字相近,也未必共用路径。
  3. 优先使用客户端提供的清理缓存或重置界面功能。无法进入界面时,仅将文档明确标注的缓存、窗口状态文件改名保留。
  4. 若必须重建整个应用数据目录,先确认订阅和自定义规则已有备份,再把目录改名为备份目录,让程序创建新数据。
  5. 空白状态能启动后,逐个恢复订阅和覆写;不要立刻把旧目录整体复制回去。

Windows 应用数据可能位于 %APPDATA% 或 %LOCALAPPDATA%,macOS 常见于 ~/Library/Application Support/,Linux 常见于 ~/.config/,但这些只是上级位置,不是可以直接删除的目标目录。

Android:清缓存与清数据分开

在 Android「设置」→「应用」→ 对应客户端 →「存储和缓存」中,先尝试「清除缓存」。厂商系统的名称可能略有差异。「清除存储空间」或「清除数据」会重置应用资料,订阅、配置及授权状态可能一并丢失,必须放在备份之后。若安装包架构不匹配或系统版本不满足要求,清缓存不会解决根因。

恢复后按顺序验证

能打开窗口只是第一步。建议按“界面稳定、内核监听、代理连接、TUN”的顺序恢复,每完成一步再继续,避免把多个变量同时打开。

  • 连续打开和退出客户端两次,确认没有新的崩溃记录。
  • 先使用已确认可用的配置,暂时关闭 TUN,检查日志中是否仍有加载失败或端口绑定错误。
  • 启用系统代理,确认其端口与当前内核监听一致,再测试应用联网。
  • 最后恢复 TUN、覆写规则和自动更新。问题在哪一步重现,就回到对应模块排查。

如果仍然闪退,提交问题时附上系统版本、CPU 架构、客户端版本、内核版本、安装包类型、首次发生时间与脱敏日志,并说明是更新后、导入配置后还是打开 TUN 后出现。比起一句“打不开”,这些信息更容易让维护者复现故障。需要重新安装时,先在下载页确认平台与架构;配置恢复过程可参照入门指南。

下载客户端