C++步步为营

GCC编译器和GDB调试器

2019-08-03  本文已影响0人  世界上的一道风

GNU、GCC、GDB


后缀含义

文件后缀 + 说明

.c
C语言源文件

.a
有目标文件构成的档案库文件

.C  .cc .cxx  .cpp
C++源程序

.h
源程序包含的头文件

.i
经过预处理的C程序

.ii
经过预处理的C++程序

.m
Objective-C源程序

.o
变异后的目标文件(二进制文件,但未链接,不能直接执行)

.s
汇编语言的程序

.S
经过预处理的汇编程序

GCC编译器


GCC常用编译选项说明

*-O 选项
gcc对源代码编译时进行优化,这些优化在大多数情况下都会是程序执行更快


GCC编译的函数库

函数库分为静态库和动态库两种。
静态库,指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件较大,但运行时就不需要其他的库文件了。后缀一般为.a
动态库,与静态库相反,在编译链接时没有把库文件的代码加入到可执行文件中去,而是在程序执行时链接文件加载库,这样可以节省系统的开销。动态库的后缀一般为.so

项目          Linux          Windows
目标模块    func.o           FUNC.obj
静态库 lib.a                 LIB.lib
动态库 lib.so                LIB.dll
程序     Program                 Program.exe

GDB调试

file:指定要调试的可执行程序
kill:终止正在调试的可执行程序
next:执行一行源代码,但不进入函数内部
list:部分列出源代码
step:执行一行源代码,并不进入函数内部
quit:结束gdb调试任务
watch:可以检查一个变量的值,而不管他何时被改变
print:打印表达式的值到标准输出
break N:在指定的第N行源代码设置断点
break funcname
break filename:linenum
break filename:funcname
info break:显示当前的断点清单,包括到达断点处的次数等
info files:显示被调试的详细信息
info func:显示所有的函数名
info local:显示当函数中的局部变量的信息
info prog:显示被调试程序的执行状态
info var:显示所有的全局和静态变量的名称
make:在不退出gdb的情况下运行make工具
shell:在不退出gdb的情况下运行shell命令
continue:继续执行正在调试的程序

上一篇下一篇

猜你喜欢

热点阅读