最近看看針對LLDB命令擴展的Chisel,感覺很實用凤粗。記錄下,備份
對于只會po
的我感覺打開新世界的大門今豆。嫌拣。。??
倉庫地址
Chisel
下面基本就是readme翻譯和我實踐記錄了??
安裝
brew update
brew install chisel
在~
路徑下創(chuàng)建.lldbinit
文件
touch .lldbinit
open .lldbinit
輸入命令
command script import /usr/local/opt/chisel/libexec/fblldb.py
使用
1 pviews
<UIWindow: 0x7fcbb0b1b360; frame = (0 0; 375 812); gestureRecognizers = <NSArray: 0x60400005cd40>; layer = <UIWindowLayer: 0x60400003ba20>>
| <UIView: 0x7fcbb0a05040; frame = (0 0; 375 812); autoresize = W+H; layer = <CALayer: 0x608000036a20>>
| | <UIImageView: 0x7fcbb0a05220; frame = (67 170; 240 128); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x608000037100>>
查看層級視圖呆躲。感覺這個不如XCode自帶的debug view hierarchy直接异逐。但是也不錯
2 pvs
打印當前VC描述
感覺 可能 用不到
(lldb) pvc
<ChiselTest.ViewController 0x7fcbb0b1aa30>, state: appeared, view: <UIView 0x7fcbb0a05040>
3 visualize
查看image相關 view
感覺這個是神器,不過swift4報錯..待填坑
看到有人提issue,也沒回應
issue
4 fv
應該 find views的縮寫吧
參數(shù)是正則
(lldb) fv UIView
0x7fc232703d20 UIView
0x7fc23240dc70 UIView
(lldb) fv UIVie+
0x7fc232703d20 UIView
0x7fc23240dc70 UIView
(lldb)
5 fvc
同 find vcs
6 show/hidden
查看隱藏視圖
感覺這個也是在debug view hierarchy中的功能
(lldb) hide 0x7fc23240dc70
(lldb) show 0x7fc23240dc70
7 mask/unmask
在當前視圖遮罩
(lldb) mask 0x7fc23240dc70
(lldb) unmask 0x7fc23240dc70
感覺就是addSubview/SubLayer
8 border/unborder
給視圖加一個邊框?qū)崿F(xiàn)
(lldb) border 0x7fbefdc00f00
(lldb)
感覺這個不錯
9 caflush
刷新渲染服務器(如果沒有動畫插掂,就相當于“重新繪制”)灰瞻。
感覺 用不到 沒有使用場景
caflush
10 bmessage
在類的方法或?qū)嵗姆椒ㄉ显O置一個符號斷點,而不用擔心層次結構中的哪個類實際實現(xiàn)了這個方法辅甥。
神器神器 我們自定義的方法中可以打斷點箩祥。系統(tǒng)實現(xiàn)的方法就懵逼啊
(lldb) bmessage [0x7fcc17c15fc0 setFrame:]
Setting a breakpoint at -[UIView setFrame:] with condition (void*)(id)$rdi == 0x00007fcc17c15fc0
Breakpoint 2: where = UIKit`-[UIView(Geometry) setFrame:], address = 0x000000010e2d44f2
1
11wivar
watch ivar 觀察變量
貌似swift4 不行
error: error: use of undeclared identifier 'aa'
Traceback (most recent call last):
File "/usr/local/opt/chisel/libexec/fblldb.py", line 84, in runCommand
command.run(args, options)
File "/usr/local/Cellar/chisel/1.8.0/libexec/commands/FBDebugCommands.py", line 40, in run
objectAddress = int(fb.evaluateObjectExpression(commandForObject), 0)
TypeError: int() can't convert non-string with explicit base
12 presponder
打印鏈式的起點
感覺也nice
13 help
查看所有命令