[分享]Xcode 调试设备应用
发表于:
2016-10-9 14:28
10253
在iOS 设备上(iPhone、 iPad等)调试比如微信、支付宝等别人家的应用的时候,用lldb 可以进行调试,但是lldb 蛋疼的命令行让人很不爽,所以尝试用Xcode attach 现有应用进行调试
Code signing Entitlements中有一项很重要的key值,就是get-task-allow,作用如下:
get-task-allow, when signed into an application, allows other processes (like the debugger) to attach to your app. Distribution profiles require that this value be turned off, while development profiles require this value to be turned on (otherwise Xcode would never be able to launch and attach to your app).
也就是说,get-task-allow决定了这个app能否被Xcode调试。一般来说,上架了的程序,这个key值为空,默认为NO。
真机上的app,若不是自己build进去的,基本没有调试的权限。原因在于get-task-allow没有开启。若要开启,步骤如下:
以MobileSafari为例
在越狱iOS设备上,找到MobileSafari 这个执行文件(系统应用在/Application/MobileSafari.app/ 目录下,AppStore 下载的应用在/private/var/containers/Bundle/Application/ID/XXX.app),拷贝到Mac上
利用ldid将MobileSafari的code sign导出:
ldid -e MobileSafari >> MobileSafari.xml
打开MobileSafari.xml添加get-task-allow这个key,并赋值为true,保存退出
<key>get-task-allow</key>
<true/>
对MobileSafari进行重签名:
ldid -SMobileSafari.xml ./MobileSafari
将MobileSafari重新拷贝回iOS设备,声明下权限(原本就有755权限了):
chmod 755 ./MobileSafari
然后就大功告成了
在设备上启动Safari,打开Xcode,在Debug → Attach to Process → [process name]。就可以调试了
如果在越狱的iOS 设备上有ldid,则可以直接在设备上进行签名导出 → 添加键值 → 重新签名的流程
注意:
1、在想要attach 到设备上的应用需要先选中设备
2、调试时的终端显示在Windows → device → [设备] 中
参考资料
iOS调试技巧(3)—— Attach to Process with Xcode
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
上传的附件: