SuperAPI AI 工具集

axiom-lldb

测试与质量

查看项目

更新于 10-16 00:22

技能介绍

这是一份关于在 Xcode 中使用 LLDB 交互式调试的中文资料。核心用途是在运行时冻结程序状态,检查变量、求值表达式、查看线程,从而定位崩溃、死锁或数值异常的原因。资料强调“LLDB 无用”多源于不知道 Swift 类型该用哪条命令,属于知识缺口而非工具缺陷。

主要能力包括五部分。崩溃排查:用 thread info 查看停止原因(如 EXC_BAD_ACCESS、EXC_BREAKPOINT、SIGABRT),用 bt 获取回溯并定位业务代码帧,用条件断点提前捕获。挂起与死锁诊断:用 process interrupt 暂停,thread backtrace all 查看所有线程,判断主线程是否阻塞在互斥锁或 dispatch_sync。Swift 值检查:v 直接读内存,适合存储属性、结构体和枚举;p 编译表达式,适合计算属性和函数调用;po 调用 debugDescription,适合有描述信息的对象;expr 可执行任意代码并修改运行时值。断点策略:源码断点、条件断点、忽略前 N 次命中、日志点(无需重编译)、符号断点、异常断点(-E swift 或 -E objc)、观察点以及一次性断点。异步并发调试:识别 swift_task_switch 等 suspend 帧,用 v 检查 actor 状态,用 bt all 观察子任务。

使用方式上,资料建议先运行 thread info 和 bt 判断停止原因,再 frame select 进入业务帧,随后按变量类型选择 v、p、po。常用命令如 breakpoint set -f MyFile.swift -l 42 -c "index > 100"、watchpoint set variable self.count、expr self.debugFlag = true 均需在已附加调试器的 (lldb) 提示符下执行。若只拿到崩溃日志、无法本地复现,或问题属于性能趋势与内存增长,资料明确指向其他技能(如 axiom-testflight-triage、axiom-hang-diagnostics、axiom-memory-debugging、axiom-performance-profiling)而非 LLDB。

限制方面:Release 构建优化可能导致变量显示<optimized out>或不可用;v 无法读取计算属性、尚未首次访问的 lazy 属性及属性包装器的投影值;po 对未实现 CustomDebugStringConvertible 的对象可能只输出地址;观察点受硬件限制,每进程约 4 个。以上均为资料原文描述,未提供的信息暂未提供。