变更记录

序号 录入时间 录入人 备注
1 2016-01-08 Alfred Jiang -

方案名称

Xcode - 使用 chisel 提高 LLDB 调试效率

关键字

Xcode \ 调试 \ 断点 \ 页面 \ 约束

需求场景

  1. 需要对复杂页面进行调试时

参考链接

  1. GitHub - chisel
  2. 简书 - LLdb篇2教你使用faceBook的chisel来提高调试效率
  3. 简书 - 小笨狼的LLDB技巧:chisel

详细内容

安装

1. 安装 Homebrew (如果已经安装了,可以跳过这一步)

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

2. 更新 Homebrew (如果已经最新了,可以跳过这一步)

brew update

3. 通过 Homebrew 安装 chisel

brew install chisel

4. 添加 chisel 命令至 ~/.lldbinit

touch ~/.lldbinit
echo “command script import /usr/local/opt/chisel/libexec/fblldb.py” >> ~/.lldbinit

5. 更新 chisel

brew upgrade chisel

使用

1. 通过 pviews 命令直接查看页面层级关系

2. 通过 border & unborder 命令为页面控件添加和删除边框颜色和边框的宽度
1
(lldb)border 0x79ec3140 -c green -w 2
3. 通过 paltrace 命令查看是否存在 Ambiguous LayoutsAMBIGUOUS LAYOUT 即为约束冲突或不完善位置),该命令相当于对 View 调用 _autolayoutTrace
1
2
3
4
5
6
7
8
9
10
11
(lldb) paltrace 
•UIWindow:0x7ff450d2fb50 - AMBIGUOUS LAYOUT
| •UIView:0x7ff450e14430
| | *_UILayoutGuide:0x7ff450d30e90
| | *_UILayoutGuide:0x7ff450d31230
| | *UIView:0x7ff450d32870- AMBIGUOUS LAYOUT for UIView:0x7ff450d32870.minX{id: 46}

Legend:
* - is laid out with auto layout
+ - is laid out manually, but is represented in the layout engine because translatesAutoresizingMaskIntoConstraints = YES
• - layout engine host
4. 通过 alamborder & alamunborder 命令为 Ambiguous LayoutsAMBIGUOUS LAYOUT 即为约束冲突或不完善位置)控件添加和删除边框颜色和边框的宽度
1
(lldb)alamborder
5. 通过 pinternals 命令打印对象成员变量( model 为某实例对象)
1
(lldb) pinternals model
6. 使用 pkp 命令打印属性,该命令是 po 命令的升级版,po obj.xxx 是调用 getter 方法,如果没有 getter 方法就无法打印了。 pkp obj.xxx 优先调用 getter 方法,没有 getter 方法会直接查找成员变量。
1
(lldb) pkp self.view
7. 通过 flicker 命令查看 View,将 View 闪烁一下,以便于查找 View 的位置
1
(lldb) flicker self.subView

8. 通过 caflush 命令更新 UI, 该命令主要用于通过 LLDB 修改界面控件显示属性之后刷新页面
1
caflush
9 通过 show & hide 命令显示和隐藏页面显示控件
1
2
3
(lldb) show 0x7fe713901f10

(lldb) hide 0x7fe713901f10
10. 通过 visualize 命令打开mac下的预览app打开我们的图片UIImage, CGImageRef格式的图片,甚至view和layer的图片
1
(lldb) visualize image
更多命令使用请关注 参考链接

效果图

(无)

备注

(无)