GDB简单调试方法

1. 列文件清单

列出3到6行代码:



2. run执行程序;利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。

3. 设置启动参数使用命令: set args -st=1




4. 利用print 命令可以检查各个变量的值。

注:print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。


表达式除了包含你程序中的变量外,还可以包含以下内容:
a) 对程序中函数的调用
(gdb) print find_entry(1,0)
b) 数据结构和其他复杂对象
(gdb) print *table_start
$8={e=reference=’\000’,location=0x0,next=0x0}
c) 值的历史成分
(gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值)
d) 人为数组
人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:
base@length
因此,要想显示在h后面的10个元素,可以使用h@10:
(gdb)print h@10
$13=(-1,345,23,-234,0,0,0,98,345,10)

4. 断点设置
利用break命令(可以简写为b)在调试的程序中设置断点
该命令有如下四种形式:
a) break line-number 使程序恰好在执行给定行之前停止。
b) break function-name 使程序恰好在进入指定的函数之前停止。
c) break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止。
d) break routine-name 在指定例程的入口处设置断点

注:从断点继续运行,执行countinue 命令(可以简写为c)


5. 断点管理
a) 显示当前gdb的断点信息:

b) 删除指定的某个断点

c) 禁止使用某个断点

d) 允许使用某个断点


6. 变量的检查和赋值
a) whatis:识别数组或变量的类型

b) ptype:比whatis的功能更强,他可以提供一个结构的定义

c) set variable:将值赋予变量


7. 单步执行
a) next
不进入的单步执行

b) step
进入的单步执行


注:如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish。

8. 函数的调用
a) call name 调用和执行一个函数

b) finish 结束执行当前函数,显示其返回值(如果有的话)

9. quit退出gdb程序



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值