debugserver
对于debugserver+lldb
的调试方案来说,应该先介绍背景知识:
LLDB的远程调试
- LLDB的远程调试
- 涉及到2个端
lldb client
- 运行在 local system
- 比如PC端(
Linux
、Mac
)的lldb
命令行工具
- 比如PC端(
- 运行在 local system
lldb server
- 不同平台
Linux
和Android
:lldb-server
- 不依赖于
lldb
- 因为:已静态链接包含了
LLDB
的核心功能 - 对比:
lldb
是默认是动态链接liblldb.so
- 因为:已静态链接包含了
- 不依赖于
Mac
和iOS
:debugserver
- 运行在 remote system
- 典型例子
- iPhone中的:
debugserver
- Android中的:
lldb-server
- iPhone中的:
- 典型例子
- 实现了remote-gdb的功能
- 不同平台
- 两者通讯
- 用的是:
gdb-remote
协议- 一般是在TCP/IP之上运行
- 用的是:
- 细节详见:
docs/lldb-gdb-remote.txt
- 资料
- 主页
- Remote Debugging — The LLDB Debugger
- 主页
- 涉及到2个端
debugserver
然后再来详细介绍:debugserver
本身:
debugserver
- 是什么:一个终端的应用
- 也是:
XCode
去调试iOS设备中程序时候的进程名
- 也是:
- 在哪里:iOS设备中
- 位置:
/Developer/usr/bin/debugserver
- 注:iOS中默认没安装debugserver
- iOS何时安装了
debugserver
- 在设备连接过一次
Xcode
,并在Window
->Devices
中添加此设备后debugserver
才会被Xcode
安装到iOS
的/Developer/usr/bin/
下
- 在设备连接过一次
- iOS何时安装了
- 位置:
- 作用:作为服务端,接受来自远端的
gdb
或lldb
的调试- 可以理解为:
lldb
的server
- 可以理解为:
- 为何需要
- iOS中,由于App运行检测到越狱后会直接退出,所以需要通过
debugserver
来启动程序
- iOS中,由于App运行检测到越狱后会直接退出,所以需要通过
- 通过
debugserver
来启动程序- 举例
debugserver -x backboard 0.0.0.0:1234 ./*
debugserver *:1234 -a "MoneyPlatListedVersion"
- 举例
- 是什么:一个终端的应用