2020年9月更新:
由于Chisel官方已更新,可以使用官方的更新來(lái)解決問(wèn)題了:
brew upgrade chisel
以下是2019原文:
Chisel是Facebook出品的(一個(gè)灰常強(qiáng)大的)LLDB命令的集合牛欢,用于幫助調(diào)試iOS應(yīng)用程序
在Xcode11上脚曾,Chisel初始化時(shí)會(huì)報(bào)錯(cuò):
error: module importing failed: Missing parentheses in call to 'print'. Did you mean print('Whoops! You are missing the <' + arg.argName + '> argument.')? (fblldb.py, line 98)
File "temp.py", line 1, in <module>
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 169, in reload
_bootstrap._exec(spec, module)
File "<frozen importlib._bootstrap>", line 630, in _exec
File "<frozen importlib._bootstrap_external>", line 724, in exec_module
File "<frozen importlib._bootstrap_external>", line 860, in get_code
File "<frozen importlib._bootstrap_external>", line 791, in source_to_code
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
這是由于最新的lldb基于Python3倦卖,從錯(cuò)誤日志可以看到加載的是Xcode.app內(nèi)置的python3.7
根據(jù)Xcode 11 Beta發(fā)行說(shuō)明
LLDB的Python腳本現(xiàn)在基于Python3杉适。如果您使用的是與Python 3不兼容的Python擴(kuò)展帖烘,它們將會(huì)中斷。為了幫助過(guò)渡茅糜,您可以通過(guò)設(shè)置默認(rèn)值以Python 2模式運(yùn)行:
默認(rèn)設(shè)置為com.apple.dt.lldb DefaultPythonVersion 2
將來(lái)將刪除對(duì)Python 2的支持七芭。(47806994)
解決辦法1:
讓lldb使用python2(不推薦,畢竟用新不用舊):
打開(kāi)終端蔑赘,輸入:
defaults write com.apple.dt.lldb DefaultPythonVersion 2
解決辦法2:
修改源碼使其兼容Python3狸驳,這里有個(gè)小哥已經(jīng)兼容了Python3,可以用腳本快速拷貝到
#注意缩赛,我是用brew安裝的(brew install chisel)耙箍,所以chisel所在的路徑是/usr/local/Cellar/chisel/1.8.1,如果你的此路徑下面沒(méi)文件峦筒,請(qǐng)改成你自己chisel所在的路徑
cd ~/Downloads && git clone https://github.com/chenjiangchuan/chisel.git && cd chisel &&cp -f -R -v libexec /usr/local/Cellar/chisel/1.8.1
安裝過(guò)程忽略究西,常見(jiàn)用法(更多請(qǐng)去官方GitHub查看)
Command | 作用(描述) | iOS | OS X |
---|---|---|---|
pviews | 打印key window的遞歸視圖描述 | Yes | Yes |
pvc | 打印key window的遞歸視圖控制器描述 | Yes | No |
visualize | 在Mac上的預(yù)覽App中打開(kāi)UIImage,CGImageRef等圖像 | ||
fv | 在層次結(jié)構(gòu)中查找其類名與提供的正則表達(dá)式匹配的視圖 |