IPhone一起玩越狱|IPhone一起玩越狱 -(十八)- 探究Xcode怎么使用lldb调试我们的程序
文章图片
引言
在Mac终端上面
xxx $ lldb
(lldb)
那么Xcode是怎么开启lldb调试的呐?
Xcode的lldb调试IPhone 未越狱lldb的调试的原理
文章图片
lldb每一条指令都会传给
debugserver
,debugserver
在去选择性的调试某一个Appdebugserver
的安装过程- Xcode
DeviceSupport
设备支持的版本中都存在debugserver
这个服务- 路径:
Xcode.app->Contents->Developer->Platforms->iPhoneOS.platform->DeviceSupport->xxx版本->DeveloperDiskImage.dmg->usr->bin-debugserver
- 路径:
- 在用Xcode去安装我们的App的时候Xcode会将debug安装到我们的手机中
- 路径(越狱以后可以查看):
/Developer/usr/bin/debugserver
- 路径(越狱以后可以查看):
- Xcode将项目安装到Iphone的时候,会查看iphone当中是否安装了debugserver如果没有安装会将App跟debugserver一起安装到手机里面
越狱Iphone的lldb调试原理
- 我们知道在Mac中默认自带一个
lldb
- 路径:
/usr/bin/lldb
- 路径:
- 当我们在终端打开lldb的时候,lldb是需要连接到iPhone的debugserver才能调试某个App,so连接过程
- 首先Iphone中的
debugserver
去连接某个App,连接之后,提供一个端口给外面,然后lldb去连接debugserver
$ debugserver *:端口号 -a 进程 //*:端口号使用手机的端口号提供服务 //-a 进程连接App进程(名称或者ID)
debugserver会监听你输入的端口号
只要外面的连接这个端口号就相当于你已经连接上了某个App进行调试 - 首先Iphone中的
- debugserver连接App
例如:iPhone:/Developer/usr/bin root# ./debugserver *:3457 -A antitweak debugserver-@(#)PROGRAM:debugserverPROJECT:debugserver-360.0.26.3 for arm64. Attaching to process antitweak... Listening to port 3457 for a connection from *...
- lldb连接手机的
debugserver
xxx $ lldb
(lldb) process connect connect://172.16.107.4:3457
Process 15256 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
frame #0: 0x000000018fd9f224 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
->0x18fd9f224 <+8>: retlibsystem_kernel.dylib`mach_msg_overwrite_trap:
0x18fd9f228 <+0>: movx16, #-0x20
0x18fd9f22c <+4>: svc#0x80
0x18fd9f230 <+8>: ret
Target 0: (antitweak) stopped.
(lldb)
【IPhone一起玩越狱|IPhone一起玩越狱 -(十八)- 探究Xcode怎么使用lldb调试我们的程序】lldb调试成功!
注意
连接成功,程序是被断住的,需要输入
c
才能正常运行使用usb连接lldb
iPhone:/Developer/usr/bin root# ./debugserver *:3457 -A antitweak
debugserver-@(#)PROGRAM:debugserverPROJECT:debugserver-360.0.26.3
for arm64.
Attaching to process antitweak...
Listening to port 3457 for a connection from *...
需要在Mac电脑中添加
python /opt/cycript_0.9.594/ConnectionShell/python-client/tcprelay.py -t 22:3456 3457:3457
上述代码不懂请查看IPhone一起玩越狱 -(六)- USB登录Iphone用户
将本地的端口映射到手机的端口3457:3457
IPhone
iPhone:/Developer/usr/bin root# ./debugserver *:3457 -A antitweak
debugserver-@(#)PROGRAM:debugserverPROJECT:debugserver-360.0.26.3
for arm64.
Attaching to process antitweak...
Listening to port 3457 for a connection from *...
item
xxx $ lldb
(lldb) process connect connect://localhost:3458
Process 573 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
frame #0: 0x000000019187b224 libsystem_kernel.dylib`mach_msg_trap + 8
libsystem_kernel.dylib`mach_msg_trap:
->0x19187b224 <+8>: retlibsystem_kernel.dylib`mach_msg_overwrite_trap:
0x19187b228 <+0>: movx16, #-0x20
0x19187b22c <+4>: svc#0x80
0x19187b230 <+8>: ret
Target 0: (eSmartWallet) stopped.
(lldb)
推荐阅读
- 游戏IP(立足于玩家情感的粉丝经济)
- 前任
- 我要我们在一起(二)
- 一起来学习C语言的字符串转换函数
- 那些年我们玩过的街机
- 4月23日海军节,我在青岛等你,一起看强大的中国海军。(如图如视频)
- 和陈先生第三次在一起
- 闲的功夫
- 爱情就是“你要去哪,我跟你一起去”
- 随便写写|随便写写 - 草稿