常用的LLDB指令

常用的LLDB指令
print ,p:打印

po : 打印对象

格式:
x是16进制,d是10进制

字节大小:

b:byte 1字节 ,h :half word 2字节 ,w :word 4字节 ,g : giant word 8字节

读取内存:memory read/数量 格式 字节数 内存地址
x/数量 格式 字节数 内存地址

x/3xw 0x10010

修改内存中的值:memory write 内存地址 数值
memory write 0x00000010 10 //把对应的内存值修改为10

内存对齐:结构体的最终大小必须是最大成员大小的倍数,提高CPU的访问速度

调试的时候想要查看汇编代码:可在Xcode->Debug->Debug Workflow->Always Show Disassembly进行勾选

我们编写的Objective-C代码,底层其实都是C/C++代码实现的,主要是基于C/C++的结构体实现的,通过clang把Objective-C转换成C/C++代码
clang -rewrite-objc main.m -o main.cpp

OC -> 中间代码(.ll) -> 汇编、机器代码
Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)
clang -emit-llvm -S main.m //可以使用该命令行指令生成中间代码

不同平台(windows,mac,iOS)支持的汇编语言是不一样的,生成只支持iOS平台的代码,指定架构 模拟器(i386),32bit(armv7),64bit(arm64)

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp

将Objective-C代码转换为C\C++代码
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件

不编译指定文件,在Xcode->TARGETS->Build Phases->Compile Sources删除不想编译的文件

查看对象的内存地址:打印变量的内存地址,在Xcode工具栏Debug->Debug Workflow->View Memory

一个16进制位代表4个2进制位,2个16进制位代表8个2进制位,即一个字节

你可能感兴趣的:(常用的LLDB指令)