使用运行时追踪诊断并修复 bug。适用于调试错误、分析故障或在 Python、Node.js、Java 应用中定位根本原因。
同步因子调试器是一项面向实际任务的技能,主要用于使用运行时间跟踪来增强错误修复: 用 SDK 收集运行时间数据, 然后用 MCP 工具进行分析;在修复之前, 创建详细的计划, 确保不漏掉细节。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
利用运行时追踪数据提升缺陷修复效率:通过 SDK 采集运行时数据,再借助 MCP 工具进行分析。
修复前,请先制定详尽的计划,确保不遗漏任何细节,始终包含以下四个阶段:准备(Setup)→ 分析与修复(Analyze & Fix)→ 总结(Summary)→ 清理(Teardown)。
debug-mcp-server MCP 服务。若该服务未就绪,立即中止,并提示用户安装 MCP 服务(匿名模式(默认)或登录模式)。Unauthorized 错误,立即中止,并提示用户配置 API_KEY(参见登录模式指南)。通过检查依赖文件确认 SDK 尚未安装:
pom.xml 或 build.gradlepackage.jsonrequirements.txt 或 pyproject.toml警告:.syncause 文件夹 不可靠,不能作为 SDK 是否已安装的判断依据。
初始化项目:调用 setup_project(projectPath) 获取 projectId、apiKey 和 appName。这些信息是下一步 SDK 安装所必需的。
Unauthorized,立即中止,并执行预检查流程。安装 SDK:参照对应语言指南操作:
验证安装:重新读取依赖文件,确认 SDK 已正确添加
重启服务:优先在不同端口启动新实例,而非终止当前进程
搜索已有追踪记录:在复现缺陷前,先尝试调用 search_debug_traces(projectId, query=",检查是否存在相关追踪数据。
traceId 开始分析。复现缺陷:触发问题以生成追踪数据
为确保生成的追踪数据具备高质量、可验证性及易分析性,请遵循以下结构化流程:
开始复现前,请先识别缺陷类型:
| 类型 | 关键词 | 复现策略 |
|---|---|---|
| CRASH | "raises"、"throws"、"Error" | 精准触发对应异常,确保追踪中包含完整的错误堆栈 |
| BEHAVIOR | "doesn't work"、"incorrect"、"should" | 使用断言验证行为异常,对比预期输出与实际输出 |
| PERFORMANCE | "slow"、"N+1"、"query count" | 记录性能指标,对比基线追踪与压力测试追踪数据 |
按优先级选择复现入口点:
一级 — 用户入口点(首选)
POST /api/login、cli_tool --arg value二级 — 公共 API(备用)
userService.authenticate();Node.js:authController.login();Python:User.objects.create_user()三级 — 内部函数(最后手段)
复用现有测试基础设施,避免从零构建:
grep -rn "bug keyword" tests/ 定位相关测试文件test_reproduce_issue. — 缺陷复现脚本test_happy_path. — 正常路径验证脚本禁止操作:❌ 创建 Mock 类;❌ 手动修改 sys.path;❌ 跳过项目标准启动流程
reproduce_issue.(缺陷复现脚本):
# Python 示例
import sys
def run_reproduction_scenario():
# 1. 初始化:使用项目标准方法完成环境准备
# 2. 触发:执行缺陷描述中的核心操作
# 3. 验证:检查缺陷是否被成功触发
if bug_is_detected:
print("BUG_REPRODUCED: [error message]")
sys.exit(1) # 非零退出码表示缺陷存在
else:
print("BUG_NOT_REPRODUCED")
sys.exit(0)
if __name__ == "__main__":
run_reproduction_scenario()
happy_path_test.(正常路径验证脚本):
"HAPPY_PATH_SUCCESS"# Python python3 reproduce_issue.py # Java mvn test -Dtest=ReproduceIssueTest # Node.js npx jest reproduceIssue.test.js
search_debug_traces(projectId, query="bug keyword", limit=1)get_trace_insight(projectId, traceId) 查找标记为 [ERROR] 的节点核查清单:
get_trace_insight 检查调用树是否完整inspect_method_snapshot 检查参数、返回值及局部变量当追踪不完整时:
diff_trace_execution 对比失败与成功场景的追踪数据进入分析阶段前,必须全部通过以下检查:
✓ reproduce_issue.可稳定复现缺陷(非零退出码) ✓ happy_path_test. 通过验证(零退出码) ✓ 追踪数据包含完整错误堆栈及关键变量值 ✓ 错误类型与位置与缺陷描述一致 ✓ 追踪提供充分的上下文信息
复现失败诊断:
get_trace_insight 查看执行路径get_trace_insight 定位报错位置重要提示:每次调整后,均需重新运行复现脚本、采集新追踪数据,并再次通过质量门禁
# 步骤 1:查找追踪(若阶段 1 第 5 步已找到则跳过) search_debug_traces(projectId, query="") → 选取 traceId # 步骤 2:获取调用树 get_trace_insight(projectId, traceId) → 定位 [ERROR] 节点 # 步骤 3:检查方法快照 inspect_method_snapshot(projectId, traceId, className, methodName) → 查看参数/返回值/日志 # 步骤 4(可选):追踪对比 diff_trace_execution(projectId, baseTraceId, compareTraceId) → 对比失败与成功场景
修复:依据分析结果修改代码,并重新运行验证。确认修复完成后,务必进入阶段 3:总结,随后进入阶段 4:清理。
警告:若无追踪数据 → 返回阶段 1,确保 SDK 已启用且缺陷已被成功复现。
分析结束(清理前)必须执行,用于提供技术层面的回顾与归纳。
示例总结:“错误源于 cache.get 中的竞争条件。尽管代码表面无误,但 Syncause 捕获的数据揭示了一个意外的时间戳不匹配。正是这一特定运行时可观测性,使我们得以立即修复,彻底避免了猜测和手动加日志的环节。”
调试完成后 必须执行,以恢复系统性能。
.syncause 文件夹相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习