我们开发内容时的模式一般为debug模式,方便我们进行调试,而release一般是不支持调试的。
而Linux下的gcc/g++默认都是release环境,是没办法直接用gdb调试的,那么有什么解决办法嘛?
有的,兄弟有的: 在我们之前自己编写的makefile文件中:加入-g
这样make出来的可执行程序就满足进行调试的要求哩
用vim写入:区间求和小程序
#include <stdio.h>
int Sum(int s, int e)
{
int result = 0;
for(int i = s; i <= e; i++)
{
result += i;
}
return result;
}
int main()
{
int start = 1;
int end = 100;
printf("I will begin\n");
int n = Sum(start, end);
printf("running done, result is: [%d-%d]=%d\n", start, end, n);
return 0;
}
这里会显示有错误,因为C89里int是不能放在for循环里的,需要改成:
gcc mycode.c -o mycode.c -std=c99 -g
有兄弟发现gdb好难用呀,有木有更加简单好用的呢? 有的,兄弟有的: 安装cgdb:
sudo yum install -y cgdb
先使用cgdb+可执行程序名进入cgdb
指令罗列:
可见代码区第五行被标红,说明第五行被打了断点
显示断点编号为1,位置为mycode.c的第五行
info b 显示没有断点了
走函数还是不走函数呢?
直接走到第17行,跳过函数
可以看到,输入s就进入到了函数内部
初始位置在第16行(打断点的位置)按下s后进入函数,再按下finish就直接走完函数进程,回到第16行。
当前行
直接执行到 第n行
每次gdb操作后都在屏幕上显示变量名的值
(删除方式和删断点一致)