Xcode LLDB调试器中如何存储/替换调试本地变量
Xcode LLDB 实现自定义持久调试变量方法
报错根因
直接使用e/expression命令定义的无前缀普通变量,仅存在于单次表达式的临时执行上下文里,命令执行完成后变量就会被回收,后续调用自然会触发「找不到变量作用域」的报错,无法实现PyCharm调试器watcher存储变量的效果。
对应场景操作步骤
LLDB调试器的规则是:所有需要跨表达式访问的持久调试变量,命名必须以$开头,这类变量会在当前整个调试会话周期内保留,随时可以调用查看。
针对你给出的断点场景(断点停在let aPlusb = Self.addFunc(a, b)行时),直接在LLDB控制台输入命令即可完成变量存储:
expression let $xy = Self.addFunc(a, b) // 缩写写法 e let $xy = Self.addFunc(a, b)
存储完成后,随时可以通过以下命令查看变量值:
po $xy
补充使用技巧
- 除了直接在控制台输入命令,你也可以在Xcode调试区左侧的变量列表面板右键,选择
Add Expression,输入$xy = Self.addFunc(a, b),就能实现和PyCharm watcher完全一致的效果,变量值会随着单步执行自动刷新 - 该规则对Swift、Objective-C项目同时生效,OC场景下定义持久变量同样需要加
$前缀 $开头的持久变量仅存在于当前调试会话,重启调试、断开App连接后会自动清空,不会侵入业务代码
内容的提问来源于stack exchange,提问作者jacobcan118
相关产品推荐
相关产品推荐

