iOS手机调试后,debugserver会存在于/Developer/user/bin/目录下。配置debugserver是指:给debugserver重签名,然后将重签名的文件放在iOS的/usr/bin目录下。
整个过程如下:
iOS系统下,所有的程序都是需有正确的签名才能运行,签名保证文件的完整性,沙盒保证可执行文件不会越权访问未被授权的资源。上面的配置文件ent.xml则可以看成是沙盒的配置文件,即告诉沙盒,此可执行程序具有哪些权限,这样一个配置文件,在和签名计算绑定在一块的。从这个点上看,签名与沙盒一起构成了iOS系统的安全基础。更多签名机制,可以从这里了解更多
将重签名的debugserver再拷回手机,注意拷回目录为/usr/bin,而不是之前的/Developer/user/bin,这样做的原因一个是/Developer目录不可写,另一个是/usr/bin目录是系统环境变量,其下的程序更方合使用。
授予debugserver可执行权限 : chmod +x /usr/bin/debugserver
至此,debugserver准备完成,可以开始远程调试了。
在iOS上运行命令:debugserver *:1234 -a "SpringBoard"
即可。正常情况下运行后结果如下所示:
lldb调试的整个结构是这样的:在iOS上使用debugserver程序attach本地(iOS)的进程,同时监听某一个端口,以便接受命令,执行并返回结果。而命令的发送者一般就是我们的Mac电脑上运行的lldb程序。
正如第二节所述,lldb的调试是OSX上的lldb做为一个客户端程序,通过网络向iOS上的程序发起Tcp连接(debugserver是Tcp服务的提供者)来完成的。理解了这些后,OSX端的操作就比较易懂了:
lldb
process connect connect://<ios ip address>:9089
)连接到iOS端的debugserver。输入的时候,将如上图所示,我用的是localhost,是因为我将所有本地的1234的请求,转发起iPhone手机的1234端口了。这种USB连接调试的方式会更快,如果没有进行这一操作,换成手机的IP地址也是一样的,只是稍慢。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8