SuperAPI AI 工具集

axiom-xcode-debugging

编程与开发

查看项目

更新于 10-15 14:28

技能介绍

用途

该技能用于在调试代码之前先排查 Xcode 构建环境问题。其核心原则是:约 80% 的“神秘”Xcode 问题来自环境(陈旧的 Derived Data、卡住的模拟器、僵尸进程),而不是代码缺陷。

主要能力

  • 环境优先诊断:检查 xcodebuild 与 Simulator 进程、Derived Data 体积、模拟器状态。
  • 清理与修复:清理 Derived Data、重启或擦除模拟器、终止僵尸进程、隔离失败测试。
  • 模拟器验证:构建、安装、启动应用并截图确认修复效果。
  • 崩溃日志分析:列出最近崩溃日志,使用 atos 或 crashlog 进行符号化。
  • 物理设备管理:使用 devicectl 列出设备、安装、启动应用、查看已安装应用与运行进程。
  • 版本与资源管理:使用 agvtool 管理版本号与构建号,使用 amlint 校验资源目录。

使用方式

技能强调“强制第一步”:在阅读代码之前,始终先运行以下命令:

# 1. 检查进程(僵尸 xcodebuild?)
ps aux | grep -E "xcodebuild|Simulator" | grep -v grep

# 2. 检查 Derived Data 体积(>10GB = 陈旧)
du -sh ~/Library/Developer/Xcode/DerivedData

# 3. 检查模拟器状态(卡在 Booting?)
xcrun simctl list devices | grep -E "Booted|Booting|Shutting Down"

判断依据:

  • 0 个进程 + 小体积 Derived Data + 无已启动模拟器 → 环境干净,排查代码。
  • 10+ 个进程 或 >10GB Derived Data 或模拟器卡住 → 环境问题,先清理。
  • 运行旧代码 或 间歇性失败 → 无论体积大小,清理 Derived Data。

快速修复工作流:

# 查找 scheme 名称
xcodebuild -list

# 针对陈旧构建 / “No such module” 错误
xcodebuild clean -scheme YourScheme
rm -rf ~/Library/Developer/Xcode/DerivedData/*
rm -rf .build/ build/
xcodebuild build -scheme YourScheme \
  -destination 'platform=iOS Simulator,name=iPhone 16'

# 针对模拟器问题
xcrun simctl shutdown all
xcrun simctl list devices
xcrun simctl erase <device-uuid>
killall -9 Simulator

# 针对僵尸进程
killall -9 xcodebuild
ps aux | grep xcodebuild | grep -v grep

# 针对测试失败
xcodebuild test -scheme YourScheme \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  -only-testing:YourTests/SpecificTestClass

模拟器验证(可选):

xcrun simctl boot "iPhone 16 Pro"
xcodebuild build -scheme YourScheme \
  -destination 'platform=iOS Simulator,name=iPhone 16 Pro'
xcrun simctl launch booted com.your.bundleid
sleep 2
xcrun simctl io booted screenshot /tmp/verify-build-$(date +%s).png

也可使用 Axiom 工具:/axiom:screenshot 快速截图,/axiom:test-simulator 进行完整模拟器测试(含导航与状态设置)。

适用场景

  • BUILD FAILED 但无错误详情。
  • 测试昨日通过、今日失败且无代码变更。
  • 构建成功但运行旧代码。
  • 构建间歇性成功或失败。
  • 模拟器卡在启动画面或无法安装应用。
  • 出现 “Unable to boot simulator”。
  • 更新 SPM 依赖后出现 “No such module”。
  • 测试无限挂起或崩溃。
  • 需要物理设备调试,问题在模拟器中无法复现。

限制

  • 该技能聚焦环境问题;若确认为代码逻辑缺陷,应改用 systematic-debugging 技能。
  • 部分命令(如 killall -9 xcodebuild)需谨慎使用。
  • 符号化崩溃日志需要 .dSYM 文件,且 crashlog 脚本可能因 Xcode 版本而异。
  • 资料未提供该技能的收费、价格、平台支持范围等具体信息。