动态调试
将程序运行起来,通过断点,打印等方式,查看参数,返回值,函数调用流程等
Xcode动态调试原理
xcode 的编译器发展历程:GCC --> LLVM
xcode 的调试器发展历程:GDB --> LLDB
LLDB 通过 debugserver 来调试app。debugserver 存放在xcode里面,当xcode识别到手机设备时,会自动将debugserver安装到iPhone上。
在Xcode中路径 :/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.1/DeveloperDiskImage.dmg/usr/bin/debugserver
Xcode只能调试通过Xcode安装的APP
debugserver权限
默认情况下debugserver缺少一定权限,只能调试通过Xcode安装的app,无法调试其他APP
如果需要调试其他APP,需要对debugserver重新签名,签上两个调试相关的权限,get-task-allow
, task_for_pid-allow
将签好权限的debugserver放到/usr/bin目录,便于找到debugserver指令
让debugserver附加到APP上
debugserver *:端口号 -a 进程
- *:端口号
- 使用iPhone的某个端口启动debugserver服务(只要不是保留端口即可)
- -a 进程
- 输入app的进程信息(进程ID或者进程名称)
Mac启动LLDB,链接手机上debugserver服务
启动lldb
lldb
链接debugserver服务
(lldb) process connect connect://手机IP地址:debugserver服务端口号
使用lldb的c命令,让程序先继续运行
接下来即可使用LLDB命令调试App
通过debugserver启动APP
debugserver -x auto *:端口号 APP的可执行文件路径
网友评论