欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

linux下gdb调试circle_x.c

程序员文章站 2022-03-18 09:39:36
终端使用gdb调试circle_x.cgdb就是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直接输出结...

终端使用gdb调试circle_x.c

gdb就是GNU debugger
通过调试circle_x.c演示gdb调试器的使用。

调试使用的源码circle_x.c

实现输入半径得到面积的功能。
源码如图示。
linux下gdb调试circle_x.c
源码实现效果如图示。
linux下gdb调试circle_x.c

生成可调试文件

通过gcc -g circle_x.c -o circle_x.debug命令生成可调试文件
linux下gdb调试circle_x.c

gdb circle_x.debug进入调试环境

gdb circle_x.debug 命令进入调试环境
linux下gdb调试circle_x.c

run 命令执行运行过程

直接运行,如无bug直接输出结果
linux下gdb调试circle_x.c

break area_print 函数断点

break area_print 或 break 7设置该函数断点,提示断点已创建在0x400621这个函数地址。
linux下gdb调试circle_x.c

run 命令进入调试

run命令进入调试过程,按提示输入半径,回车,执行到断点位置。
linux下gdb调试circle_x.c

n 命令执行下一条命令

n命令,next的意思,下一条命令。
输入print x命令发现x当前不存在,可能的原因是main函数的x内存已经释放,因此在第19行设置断点,同时输入n命令继续执行下一条命令,发现即执行area_print函数的第一句执行c.area的面积。
linux下gdb调试circle_x.c

print 打印输出变量

print c.area 输出变量值
linux下gdb调试circle_x.c

c命令跳转到下一个断点

c 是continue的意思,程序执行到断点19行,剩余return 0未执行。
linux下gdb调试circle_x.c

n 命令继续执行到程序结束

输入 n 回车
linux下gdb调试circle_x.c

q 命令退出调试

输入q命令,按提示y回车退出gdb调试
linux下gdb调试circle_x.c

clear 命令删除断点

clear 行或clear 函数名
linux下gdb调试circle_x.c

delete breakpoints删除所有断点

linux下gdb调试circle_x.c

info命令和info breakpoints命令

info命令会列出可以显示的相关信息,info breakpoints显示断点个数。或简写为info break
linux下gdb调试circle_x.c

save breakpoint xx.dp 保存断点

linux下gdb调试circle_x.c

s单步和n单步的区别

s: 执行一bai行源程序代码,如果此行代du码中有函数调用,则进入zhi该函数;n: 执行dao一行源程序代码,此行代码中的函数调用也一并执行。s 相当于其它调试器中的“Step Into (单步跟踪进入)”;n 相当于其它调试器中的“Step Over (单步跟踪)”。

本文地址:https://blog.csdn.net/natureworld2010/article/details/107329388