事半功倍的密语:lldb常用命令一览表

打开Xcode调试窗口

断点中止时,在Xcode底部调试窗口(如果没有显示按上图标示位置打开)
敲入以下命令:

po:打印变量信息, 会调用对象的description方法(类似NSLog("%@", obj)

(lldb) po self.titleLabel
<UILabel: 0x7fc255525970; baseClass = UILabel; frame = (314 486; 80 80); 
text = '分类'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x600003e98690>>

expression:运行时执行任意表达式,如:

(lldb) expression 1+1
(int) $4 = 2

当然也能执行赋值语句,用于运行时改变变量值:

(lldb) p self.view
(UIView *) $5 = 0x00007fc255613a70
(lldb) expression $5.backgroundColor = [UIColor redColor]

p/e:expression 的简略写法

(lldb) p self.titleLabel
(UILabel *) $8 = 0x00007fc255525970

对比po, 打印标量(结构体、整型)等,使用 p 才能获得详细信息:

@property(nonatomic,assign) NSInteger v;
--------------------------------------------------------------------
(lldb) po self.v
<nil>

(lldb) p self.v
(NSInteger) $1 = 0

运行中改变背景颜色:

(lldb) p self.view
(UIView *) $3 = 0x00007fc255708250
(lldb) e (void)[$3 setBackgroundColor:[UIColor redColor]]

由于中断会导致界面没有及时刷新,看不到改动效果,可以执行flush:

(lldb) e (void) [CATransaction flush]

bt :打印主线程调用堆栈,比左边图形化的更详细; bt all 将打印所有线程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 8,613评论 0 10
  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    小笨狼阅读 20,739评论 31 186
  • 一、expression expression命令的作用是执行一个表达式,并将表达式返回的结果输出。express...
    boundlessocean阅读 4,781评论 0 2
  • 树叶从离开枝头的那一刻 它就不在属于那个枝头 而我 就像那个落地的树叶 无心无意 更无情 一个人静静的 躺在那里 ...
    读书少的丝瓜阅读 3,638评论 3 2
  • 整理by 小田契阔 你是不是也陷入了这样一个怪圈: 已经很久没有系统的学习、专注的阅读了,每天的时间都是被打碎的,...
    小田契阔阅读 5,114评论 0 51