学习GCC & GDB

前言

工作是在windows下开发,业余时间才能玩自己喜欢的东东,一段时间不用就会生疏。随便写两段,加深记忆。

GCC

从代码到可执行文件,会经历四个阶段,对应的命令是

gcc -E test.c -o test.i 中间文件
gcc -S test.i -o test.s ASM
gcc -c test.s -o test.o OBJ
gcc test.o -o test 可执行文件

当然,可以用一行命令搞定

gcc -o test test.c

GDB

回忆一下GDB的常用命令吧l, b, r, watch, bt, n, step
陈皓巨巨那A了段教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int func(int n)
{

int sum=0,i;
for(i=0; i<n; i++)
{
sum+=i;
}
return sum;
}

main()
{
int i;
long result = 0;
for(i=1; i<=100; i++)
{
result += i;
}
printf("result[1-100] = %d /n", result );
printf("result[1-250] = %d /n", func(250) );
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
gcc -g -o test test.c 	#-g表示gdb
gdb ./test #用gdb打开
l #显示代码
b linenum #给指定行号价断点 bp
b function_name #给函数加断点
i b #info breakpoint显示断点,类似于windbg的bl
r #run
n #next
p var_name #显示变量的值
step #下一行
info locals #显示local
watch i #watch某变量
d 1 #delete breakpoint 1
c #continue
q #quit

conclusion

还是要得写几段代码玩呃,拳不离手,曲不离口。。。。


本博客欢迎转发,但请保留原作者信息
github:codejuan
博客地址:http://blog.decbug.com/