LLDB
| 命令 | 描述 | 
| thread backtrace(bt) | 查看各级函数调用及参数 | 
| thread step-out(finish) | 连续运行到当前函数返回为止,然后停下来等待命令 | 
| frame(或f) 帧编号 | 选择栈帧 | 
| info(或i) locals | 查看当前栈帧局部变量的值 | 
| list(或l) | 列出源代码,接着上次的位置往下列,每次列10行 | 
| list 行号 | 列出从第几行开始的源代码 | 
| list 函数名 | 列出某个函数的源代码 | 
| next(或n) | 执行下一行语句 | 
| print(或p) | 打印表达式的值,通过表达式可以修改变量的值或者调用函数 | 
| quit(或q) | 退出 gdb调试环境 | 
| set var | 修改变量的值 | 
| start | 开始执行程序,停在 main函数第一行语句前面等待命令 | 
| step(或s) | 执行下一行语句,如果有函数调用则进入到函数中 | 
| break(或b) 行号 | 在某一行设置断点 | 
| break 函数名 | 在某个函数开头设置断点 | 
| break ... if ... | 设置条件断点 | 
| continue(或c) | 从当前位置开始连续运行程序 | 
| delete breakpoints 断点号 | 删除断点 | 
| display 变量名 | 跟踪查看某个变量,每次停下来都显示它的值 | 
| disable breakpoints 断点号 | 禁用断点 | 
| enable 断点号 | 启用断点 | 
| info(或i) breakpoints | 查看当前设置了哪些断点 | 
| run(或r) | 从头开始连续运行程序 | 
| undisplay 跟踪显示号 | 取消跟踪显示 | 
| watch | 设置观察点 | 
| info(或i) watchpoints | 查看当前设置了哪些观察点 | 
| x | 从某个位置开始打印存储单元的内容,全部当成字节来看,而不区分哪个字节属于哪个变量 | 
常用命令
breakpoint (b) - 设置断点,也就是程序暂停的地方
run (r) - 启动目标程序,如果遇到断点则暂停
step (s) - 进入下一条指令中的函数内部
backtrace (bt) - 显示当前的有效函数
frame (f) - 默认显示当前栈的内容,可以通过 `frame arg` 进入特定的 frame(用作输出本地变量)
next (n) - 运行当前箭头指向行
continue (c) - 继续运行程序直到遇到断点。
1.编译
gcc -g test.c -o test
2.运行lldb
lldb test
3.查看所有代码
list line_number
例如
list 1 //显示从第1行开始的10行代码
如果要继续显示,可以输入list,显示下10行
或者直接继续回车,空输入,lldb默认继续执行上一条指令
4.执行
run
程序会执行完成,输出结果
5.断点
b main //对函数设置断点
b 15	 //对某一行设置断点
或者
breakpoint main
breakpoint 15
6.查看栈帧
var