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