linux下gdb调试circle_x.c
终端使用gdb调试circle_x.c
gdb就是GNU debugger
通过调试circle_x.c演示gdb调试器的使用。
调试使用的源码circle_x.c
实现输入半径得到面积的功能。
源码如图示。
源码实现效果如图示。
生成可调试文件
通过gcc -g circle_x.c -o circle_x.debug命令生成可调试文件
gdb circle_x.debug进入调试环境
gdb circle_x.debug 命令进入调试环境
run 命令执行运行过程
直接运行,如无bug直接输出结果
break area_print 函数断点
break area_print 或 break 7设置该函数断点,提示断点已创建在0x400621这个函数地址。
run 命令进入调试
run命令进入调试过程,按提示输入半径,回车,执行到断点位置。
n 命令执行下一条命令
n命令,next的意思,下一条命令。
输入print x命令发现x当前不存在,可能的原因是main函数的x内存已经释放,因此在第19行设置断点,同时输入n命令继续执行下一条命令,发现即执行area_print函数的第一句执行c.area的面积。
print 打印输出变量
print c.area 输出变量值
c命令跳转到下一个断点
c 是continue的意思,程序执行到断点19行,剩余return 0未执行。
n 命令继续执行到程序结束
输入 n 回车
q 命令退出调试
输入q命令,按提示y回车退出gdb调试
clear 命令删除断点
clear 行或clear 函数名
delete breakpoints删除所有断点
info命令和info breakpoints命令
info命令会列出可以显示的相关信息,info breakpoints显示断点个数。或简写为info break
save breakpoint xx.dp 保存断点
s单步和n单步的区别
s: 执行一bai行源程序代码,如果此行代du码中有函数调用,则进入zhi该函数;n: 执行dao一行源程序代码,此行代码中的函数调用也一并执行。s 相当于其它调试器中的“Step Into (单步跟踪进入)”;n 相当于其它调试器中的“Step Over (单步跟踪)”。
本文地址:https://blog.csdn.net/natureworld2010/article/details/107329388
上一篇: 现在的新零售 三年后也将变成传统零售