十五、动态调试

2018-12-17  本文已影响12人  Lovell_

一、Xcode动态调试的原理

将程序运⾏行行起来,通过下断点、打印等⽅方式,查看参数、返回值、函数调⽤用流程等

image.png

二、动态调试任意APP的原理

三、debugserver环境搭建

1、给iPhone上的debugserver签权限——动态调试任意App的权限

1.1 把iPhone上的/Developer/usr/bin/debugserver⽂件复制到Mac上来;
1.2 导出debugserver文件之前的签名权限:ldid -e debugserver > debugserver.entitlements
1.3 加上get-task-allow和task_for_pid-allow权限,重新签名:ldid -Sdebugserver.entitlements debugserver
1.4 debugserver文件放到iPhone的/Device/usr/bin⽬录,因为放不回/Developer/usr/bin/,它是只读的。
1.5 电脑端添加映射端口10011:10011:修改文件usb.sh:python /Users/......../usbmuxd/tcprelay.py -t 22:10010 10011:10011
1.6 登录到手机,终端中敲debugerserver,提示Permission denied,chmod +x /usr/bin/debugserver赋权限。

debugserver有权限了,可以在命令行操作了。
下一步,让debugserver附加到某个APP进程。

2、搭建debugserver

登录到手机

实操

debugserver就搭建起来了,下一步就是用lldb去连接了(下一步要另起一个终端窗口,在Mac上操作终端)。

四、lldb连接debugserver

另起一个终端窗,如下

总括

process connect connect:// :
后面的connect是个协议。

连接方法一:通过ip地址连接(不推荐)
Mac端的lldb连接手机上的debugserver——使用手机IP地址的方式、WIFI方式

但是很久就不用手机的ip地址来连接手机了,因为这样需要手机和电脑处于同一个WIFI下。

连接方法二:通过USB连接(推荐)

现在更多是将手机的某个端口映射到Mac的某个端口,到时候Mac访问自己的端口就行了。

Mac端的lldb连接手机上的debugserver——使用USB接口、多添加个端口映射 连接debugserver服务——连接Mac上的10011端口

连接Mac上的10011端口,就相当于连接了手机上的10011端口。

连接debugserver服务成功

到此。

往下开始LLDB指令

上一篇下一篇

猜你喜欢

热点阅读