单独来阅读gcc源码,恐怕没有哪个不头痛的,如果我们把gcc编译成可调试的,然后在gdb下一步一步跟踪,大概要有趣的多,但遗憾的是,gcc 源码的配置项却缺少直接编译成可调试的选项,看来只有动动歪脑子了,这里已 3.4.4 版为例。
把源码解压,在源码所在目录有一个configure 文件,用写字板打开,查找CFLAGS字窜,你会发现有这样的内容:
CFLAGS=${CFLAGS-"-g -O2"}
把其中的-o2 去掉,当把所有的CFLAGS 都做同样的动作,(也可以这样做:export CFLAGS=-g )然后:
./configure
Make
make install
gcc 默认安装在/usr/local/bin目录下,
转到该目录创建一个测使用c文件:
test.c:
int main()
{
int a=0;
return 0;
}
启动gdb, 装入gcc,然后找到入口点main
gdb>file gcc
gdb>l main
gdb> b main
gdb>set args test.c
gdb>r
这是就会进入到断点出,这样就可以跟踪代码了