LLDB与debugserver

来源:互联网 发布:淘宝卖家会员管理 编辑:程序博客网 时间:2024/06/05 11:19

配置debugserver

默认情况下iOS上并没有安装debugserver,因此需要设备链接一次Xcode,并在Window->Devices菜单中增加此设备后。会被安装到IOS的Developer/usr/bin/目录下。

  • 瘦身
    接下来我们将当前设备进行从IOS拷贝到我们的mac系统上,进行对debugserver进行瘦身
lipo -thin armv7s ~/debugserver -output ~/debugserver

注意:这里的armv7s换成对应设备的arm

  • 加task_for_pid权限
    ent.plist下载到你对应存档debugserver的目录下。
codesign -s - --entitlements ent.plist -f debugserver
  • 将处理过后的debugserver放到ios的/usr/bin/debugserver
//附加权限chmod +x /usr/bin/debugserver
  • 启动debugserver 附加到进程
debugserver -x backboard IP:poart /path/to/executable //启动executable,并开启port端口,等待来自IP的LLDB接入
debugserver IP:poart  -a "ProcessName" //debugserver会附加ProcessName,并开启poart端口,等待来自IP的接入LLDB   

注意: IP设置*代表所有IP可接入

这里写图片描述

LLDB的使用说明

sudo  xcode-select -s /Applications/Xcode6.1.app //进行切换默认编译的xcode 此处Xcode6.为我放在Applications目录下的

首先我们需要启动lldb执行如下命令:

/Applications/Xcode6.1.app/Contents/Developer/usr/bin/lldb

启动LLDB之后,我们就需要链接等待我们接入的debugserver。命令如下

process connect connect://iOSIP:1234
  • image list
    列举当前进程中的所有模块
image list -o -f
  • breakpoint
    进行设置中断点:
b function

br s -a adress

br s -a 'ASLROffset+address'
  • print
    用来打印 断电停止时内部发生的某处值。
p $r6  

查看后 对应地址的内容将被置0 ,因此调用ni则再次查看r6值变为0

po [$ro  class]po $ro

其中po用来打印Objective-C对象

p (char*)$r1 //通过强制转换的方式打印C语言基本数据类型。

可以使用x命令打印一个地址存放的值。如下:

p/x $sp  //以十六进制方式打印sp,它是一个指针x/10 $sp //打印出这个指针指向的连续10个x/10 0x006d333c

LLDB相关命令 :http://lldb.llvm.org/lldb-gdb.html

原创粉丝点击