mcpField
D
debugging-apex-logs

debugging-apex-logs

github.com/forcedotcom开发1.1k3.0k 次安装1 天前更新
代码仓库

关于 debugging-apex-logs

debugging-apex-logs 是面向 Salesforce 开发者的故障排查技能,通过调试日志调查异常、Governor 限制和性能信号,定位根因并给出修复与验证建议。

主要功能

  1. 01调试日志获取指导
  2. 02异常与堆栈跟踪分析
  3. 03Governor 限制诊断
  4. 04SOQL、DML、CPU 与堆内存调查
  5. 05基于日志证据提出修复与验证

适用场景

  1. 01查找事务失败的原因
  2. 02诊断 Governor 限制压力
  3. 03调查慢查询或堆内存占用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill debugging-apex-logs

安装后在 Claude Code 中输入/debugging-apex-logs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CREDITS.md
README.md
assets/
benchmarking-template.cls
cpu-heap-optimization.cls
dml-in-loop-fix.cls
null-pointer-fix.cls
soql-in-loop-fix.cls
references/
analysis-playbook.md
benchmarking-guide.md
cli-commands.md
common-issues.md
debug-log-reference.md
log-analysis-tools.md
scoring-rubric.md

详细介绍

debugging-apex-logs:Salesforce 调试日志分析与故障排查

当用户需要根据调试日志进行根因分析时使用此技能:诊断 governor limit、解读堆栈跟踪、调查慢查询、分析堆内存 / CPU 压力,或根据日志证据进行复现到修复的闭环。

此技能负责的任务

当工作涉及以下内容时,使用 debugging-apex-logs:

  • Salesforce 的 .log 文件
  • 堆栈跟踪和异常分析
  • governor limit
  • SOQL / DML / CPU / 堆内存故障排查
  • 从日志中提取的查询计划或性能证据

以下情况应委派给其他技能:


首先收集所需上下文

询问或推断:

  • org 别名
  • 失败的事务 / 用户流程 / 测试名称
  • 大致时间戳或事务时间范围
  • 已知的用户 / 记录 / 请求 ID
  • 目标是仅诊断,还是诊断并进行修复闭环

建议的工作流

1. 获取日志

使用 references/cli-commands.md 中的命令,为目标 org 列出、下载或流式传输日志。

2. 按以下顺序分析
  1. 入口点和事务类型
  2. 异常 / 致命错误
  3. governor limit
  4. 重复的 SOQL / DML 模式
  5. CPU / 堆内存热点
  6. callout 耗时和外部故障
3. 对严重程度进行分类
  • Critical — 运行时故障、硬性限制、数据损坏风险
  • Warning — 接近限制、非选择性查询、慢速路径
  • Info — 优化机会或代码整洁性问题
4. 建议最小且正确的修复

优先选择以下修复方案:

  • 针对根因
  • 可安全批量处理
  • 可测试
  • 易于通过重新运行验证

扩展工作流:references/analysis-playbook.md


高价值问题模式

问题主要信号默认修复方向
循环中的 SOQL重复调用路径中反复出现 SOQL_EXECUTE_BEGIN只查询一次,使用映射 / 分组集合
循环中的 DML反复出现 DML_BEGIN 模式收集行,然后一次性执行批量 DML
非选择性查询扫描行数过多 / 选择性差添加索引筛选条件,缩小范围
CPU 压力CPU 使用量接近同步限制降低算法复杂度、缓存,在适用时改为异步处理
堆内存压力堆内存使用量接近同步限制使用 SOQL for 循环流式处理,减少内存中的数据
空指针 / 致命错误EXCEPTION_THROWN / FATAL_ERROR防范空值假设,修复空查询处理

扩展示例:references/common-issues.md


输出格式

完成分析时,按以下顺序报告:

  1. 发生了什么故障
  2. 故障发生的位置(类 / 方法 / 行 / 事务阶段)
  3. 故障原因(根因,而不仅是症状)
  4. 严重程度
  5. 建议的修复方案
  6. 验证步骤

建议格式:

Issue: <summary>
Location: <class / line / transaction>
Root cause: <explanation>
Severity: Critical | Warning | Info
Fix: <specific action>
Verify: <test or rerun step>

规则 / 约束

规则原因
修复建议始终以日志证据为依据避免推测性诊断 — 根因必须能在日志中追溯
对每个发现的问题报告全部六个输出字段确保每个问题的发现都完整且可执行
将每项发现分类为 Critical、Warning 或 Info帮助用户确定应优先处理哪些问题
将代码生成委派给 generating-apex此技能负责诊断,不负责重写 Apex 代码
将测试执行委派给 running-apex-tests此技能不运行或修复测试类
未读取 LIMIT_USAGE 事件前,绝不假设限制尚有余量失败点中不可见的先前操作可能已消耗限制

注意事项

陷阱解决方案
日志在 2 MB 处被截断降低调试级别(例如,ApexCode: INFO、ApexProfiling: FINE),然后重新捕获
同一个问题既表现为 SOQL 问题,也表现为 CPU 问题优先修复循环中的 SOQL——它通常会进一步导致 CPU 飙升
设置跟踪标记后没有出现日志确认跟踪标记的 ExpirationDate 是未来时间,并且跟踪的是正确的用户
异步上下文会改变限制值异步 CPU 限制为 60,000 ms,同步为 10,000 ms——报告限制问题前,请先检查事务类型
堆栈跟踪指向框架代码行,而非用户代码沿调用堆栈向上检查,越过触发器处理程序,找到起始用户代码

跨技能集成

需求委派给原因
实现 Apex 修复generating-apex生成 / 审查代码变更
通过测试复现running-apex-tests测试执行与覆盖率循环
部署修复deploying-metadata部署编排
创建调试数据handling-sf-data有针对性地创建种子数据 / 复现数据

参考文件索引

文件何时阅读
references/analysis-playbook.md从这里开始——适用于任何调试会话的扩展分步工作流
references/common-issues.md快速查找循环中的 SOQL、循环中的 DML、CPU / 堆压力以及空指针模式
references/cli-commands.md用于检索、流式传输和管理调试日志的 SF CLI 命令
references/debug-log-reference.md完整的事件类型目录、日志级别和治理限制参考值
references/log-analysis-tools.md工具指南:Apex Log Analyzer、Developer Console、CLI grep 模式
references/benchmarking-guide.md性能基准测试技术、基准数据和反模式
references/scoring-rubric.md用于评估分析质量的 100 分评分标准
assets/benchmarking-template.cls可复制粘贴的 Anonymous Apex 模板,用于运行性能基准测试
assets/cpu-heap-optimization.cls用于减少 CPU 时间和堆分配的 Apex 模式
assets/dml-in-loop-fix.cls用于解决循环中的 DML 违规的修复前后示例
assets/soql-in-loop-fix.cls用于解决循环中的 SOQL 违规的修复前后示例
assets/null-pointer-fix.cls用于防范空指针异常的模式

评分指南

分数含义
90+专业级分析,修复建议完善
80–89分析良好,仅有少量遗漏
70–79可以接受,但可能遗漏次要问题
60–69仅提供部分诊断
< 60分析不完整

评论

支持 Markdown