gdb命令语法
gdb [options]
options:
-tui :可以将屏幕分成两个部分,上面显示源代码。
app :启动gdb后直接载入程序(app是一个可以执行的程序)
更多选项参考man gdb
启动gdb之后的交互命令:交互命令支持[tab]补全
命令 | 解释 | 示例 |
file <文件名> | 加载被调试的可执行程序。 如果在调试程序所在目录下执行GDB,文件名不需要加路径 | (gdb)file gdb-sample |
r | run的缩写,运行被调试程序。 如果在这之前有设置断点,则执行到断点处。 没有设置断点就执行完整个程序。 | (gdb) r |
l | list的缩写。如果不带参数,默认显示当前行和之后的10行。list可以指定的参数如下: [linenum] 行号。 [filename:linenum] 哪个文件中的哪一行 [function] 函数名 [filename:function]哪个文件中的哪个函数 [*address] 程序运行时的语句在内存中的地址 | (gdb) list **0x804859c 地址使用info命令得到 |
[Enter] | 执行上次执行的命令 | 键盘上的回车键 |
n | 执行一行源程序代码。(Step Over) | (gdb) n |
s | 执行一行源程序代码。遇见函数调用会进入函数内部,然后一行行执行(Step Into) | (gdb) s |
f | 直到当前函数运行完毕返回再停止(finish) | 当单步执行进入了某函数,想退出函数时可以使用finish 命令 |
b | breakpoint的缩写,设置断点 b[linenum] b[function] b[*adderss] | 参考list |
d | delete breakpoint 缩写,可以删除指定断点或者所有断点 | 不指定断点号删除所有点 |
p<变量名称> | print 的缩写,显示指定变量的值,修改运行时变量的值 可以指定显示变量的格式 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 | (gdb) print /x var #以16进制显示var的值,默认10进制显示 (gdb) print var=4 #把变量var的值改为4 (gdb) print *a@10 #显示数组a中的10个元素 |
k | kill的缩写 。终止程序 | (gdb) k |
set | 可以设置语言 | (gdb) set language c++ ## 设置值当前程序语言为c++ |
show | 显示部分信息 | (gdb) show language ##产看当前调试程序的语言环境 |
whatis | 显示变量的类型 | (gdb) whatis var |
ptype | 以更为详细的方式显示变量的类型 | (gdb) ptype var |
i | info的缩写,用于显示各类信息,详细参考 “help i‘ | (gdb)i var |
display | 设置程序中断后显示的数据及格式 | (gdb)display /i $pc ##以16进制显示汇编指令 |
undisplay | 取消display设置 | (gdb)undisplay 1 |
c | continue的缩写,继续执行被调试程序。 | (gdb)c |