一、显示汇编
正常我们在代码处打上断点,运行到断点处就会显示我们写的代码,想要看到汇编代码需要做以下设置。
勾选上xcode顶部 Debug -> Debug Workflow -> Always Show Disassembly即可看到如下图所示汇编代码。
汇编代码.png①:表示每一行汇编代码的地址
②:表示每一行汇编代码与第一行代码地址相差多少个字节
③:表示汇编指令操作符
④:汇编指令操作的对象
二、查看内存
勾选上xcode顶部 Debug -> Debug Workflow -> View Memory 即可看到如下图所示的界面。
在此界面输入地址,就可以查看到地址对应的内存中的内容
下面我输入一个地址查看到内存中对应的值是0x0A也就是10
内存对应内容.png三、常用lldb指令
1.读取寄存器的值
-
register read [寄存器名称] 读取某个寄存器的值
register read rax 打印结果:rax = 0x0000000100008018 -
register read 读取所有寄存器
register read 打印结果:
General Purpose Registers:
rax = 0x0000000100008018 swiftTest`swiftTest.a : Swift.Int
rbx = 0x0000000000000000
rcx = 0x0000000000000000
rdx = 0x00007ffeefbff4c8
rdi = 0x0000000000000001
rsi = 0x00007ffeefbff4b8
rbp = 0x00007ffeefbff490
rsp = 0x00007ffeefbff430
r8 = 0x0000000000000000
r9 = 0x0000000000000000
r10 = 0x0000000000000000
r11 = 0x0000000000000000
r12 = 0x0000000000000000
r13 = 0x0000000000000000
r14 = 0x0000000000000000
r15 = 0x0000000000000000
rip = 0x0000000100003eea swiftTest`main + 42 at main.swift:12:9
rflags = 0x0000000000000246
cs = 0x000000000000002b
fs = 0x0000000000000000
gs = 0x0000000000000000
2.修改寄存器的值
-
register write [寄存器名称] [值]
register write rax 0x0002135ab34 把5这个数写入寄存器rax
3.读取内存中的值
x/数量-格式-字节大小 内存地址
x 0x0000000100003edc 打印结果:
0x100003edc: 48 c7 05 39 41 00 00 14 00 00 00 89 7d cc 48 89 H..9A.......}.H.
0x100003eec: c7 48 8d 45 e8 48 89 75 c0 48 89 c6 ba 20 00 00 .H.E.H.u.H... ..
x/3xw 0x0000000100003edc 打印结果:
0x100003edc: 0x3905c748 0x14000041 0x89000000
4.修改内存中的值
memory write [内存地址] [数值]
memory write 0x0000010 10
5.格式
x是16进制, f是浮点,d是十进制
6.字节大小
b - byte 1字节
h - half word 2字节
w - word 4字节
g - giant word 8字节
7.表达式
expression [表达式] 可以简写为 expr [表达式]
expression a = 10
expr b = 3
8.po表达式
po/格式 [对象]
po age
po/d age
9.断点调试
-
thread step-over、next、 n(三种写法一样)
单步运行,把子函数当做整体一步执行 (源码级别) -
thread step-in、step、 S(三种写法一样)
单步运行,遇到子函数会进入子函数(源码级别) -
thread step-inst-over、nexti、 ni(三种写法一样)
单步运行,把子函数当做整体一步执行 (汇编级别) -
thread step-inst、stepi、 si(三种写法一样)
单步运行,遇到子函数会进入子函数(汇编级别) -
thread step-out、finish(两种写法一样)
直接执行完当前函数的所有代码,返回到上一个函数(遇到断点会卡住)
网友评论