简介:
debugserver是运行在iOS程序中的,顾名思义,作为server端,它接受与来自服务端,也就是LLDB传送过来的命令,继而执行的操作。再把执行结果返回给LLDB,默认情况下, iOS并没有安装debugserver,只有在设备连接了一次xcode之后,并在window->device中添加此设备之后,debugservercai才会别安装到iOS中,默认位于Developer/usr/bin目录下。
但是默认的debugserver只用用户调试我们自己的app,如果想要调试iOS里面所有的app,还需要通过给debugserver赋予task_for_pid的权限。以下是配置task_for_pid的教程
1.debugserver瘦身,首先根据你的iOS设备确定你的手机对应的ARM
首先将未经处理的debugserver从iOS拷贝到OSX中,可以用scp命令,也可以用iFunBox。
然后利用命令 lipo -thin arm64(这里对应你的iOS设备的结构)(未经处理的debugServer的路径)-output(新的debugserver的保存路径)
取得 debugserver 有两种方式
第一种是在 Mac 电脑中拿到进入路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/8.3/DeveloperDiskImage.dmg(其中路径里 8.3,代表 iOS 系统版本,需与准备的越狱手机系统版本保持一致)。双击 DeveloperDiskImage.dmg,将目录里的 usr/bin/debugserver 复制到指定文件夹中。
第二种是在越狱手机里拿到
如果手机连接过手机并通过 XCode 调试过 app,会在手机里的 /Developer/usr/bin/ 目录下生成一个 debugserver 文件。通过 iFunbox 导出至 Mac 桌面。或使用 scp 命令 cpoy 出来
2.给debugServer添加task_for_pid权限,将以下xml保存为ent.xml。
运行以下命令:
或者 xcode自带
将添加权限后的debugserver放回去iOS复制到/usr/bin/debugserver,这样的好处是可以全局执行debugserver命令。另一个原因是因为在developer里面的是不可以写的,无法覆盖。
4.给新的debugserver添加可执行的权限
chmod +x /usr/bin/debugserver
Debugserver有两个命令:
1.启动进程,debugserver会启动进程,并且开启port端口,等待来自ip的LLDB接入。ip如果为*则代表任意ip
debugserver backend ip:port /path/to/excutable
附加进程 实在进程已经打开的情况下可以执行
debugserver ip:port -a "processname"










网友评论