gdb简易教程

启动和退出gdb

只有在编译器gcc编译时加入 -g 选项才可以使用gdb进行调试

gcc -g test.c -o test

结束调试时,使用 quit 返回Linux提示符

显示和查找程序源代码

list:显示10行代码.再次运行显示接下来10行

list 5, 10:显示第5-10行的代码

list test.c:5,10:显示源文件test.c的第5-10行代码,用于调试含有多个文件的程序

list get_sum:显示get_sum函数周围的代码

在调试过程中运行linux命令

(gdb) shell ls

search/forward s:查找从当前行向后的第一个匹配的字符串s

reverse-search s:向前

执行程序和获取帮助

run 程序开始执行

continue 暂停后继续执行
next 执行下一条语句

(gbd)help list
(gdb)help all

列出list命令的帮助信息,列出gdb所有命令的帮助信息

设置和管理断点

break 5:在第五行设置断点

break temp:在函数temp开始处设置断点

break 行号/函数名 if 条件 :符合条件时,程序暂停

watch 表达式 :当表达式中的值发生改变的时候,程序暂停

info breakpoints查看当前设置的中断点

在这里插入图片描述

Num列表示断点的编号;Type表明列表中项目的类型;Disp列表面断点是否生效一次后失去作用,是就为dis,不是为keep;Enb表示当前中断点是否有效,y有效,n无效;Address表示中断点在程序中的逻辑地址;what指明中断发生在哪个函数的第几行

disable n:使第n个中断点失效

enable n:使第n个中断点重新有效

删除断点

在这里插入图片描述

查看和设置变量的值

print 变量或者表达式;
print 变量=;  //对变量进行赋值
print 表达式@要打印的值的个数n;   //打印以表达式值开始的n个数

whatis 变量或表达式:显示变量或者表达式值的数据类型

set 变量=值 给变量赋值 和print i=300效果相同

控制程序的执行

continue 继续运行

kill 结束调试

next和step 都是单步执行源代码语句

区别: 遇到函数调用,next当作一条语句来执行,step会跟踪进入被调用的函数

nexti和stepi单步执行一条机械指令

和step 都是单步执行源代码语句

区别: 遇到函数调用,next当作一条语句来执行,step会跟踪进入被调用的函数

nexti和stepi单步执行一条机械指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Syhaun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值