欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

lldb调试工具

程序员文章站 2022-06-03 22:33:47
...

lldb: 调试工具. 支持OSX, iOS, 以及iOS模拟器

debugserver:

  1. 配置debugserver
  • 将未经处理的debugserver从iOS拷贝到OSX中
 scp [email protected]:/Developer/usr/bin/debugserver ~/Desktop/debugserver/debugserver
  • 减肥( "arm64" 换成你设备所对应的ARM)
lipo -thin arm64 debugserver -output debugserver 
  1. 给debugserver添加task_for_pid权限

方案一:

下载"http://iosre.com/ent.xml" 到OSX 然后运行如下命令:

ldid -Sent.xml debugserver

方案二:

下载"http://iosre.com/ent.plist" 到OSX ,然后运行如下命令:

codesign -s - --entitlements ent.plist -f debugserver 

3.将经过处理的debugserver考回iOS,并添加执行权限

scp ~/Desktop/debugserver/debugserver [email protected]:/usr/bin/debugserver

chmod +x /usr/bin/debugserver

4.用debugserver启动或附加进程

 debugserver -x backboard *:1234   /Applications/MobileSMS.app/MobileSMS(开启1234端口,等待任意IP接入)

 debugserver  192.168.2.3:1234 -a  /Applications/MobileSMS.app/MobileSMS(开启1234端口,等待指定IP接入)

lldb:

1.连接debugserver:

(lldb) process connect://192.168.2.3:1234

2.lldb命令

  • image list: 用于列举当前进程中的所有模块(image)

  • image list -o -f: 获取每个模块的起始地址

  • breakpoint:

      br function  在函数的起始位置设置断点
    
      br s -a address  在制定地址处设置断点 
    
      br dis/en/del  禁用,启用,删除断点
    
  • nexti(ni)/stepi(si) 执行下一条机器指令,前者不进入函数体,后者会进入函数体

  • register write: 给指定的寄存器赋值,从而对程序进行改动,观察程序的执行过程中有什么变化