1.br 某个类所有函数都打断点
br set --file ViewController.m -r "[ViewController .*]"
1.dis -a + 函数地址 :将函数的所有汇编全部打印出来!

2.

特别的(可以直接用 lldb 进制换算)

p/x # 十六进制
p/o # 八进制
p/t # 二进制

3.frame(栈帧)
配合 bt 使用,进入任意作用域

进入下标1的帧域

frame select 1

frame variable # 可以打印出当前 frame 调用栈的的所有变量。只接受变量作为参数,不接受表达式。

Image

image list # 列出当前App中的所有module
image lookup --address 0x00ff # 通过内存地址定位出错代码所在行
image lookup –name viewDidLoad # 查找一个方法或者符号的所在文件位置
image lookup -type HLSameThemeViewController # 会列出这个类的所有属性和成员变量,用于了解一个类

自动打印断点

断点+Action 可以让调试半自动化,避免每次触发断点,手动 po 的过程
支持多个 Action,实现多个 po 或者 call 多行代码

打印寄存器

register read #打印全部寄存器
re re #简写
re write #写寄存器

打印从地址开始的n行的汇编

x/5i 0x0000000101b24310 #打印从地址开始的n行指令汇编

 x/5i 0x0000000101b24310
->  0x101b24310: 0xa9bf7bfd   stp    x29, x30, [sp, #-0x10]!
    0x101b24314: 0x910003fd   mov    x29, sp
    0x101b24318: 0xa9bf4ff4   stp    x20, x19, [sp, #-0x10]!
    0x101b2431c: 0xa9bf57f6   stp    x22, x21, [sp, #-0x10]!
    0x101b24320: 0xa9bf5ff8   stp    x24, x23, [sp, #-0x10]!

x -c 5 0x0000000101b24310 #从地址开始打印5个字节

x -c 5 0x0000000101b24310
0x101b24310: fd 7b bf a9 fd                                   .{...

注意:x/5i打印出来的结果顺序是反的0xa9bf7bfd-->应为0xfd7bbfa9和 x -c打印的一致在arm和二进制互转网页上编码得到汇编果然如此:

https://zhuanlan.zhihu.com/p/...


宋冬野
32 声望4 粉丝

引用和评论

0 条评论