官网
推荐使用谷歌浏览器(自带翻译)
重启
1 | (lldb) process launch |
带参数重启
1 | (lldb) process launch -- <args> |
在启动前为进程设置环境变量
1 | (lldb) settings set target.env-vars DEBUG=1 |
在启动前为进程取消设置环境变量
1 | (lldb) settings remove target.env-vars DEBUG |
附加到进程ID为123的进程
1 | (lldb) process attach --pid 123 |
附加到名为“a.out”的进程。
1 | (lldb) process attach --name a.out |
等待名为“a.out”的进程启动并附加
1 | (lldb) process attach --name a.out --waitfor |
在当前选定的线程中执行源代码级别的单个步骤(就是下一步要执行的代码)
1 | (lldb) thread step-in |
在当前选定的线程中执行源代码级单步执行
1 | (lldb) thread step-over |
在当前选定线程中执行指令级的单步骤。
1 | (lldb) thread step-inst |
在当前选定的线程中执行指令级单步执行。
1 | (lldb) thread step-inst-over |
跳出当前选择的线程
1 | (lldb) thread step-out |
运行到第12行或者控件离开当前函数
1 | (lldb) thread until 12 |
在对象C函数-[NSString stringWithFormat:]处设置断点
1 | (lldb) breakpoint set --name "-[NSString stringWithFormat:]" |
在count的所有Objective-C方法上设置断点
1 | (lldb) breakpoint set --selector count |
设置条件断点
1 |
|
列出所有断点
1 | (gdb) info break |
删除断点
1 | (lldb) breakpoint delete 1 |
禁用断点
1 | (lldb) breakpoint disable 1 |
启用断点
1 | (lldb) breakpoint enable 1 |
显示当前帧的参数和局部变量
1 | (lldb) frame variable |
显示当前帧的局部变量
1 | (lldb) frame variable --no-args |
显示局部变量“bar”的内容
1 | (lldb) frame variable bar |
显示格式为十六进制的局部变量“bar”的内容
1 | (lldb) frame variable --format x bar |
显示全局变量“baz”的内容
1 | (lldb) target variable baz |
显示在当前源文件中定义的全局/静态变量
1 | (lldb) target variable |
在内存中打印一个整数数组,假设我们有一个类似“int*ptr”的指针
1 | (lldb) parray 10 ptr |
打印对象的ObjC“描述”
1 | (lldb) expr -o -- [SomeClass returnAnObject] |
调用函数以便可以在函数的断点处停止
1 | (lldb) expr -i 0 -- function_with_a_breakpoint() |
调用崩溃的函数,并在函数崩溃时停止
1 | (lldb) expr -u 0 -- function_which_crashes() |
列出程序中的线程
1 | thread list |
选择thread1作为后续命令的默认线程
1 | (lldb) thread select 1 |
显示当前线程的堆栈回溯
1 | (lldb) thread backtrace |
显示所有线程的堆栈回溯
1 | (lldb) thread backtrace all |
回溯当前线程的前五帧
1 | (lldb) thread backtrace -c 5 |
列出有关当前线程中当前选定帧的信息
1 | (lldb) frame info |
选择称为当前堆栈帧的堆栈帧
1 | (lldb) up |
选择当前堆栈帧调用的堆栈帧
1 | (lldb) down |
使用相对偏移选择不同的堆栈帧
1 | (lldb) frame select --relative 2 |
显示当前线程的通用寄存器
1 | (lldb) register read |
将新的十进制值“123”写入当前线程寄存器“rax”
1 | (lldb) register write rax 123 |
显示当前线程的所有寄存器集中的所有寄存器
1 | (lldb) register read --all |
显示当前线程中名为“rax”、“rsp”和“rbp”的寄存器的值
1 | (lldb) register read rax rsp rbp |
显示当前线程中名为“rax”的寄存器的值,格式为二进制
1 | (gdb) p/t $rax |
从地址0xbfff3c0读取内存并显示4个十六进制uint32的值1
2
3
4
5
6
7
8(lldb) memory read --size 4 --format x --count 4 0xbffff3c0
(lldb) me r -s4 -fx -c4 0xbffff3c0
(lldb) x -s4 -fx -c4 0xbffff3c0
LLDB now supports the GDB shorthand format syntax but there can't be space after the command:
(lldb) memory read/4xw 0xbffff3c0
(lldb) x/4xw 0xbffff3c0
(lldb) memory read --gdb-format 4xw 0xbffff3c0
从表达式“argv[0]”开始读取内存
1 | (lldb) memory read `argv[0]` |
从地址0xbfff3c0读取512字节的内存,并将结果以文本形式保存到本地文件
1 | (lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0 |
将从0x1000开始到0x2000结束的二进制内存数据保存到文件中
1 | (lldb) memory read --outfile /tmp/mem.bin --binary 0x1000 0x2000 |
获取有关特定堆分配的信息(仅在macOS上可用)
1 | (lldb) command script import lldb.macosx.heap |
获取有关特定堆分配的信息,并将结果强制转换为可以推断的任何动态类型(仅在macOS上可用)
1 | (lldb) command script import lldb.macosx.heap |
在块的任何位置查找包含C字符串的所有堆块(仅在macOS上可用)
1 | (lldb) command script import lldb.macosx.heap |
分解当前帧的当前函数
1 | (lldb) disassemble --frame |
反汇编任何名为main的函数
1 | (lldb) disassemble --name main |
分解地址范围
1 | (lldb) disassemble --start-address 0x1eb8 --end-address 0x1ec3 |
从给定地址反汇编20条指令
1 | (lldb) disassemble --start-address 0x1eb8 --count 20 |
显示当前帧的当前函数的混合源代码和反汇编
1 | (lldb) disassemble --frame --mixed |
反汇编当前帧的当前函数并显示操作码字节
1 | (lldb) disassemble --frame --bytes |
列出主可执行文件和所有相关的共享库
1 | (lldb) image list |
查找可执行文件或任何共享库中的原始地址信息
1 | (lldb) image lookup --address 0x1ec4 |
查找完整的源代码行信息
1 | (lldb) image lookup -v --address 0x1ec4 |
按名称查找类型Point的信息
1 | (lldb) image lookup --type Point |
从主可执行文件和任何共享库转储所有节
1 | (lldb) image dump sections |
从主可执行文件和任何共享库转储所有符号
1 | (lldb) image dump symtab |
搜索关键字的命令帮助
1 | (lldb) apropos keyword |
将文本回显到屏幕上
1 | (lldb) script print "Here is some text" |
以上内容来自于百度翻译
如有需要请自查官网
官网
推荐使用谷歌浏览器(自带翻译)