Linux系统GCC程序编译,GNU程序调试

来源:互联网 发布:中国推理小说知乎 编辑:程序博客网 时间:2024/06/01 17:25

GCC编译过程:通过后缀名判断文件类型

预处理:展开宏文件

编译

汇编

链接

.c C语言源代码文件

.o 编译后的目标文件

.s 汇编语言源代码文件

-o:eg:gcc hello.c -o hello

-g:eg:gcc -g hello.c -o hello生成调试工具所需要的符号信息

-c:eg:gcc -c hello.c -o hello只编译,不生成可执行文件,输入的.c文件生成.o的目标文件

-O:eg:gcc -O hello.c -o hello对程序进行优化编译(time ./hello 可以计算程序运行的时间)

-O2:eg:gcc -O2 hello.c -o hello比-O更好的优化编译

-Idirname:将此目录加到程序头文件列表中

标准的 头文件存放在gcc编译器的文件夹中(user/include),自己写的文件没有在gcc编译器的文件夹中

方法1、把自己编写的文件存放在gcc编译文件夹中

方法2、用-Idirname(I+目录的名字)指定编译时搜索的文件夹eg:gcc -I/home.... hello.c -o hello

-Ldirname:将此目录加到库文件目录列表中(:链接时)

GDB主要完成的功能

1、启动被调试程序

2、让程序在指定位置停下来

3、当程序停下来,可以检查程序的状态(eg:变量值)

1、编译成可执行文件 gcc -g hello.c -o hello

2、启动GDB gdb hello

3、设置断点

 break mian(main函数入口处)eg:b(break简写) main

break 23(根据行号打断点)

break 文件名:行号(根据文件名和行号打断点),程序由多个文件组成

break 行号if条件:根据条件打断点eg:b 23 if i=10(行号+条件)

4、运行程序 run

5、单步运行(不进入子函数) next

6、连续运行 continue

7、单步运行(进入子函数) step

8、查看指定变量值:print  变量名

9:对指定变量进行监视:watch 变量名

10:运行程序,直到当前函数结束:finish

退出调试quit

info break:查看所有断点的信息

delete 断点编号:删除断点

l:(list简写)查看程序

0 0