debugserver

对于debugserver+lldb的调试方案来说,应该先介绍背景知识:

LLDB的远程调试

  • LLDB的远程调试
    • 涉及到2个端
      • lldb client
        • 运行在 local system
          • 比如PC端(LinuxMac)的lldb命令行工具
      • lldb server
        • 不同平台
          • LinuxAndroidlldb-server
            • 不依赖于lldb
              • 因为:已静态链接包含了LLDB的核心功能
              • 对比:lldb是默认是动态链接liblldb.so
          • MaciOSdebugserver
        • 运行在 remote system
          • 典型例子
            • iPhone中的:debugserver
            • Android中的:lldb-server
        • 实现了remote-gdb的功能
      • 两者通讯
        • 用的是:gdb-remote协议
          • 一般是在TCP/IP之上运行
    • 细节详见:
      • docs/lldb-gdb-remote.txt
    • 资料

debugserver

然后再来详细介绍:debugserver本身:

  • debugserver
    • 是什么:一个终端的应用
      • 也是:XCode去调试iOS设备中程序时候的进程名
    • 在哪里:iOS设备中
      • 位置:/Developer/usr/bin/debugserver
      • 注:iOS中默认没安装debugserver
        • iOS何时安装了debugserver
          • 在设备连接过一次Xcode,并在Window->Devices中添加此设备后
            • debugserver才会被Xcode安装到iOS/Developer/usr/bin/
    • 作用:作为服务端,接受来自远端的gdblldb的调试
      • 可以理解为:lldbserver
    • 为何需要
      • iOS中,由于App运行检测到越狱后会直接退出,所以需要通过debugserver来启动程序
    • 通过debugserver来启动程序
      • 举例
        debugserver -x backboard 0.0.0.0:1234 ./*
        
        debugserver *:1234 -a "MoneyPlatListedVersion"
        

results matching ""

    No results matching ""