用途:面向需要在运行时调试应用的场景,包括设置断点、检查变量、求值表达式、分析线程状态、诊断挂起或死锁,以及复现崩溃。资料把 LLDB 定位为“冻结时间以检视某一时刻状态”的工具,与 Instruments 的“随时间测量趋势”相区分。
主要能力:提供五套操作手册(Playbook)。一、崩溃分诊:用 thread info 读取停止原因,用 bt 获取回溯,用 frame select 跳到自己的代码帧,再用 v 检查状态,并据异常类型分类修复。二、挂起/死锁诊断:用 process interrupt 暂停,用 bt all 获取全部线程回溯,识别主线程阻塞于互斥锁、dispatch_sync 或 CPU 忙等情况。三、Swift 值检查:区分 v、p、po、expr 四个打印命令的适用场景,v 直接读内存、最可靠,但只能读存储属性,无法读取计算属性、懒加载属性或属性包装器投影值;p 会编译执行表达式,适合计算属性与函数调用;po 调用 debugDescription;并列出 <uninitialized>、表达式解析失败、变量被优化掉等常见问题的应对方式,还说明如何检查 Optional、集合、SwiftUI 状态与 Actor 状态,以及如何在运行时修改值。四、断点策略:覆盖源码断点、条件断点、按命中次数忽略、日志断点、符号断点、异常断点、监视点、一次性断点及管理命令。五、异步/并发调试:说明 swift_task_switch 等噪声帧的含义,如何识别自己的模块帧,以及检查 Actor 与任务组状态。
使用方式:资料给出可直接执行的 LLDB 命令,例如 breakpoint set -f MyFile.swift -l 42 -c "index > 100"、breakpoint set -E swift、watchpoint set variable self.count、expr self.debugFlag = true、register read 等,并建议按“即时诊断、待执行命令、观察要点、可能根因、下一步断点计划”的结构组织输出。
适用场景:本地可复现的崩溃、运行时值错误但代码看似正确、需理解挂起时的线程状态、想不重新构建就测试修复、需在所有异常抛出处中断等。
限制与边界:性能变慢但仍有响应、内存持续增长、完全冻结、线上崩溃无法本地复现等情况,资料分别指向 axiom-performance-profiling、axiom-memory-debugging、axiom-hang-diagnostics、axiom-testflight-triage 等技能,而非直接用 LLDB。监视点受硬件限制,每进程约 4 个。Release 构建中变量可能被优化掉,需借助符号、逐文件 -Onone 或直接读寄存器作为最后手段。具体平台版本、安装方式与收费信息暂未提供。