LLDB 调试工具Chisel 不支持Python2的解决方法

Chisel是Facebook出品的(一个灰常强大的)LLDB命令的集合,用于帮助调试iOS应用程序

在Xcode11上,Chisel初始化时会报错:

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 
  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 "", line 630, in _exec
  File "", line 724, in exec_module
  File "", line 860, in get_code
  File "", line 791, in source_to_code
  File "", line 219, in _call_with_frames_removed

这是由于最新的lldb基于Python3,从错误日志可以看到加载的是Xcode.app内置的python3.7

根据Xcode 11 Beta发行说明

LLDB的Python脚本现在基于Python3。如果您使用的是与Python 3不兼容的Python扩展,它们将会中断。为了帮助过渡,您可以通过设置默认值以Python 2模式运行:

默认设置为com.apple.dt.lldb DefaultPythonVersion 2
将来将删除对Python 2的支持。(47806994)

解决办法1:
让lldb使用python2(不推荐,毕竟用新不用旧):
打开终端,输入:

defaults write com.apple.dt.lldb DefaultPythonVersion 2

解决办法2:
修改源码使其兼容Python3,这里有个小哥已经兼容了Python3,可以用脚本快速拷贝到

#注意,我是用brew安装的(brew install chisel),所以chisel所在的路径是/usr/local/Cellar/chisel/1.8.1,如果你的此路径下面没文件,请改成你自己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

安装过程忽略,常见用法(更多请去官方GitHub查看)

Command 作用(描述) iOS OS X
pviews 打印key window的递归视图描述 Yes Yes
pvc 打印key window的递归视图控制器描述 Yes No
visualize 在Mac上的预览App中打开UIImage,CGImageRef等图像
fv 在层次结构中查找其类名与提供的正则表达式匹配的视图

完美解决!!!

你可能感兴趣的:(LLDB 调试工具Chisel 不支持Python2的解决方法)