概述: GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)
GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由[1]。
gdb是UNIX及UNIX-like下的调试工具。该工具能启动程序,可让被调试的程序在所指定的调置的断点处停住(断点可以是条件表达式),当程序被停住时,可以检查此时程序中所发生的事,还可以改变程序,将一个BUG产生的影响修正从而测试其他BUG。
markfile,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
1.利用vim编辑hello.c 2.输入指令 gcc -E hello.c -o hello.i # 预处理 gcc -S hello.i -o hello.s #汇编 gcc -c hello.s -o hello.o #编译 gcc hello.o -o hello #链接 代码执行结果 3. 使用gdb函数 (1)首先编译生成可执行程序:
gcc -g hello.c -o hello (2)启动gdb:
gdb hello
(3)调试命令 在代码的指定位置中断,使程序在此中断。
break 在进入指定函数时停住 调试中查看代码
list n1,n2 如list 10,20,显示当前文件的10到20行 在gdb中,和调试步进相关的命令主要有如下几条:
continue 继续运行程序直到下一个断点(类似于VS里的F5) next 逐过程步进,不会进入子函数(类似VS里的F10) setp 逐语句步进,会进入子函数(类似VS里的F11) until 运行至当前语句块结束 finish 运行至函数结束并跳出,并打印函数的返回值(类似VS的Shift+F11) quit(q) 退出gdb。
4.gcc过程改为Makefile管理 vim编辑Makefile。 直接使用make ,初始只有hello.c 验证
|