iOS动态调试

Debugserver安装及使用

2017-03-20  本文已影响97人  dpplh
iOS8各机型ARM对照

默认情况下,iOS上并没有安装debugserver,只有在设备连接过一次Xcode,并在window->Deveice菜单中添加此设备后,debugserver才会被Xcode安装到iOS的“/Develope/usr/bin”目录下。
但是,因为缺少task_for_pid权限,通过Xcode安装的debugserver只能调试我们自己的App。

配置debugserver

将未经处理的debugserver从iOS拷贝到OSX中的"/Users/DPP"目录下,命令如下:

$scp root@iOSIP:/Developer/usr/bin/debugserver ~/debugserver

帮助debugserver减肥命令如下:

$lipo -thin armv7 ~/debugserver -output ~/debugserver
// 注意将armv7改成自己设备所对应的ARM

给debugserver添加task_for_pid权限

拷贝如下代码,保存成ent.xml,放到OSX的"/Users/DPP"目录下

<plist version="1.0">
<dict>
<key>com.apple.springboard.debugapplications</key>
<true/>
<key>get-task-allow</key>
<true/>
<key>task_for_pid-allow</key>
<true/>
<key>run-unsigned-code</key>
<true/>
</dict>
</plist>

运行如下代码:

$/opt/theos/bin/ldid -Sent debugserver

“-S”与”ent.xml“之间是没有空格的。

将经过处理的debugserver拷回iOS

$scp ~/debugserver root@iOSIP:/usr/bin/debugserver
$ssh root@iOSIP
~ root# chmod +x /usr/bin/debugserver

痛debugserver启动或附加进程

debugserver最常用的两种场景分别是

debugserver -x backboard IP:port /path/to/executable

debugserver会启动excutable,并开启port端口,等待来自IP的LLDB接入。

debugserver IP:port -a "ProcessName"

debugserver会附加ProcessName,并开启port端口,等待来自IP的LLDB接入。

例如:

~ root# debugserver -x backboard *:1234 /Applications/MobileSMS.app/MobileSMS

上面的代码会启动MobileSMS,并开启1234端口,等待任意IP地址的LLDB接入。

而如下代码:

~root# debugserver 192.168.1.6:1234 -a "MobileSMS"

会附加MobileSMS,并开启1234端口,等待来自192.168.1.6的LLDB接入。

上一篇下一篇

猜你喜欢

热点阅读