gdb基本使用方法及常用命令
GNU调试器(GNU Debugger, GDB)是一个开源的源代码级的调试工具,其性能优良、功能齐全、易于使用,在嵌入式系统开发过程中扮演着越来越重要的角色。接下来是小编为大家收集的gdb基本使用方法及常用命令,希望能帮到大家。
gdb基本使用方法及常用命令
一、编译、链接成可执行文件
记得加入-g选项
gcc -g gdbtest.c -o test
二、启动gdb
gdb filename ---- 本例中是gdb test,如下图:
或者
gdb
(gdb)file filename,如下图:
三、退出
(gdb)quit
四、基本操作
(1)列出源代码list,在提示符下打入list,会出现一部分源代码,接着按回车会重复上一次命令
可以利用help list查询list的使用方法
a.list 10 -- 以第10行为中心显示
b.显示compute函数 list compute
c.列出10-15行的源代码 list 10,15
d.列出其他文件的相应行或函数
list gdbinc.h:1
list gdbinc.h:max
(2)运行程序run
如果需要参数可以在run后面跟上参数
(3)设置断点break
a.在某行设置断点 break 7
b.在某函数设置断点 break compute
c.在其他文件设置断点(行或函数名) break gdbinc.h:2 break gdbinc.h:max
d.在某个地址设置断点 break *address (当你调试的程序没有源程序时使用)
e.查询断点信息info break
f.条件断点 break <linenum>or<func> if condition
如:break 8 if a == 10
g.开启和关闭断点
disable 断点号 (关闭)
enable 断点号 (开启)
enable once 断点号 (开启一次)
enable delete 断点号(开启一次后删除)
h.删除断点
delete 断点号
clear 清除当前行的断点
i.继续执行continue,当执行到某处中断时,使其继续执行
(4)单步执行不进入函数next
(5)单步执行进入函数step
(6)终止正在调试的程序kill
(8)监视值被读rwatch expression(基本同上)
(9)在运行时打印变量的值print expression
print/F expression,其中F为格式(x--16进制,d--有符号十进制,u--无符号十进制,f--浮点格式)
(10)修改变量值set variable=value
(11)执行shell命令[shell 命令名]
(12)不退出gdb产生可执行文件[make,必须有Makefile文件]
(13)info命令(此命令用处广泛)
a.info break查看断点信息(见上面断点)
b.info args查看当前方法的参数
c.info stack查看调用堆栈
d.info source查看当前源文件的信息
e.info sources查看所有在程序中的源文件路径
(14)查看内存命令 x/<n/f/u> <addr> n、f、u是可选的参数。<addr>表示一个内存地址。
n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。
输出格式
一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
比如:上图中 x/4dw 0xbffff650 指的是显示4个单元的内容,以10进制显示,每个单元长度为4个字节
看了“gdb基本使用方法及常用命令”还想看:
3.嵌入式培训心得