LLDB常用命令

LLDB全称Low Level Debugger,是内置于Xcode中的动态调试工具,是我们开发中必不可少的工具。
查看指令,进入LLDB模式,输入help命令回车;查看指令帮助:

image.png

一、设置断点

breakpoint set -n test1:为test1方法添加断点,-n等同于--name
breakpoint set -n test1 -n “-[ViewController save]”
breakpoint list:为多个方法添加断点

breakpoint disable 1 :第一组断点失效
breakpoint disable 1.1 : 第一组第一个失效
breakpoint enable 1:第一组断点可用

breakpoint delete 1.1
breakpoint set —selector touchesBegan:withEvent:
breakpoint set --file ViewController.m --selector touchesBegan:withEvent:
breakpoint set -r Game:: 满足包含Game:这个字符的方法都添加断点

c :继续,continue的缩写。
s:单步走, step的简写,遇到嵌套子函数会进去。
n:单步运,next的简写,遇到嵌套子函数会当做整体一步执行。

b eatWithObject: :为eatWithObject:方法添加断点
b -a 0x000006329093: 为地址为0x000006329093的方法添加断点

二、执行代码

expression self:注意p == expressionpo == expression -o
查看帮助指令:

image.png

我们也可以通过p指令,修改函数参数值,如:p str = @"2222"

三、函数调用栈

btthread backtrace的简写,函数调用栈
up & down:跳转到前一个、后一个方法
frame select 1:通过调用栈编号,跳转到对应方法

frame variable :查看当前方法的局部变量,即方法参数
thread return :线程代码回滚,而且可以修改参数,但会在上一个方法return,不在继续执行

四、 image命令

image list ,查看当前进程加载了哪些库:

image.png

0x0000000109caa000:这个地址是mach-o的真实内存首地址,即ASLR
逆向开发时,某个方法或者变量的真实地址获取方法:真实地址 = mach-o地址 + ASLR。注意,这里需要减去一个pageZero0x100000000,64 位下是 4个G),因为所有地址都会加上pageZero。
image list -o -f: 查看所有进程、库
image lookup -t Person,查看类对象的内存详情:

image.png

五、内存断点

watchpoint set variable p1->_name
watchpoint set expression 0x000006329093

image.png

breakpoint command add 1 :为第一组断点添加命令
breakpoint command delete 1
breakpoint command list

image.png

六、全局断点

target stop-hook add -o "frame variable" :为所有断点添加命令,打印方法所有变量
target stop-hook list
target stop-hook delete :删除所有全局断点
undisplay 2 :全局断点第二个不可用

image.png

六、逆向 断点

6.1 首先将mach-o文件在hopper中打开
image.png

找到eatWithObject:在mach-o中的内存地址100001cd0

6.2 aslr地址

mach-o内存的首地址:0x000000010735d000,参考上面的image list指令

image.png
6.3 方法物理地址 = ASLR + 虚拟地址

0x000000010735d000 + 0x1cd0 = 0x10735ECD0

image.png

七、自动启动LLDB命令

终端根目录,ls -a,找到.lldbinit文件。

image.png

如果没有,就自己vim创建一个,然后添加代码

target stop-hook add -o "frame variable"

当然你也可以添加其他命令。然后打开一个项目,添加一个断点,运行,即会打印该方法的参数变量。
注意:.lldbinit文件,全局有效,在Xcode启动时自动执行,会影响所有的项目。

这个文件影响的是LLDB应用,不是Xcode,终端输入lldb指令,可以直接进入lldb模式,通过process 进程id,也可以直接调试应用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351