科普:开发流程
一个项目开发:项目经理 + 产品经理 + 程序员 + 测试(可能有)--->(开发团队)
产品经理提出来需求 --->>> 项目经理分配任务 ---> 程序员开发 --->>> 测试部门提交--->>> 项目经理发布任务
gdb调试:
假设当前我们有mycode.c文件
#include<stdio.h>
int addTOTop(int top)
{
int res = 0;
int i = 1;
for(;i <= top;i++)
{
res += i;
}
return res;
}
int main()
{
printf("debug begin\n");
int top = 100;
int sum = addTOTop(top);
printf("sum:%d\n",sum);
printf("debug end\n");
return 0;
}
和对应的makefile文件用来做演示:
mycode:mycode.c
gcc -o $@ $^ -g
.PHONY:clean
clean:
rm -rf mycode
gdb mycode
可以查看mycode为名的可执行程序!(此时进入gdb交互模式)
gdb的基本操作:
- 输入q可以退出!
- 输入l / list可以查看该可执行程序的源码!(默认显示十行,如果此时未显示完全,继续按回车即可!)(但是有时候不是从第一行开始显示!如果想要从第一行开始显示,直接l0!)
- l 1 从第一行开始;l 2 从第二行开始!
- l 0之后只会默认显示10行;此时gdb会默认记录使用过的代码,因此此时直接回车会默认执行l选项!
- l + 函数名可以查看对应函数的代码!例如 ---> l addTOP
- r --->表示运行程序!
- 设置断点:b 19(b+ 行号!)(在第19行处打断点)
1、查看断点的信息
-
info b
此时可以查看断点信息!
- 第一行的Num表示断点的编号!
- Enb表示是否开启
- Address表示断点的地址
- What显示断点位于程序的哪个位置
2、删除断点
- 删除的时候使用d + 断点编号来删除(不能用行号!)
d 1
如果我们设置好断点后将gdb关闭,然后重新打开gdb,此时我们设置的断点会消失!
设置完断点后再使用r运行程序,会自动运行到我们设置的断点处!