基本操作
生成包含调试信息的可执行文件
gcc -g test.c -o test
进入gdb
调试
gdb test
查看所载入的文件
(gdb) l
设置断点
在程序第六行设置断点(breakpoint
)
(gdb) b 6
查看断点
(gdb) info b
运行程序
(gdb) r
查看栈信息
(gdb) bt
查看变量值
variable
为变量名称
(gdb) p variable
单步运行
单步运行有两种,”n
“(next
)和”s
"(step
),“s
“可以调试程序直接进入调用函数,而”n
"不行。
(gdb) n
or
(gdb) s
恢复程序运行
(gdb) c
工作环境相关命令
gdb
工作环境相关命令
命令格式 | 含义 |
---|---|
set args 运行时的参数 |
指定运行时参数,如 set args 2 |
show args | 查看设置好的运行参数 |
Path dir | 设定程序的运行路径 |
show paths | 查看程序的运行路径 |
set environment var [=value] | 设置环境变量 |
show environment [var] | 查看环境变量 |
cd dir | 进入dir 目录 |
Pwd | 显示当前目录 |
shell command | 运行shell 的command 命令 |
设置断点与恢复命令
gdb
设置断点与恢复相关命令
命令格式 | 含义 |
---|---|
info b | 查看所有断点 |
break[文件名:]行号或函数名<条件表达式> | 设置断点 |
tbreak[文件名:]行号或函数名<条件表达式> | 设置临时断点,到达后自动删除 |
delete[断点号] | 删除指定断点,其断点号为"info b "中的第一栏。若缺省断点号默认删除所有断点。 |
disable[断点号] | 停止指定断点,可以查看,功能与delete 类似。 |
enable[断点号] | 激活断点。 |
condition[断点号]<条件表达式> | 修改对应断点的条件 |
ignore[断点号] | 忽略对应断点num 次 |
Step | 单步恢复程序运行,且进入函数调用 |
Next | 单步恢复程序运行,但不进入函数调用 |
Finish | 运行程序,直到当前函数完成返回 |
C | 继续执行函数,直到函数结束或遇到新的断点 |
gdb中源码查看相关命令
gdb
中源码查看相关命令
命 令 格 式 | 含义 |
---|---|
list <行号> | <函数名> |
查看指定位置代码 |
file [文件名] | 加载指定文件 |
forward-search 正则表达式 | 源代码的前向搜索 |
reverse-search 正则表达式 | 源代码的后向搜索 |
dir DIR | 将路径 DIR 添加到源文件搜索的路径的开头 |
show directories | 显示源文件的当前搜索路径 |
info line | 显示加载到 gdb 内存中的代码 |
gdb中查看运行数据相关命令
gdb
查看运行数据相关命令
命 令 格 式 | 含义 |
---|---|
print 表达式 | 变量 |
x <n/f/u> | 查看内存变量内容。其中 n 为整数表示显示内存的长度,f 表示显示的格式,u 表示从当前地址往后请求显示的字节数 |
display 表达式 | 设定在单步运行或其他情况中,自动显示的对应表达式的内容 |
backtrace | 查看当前栈的情况,即可以查到哪些被调用的函数尚未返回 |
gdb 中修改运行参数相关命令
文章目录
参考:《嵌入式Linux应用程序开发标准教程》作者:华清远见