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

(7)监视值变动watch expression(当你运行run后,你想知道哪些值在运行中被改变了,可以设置此)

(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个字节

 

(14)帮助[help 指令名]

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值