内容提要
JetBrains Marketplace 为插件作者提供 UI 冻结报告,需先在 plugin.xml 注册错误处理器启用。报告按类型分组,包含线程转储和 JFR 快照。排查时先检查 EDT 是否阻塞,可下载完整转储用分析器或 analyze-freeze 技能定位,再修复并验证。
延伸解读
启用报告:前置条件与常见疏漏
要接收 UI 冻结报告,插件必须先在 plugin.xml 中注册 JetBrainsMarketplaceErrorReportSubmitter 错误处理器。该处理器自 IntelliJ Platform 2023.3 起可用,无需自定义实现。若插件支持 Split Mode,需在前端或共享模块注册,仅后端注册无效。若 Freezes 标签页为空,应首先检查处理器注册,同时注意报告还依赖用户设置及 IDE 是否识别插件涉及冻结。
报告内容:从线程转储到性能快照
每个冻结报告包含自动生成的线程转储摘录,显示涉及冻结的线程,适合作为初步排查或 AI 代理的输入。完整转储以 dump-N.txt 形式每五秒捕获一次,可能还包括 snapshot.jfr(CPU 快照)、report.txt(线程栈分析)和 open-telemetry-metrics.csv(性能指标)。报告按错误类型分组,相似报告归为一堆,并展示代表性报告,便于识别重复模式。
排查起点:聚焦 EDT 与后台线程
打开报告后,先在摘录中找到事件调度线程(EDT),通常名为 AWT-EventQueue-0 或包含 EDT。检查 EDT 是忙于耗时操作还是等待其他任务完成。若需深入,可下载完整转储,使用 IDE 的 Analyze Stack Trace or Thread Dump 功能分析。原因也可能在后台线程:长时间不可取消的读操作可能持有写操作所需的锁,导致 UI 等待。可参考相关文章了解此模式。
分析工具与验证:利用技能与证据
analyze-freeze 技能可帮助 AI 代理调查线程转储,包含协程行为、Dispatchers.Default 饥饿等常见模式及修复建议。使用时保存 SKILL.md,附上完整转储、report.txt 和协程转储,并提示代理从 EDT 开始追踪。注意遵循项目诊断数据处理流程,并核对代理引用的帧与完整转储及代码。修复后,重复操作并检查新证据以验证。若版本信息缺失,应标记为未知,避免误判。
Q&A
JetBrains Marketplace 的 UI 冻结报告在哪里查看?
打开插件的管理页面,选择 Freezes 标签页即可查看。
如何为我的插件启用 Marketplace 的 UI 冻结报告?
在 plugin.xml 中注册错误处理器:<errorHandler implementation="com.intellij.diagnostic.JetBrainsMarketplaceErrorReportSubmitter"/>。该处理器自 IntelliJ Platform 2023.3 起可用,无需自定义实现。对于支持 Split Mode 的插件,需在前端或共享模块中注册,仅后端注册无效。
UI 冻结报告里包含哪些内容?
报告按错误类型分组,每个堆显示一个代表性报告。包含自动生成的线程转储摘录、每5秒捕获的完整线程转储文件(dump-N.txt),可能还包括 snapshot.jfr(CPU快照)、report.txt(线程栈分析)和 open-telemetry-metrics.csv(性能指标)。
拿到冻结报告后,第一步应该检查什么?
打开报告,在摘录中找到事件调度线程(EDT),通常名为 AWT-EventQueue-0 或包含 EDT。首先检查 EDT 是在忙于执行耗时操作,还是在等待其他任务完成。
如何用 analyze-freeze 技能分析线程转储?
将 SKILL.md 保存到调查文件夹,添加下载的完整线程转储以及 report.txt 和协程转储文本(如有),然后让 AI 代理读取技能并分析这些文件。提示词示例:读取 SKILL.md 并应用 analyze-freeze 指令分析附加的 IntelliJ Platform 线程转储,从 EDT 开始追踪阻塞原因,识别相关代码帧、线程或协程、涉及的服务和可能的插件,引用转储证据,区分事实与假设,建议最小修复及验证方法,暂不编辑代码。
如果 Freezes 标签页是空的,可能是什么原因?
可能原因包括:未正确注册错误处理器;用户设置未允许发送报告;IDE 未识别出你的插件涉及其中。请检查处理器注册情况。
修复 UI 冻结问题时,如何验证更改有效?
重复触发问题的操作,并检查新的诊断证据。如果仍然卡住,可以在 JetBrains Platform Forum 提问,提供 IDE 构建版本、插件版本(如已知)、相关转储证据以及已检查的内容。