🔥博客主页:小王又困了
📚系列专栏:Linux
🌟人之为学,不日近则日退
??感谢大家点赞👍收藏?评论??
目录
? ? ?在软件开发中,通常会有两种主要的构建配置:Debug(调试)和Release(发布)。这两种配置的存在是为了在不同的开发和使用阶段提供不同的优化和调试支持。以下是它们存在的主要原因:
📝调试配置:
📝发布配置:
gcc/g++编译器默认是以release的模式编译得到可执行程序,我们使用gdb是无法进行调试的。
想进行代码调试,我们就要让代码以debug的模式发布,需要加-g选项。
gcc code.c -o mycode -g
我们可以通过readelf mycode-d -S | grep debug查看mydoe-d文件中的debug信息。
? ? ?我会通过下面这段代码,来给大家演示gdb的使用。
#include <stdio.h>
int Add(int n)
{
int ret=0;
int i=0;
for(i=0;i<n;i++)
{
ret+=i;
}
return ret;
}
int main()
{
int num=50;
int sum=Add(num);
printf("%d\n",sum);
return 0;
}
📒进入gdb环境:
📒退出gdb环境:
📒显示代码:
gdb会自动记录上一次执行的指令,我们执行一次 list 后,可以直接回车,就可以看到完整的源代码。
📒查看函数:
📒运行程序:
📒设置断点:
📒查看断点:
📒删除断点:
我们在删除断点时,这里的num表示的不是行号,我们要输入要删除断点的编号。
注意:如果在调试过程中退出,那么再次进入调试环境,上一次的调试信息会丢失,即之前设置的断点都没了。
📒单步执行:
flish指令可以快速的帮我们查看问题是不是出在当前函数中。?
📒查看变量的值:
📒其他指令:
b code.c:15
在code.c这个源文件的第15行设置断点。
🎁结语:?
? ? ?本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。