为什么调试的时候需要编译选项中添加 -g

首先你要明白什么是 GCC ?

IDE :集成开发环境
IDE 由编辑器,编译器,调试器等工具一起组成。
GCC是一种应用十分广泛的编译器。

编译与调试的区别?
编译是编译器在你程序没有运行的时候帮你检查错误,看你的程序有没有语法错误.
调试是你用调试器在程序运行以后,根据运行状况来检查错误.
编译成功是调试的前提条件.

在centos 环境下,你已经写好了一个test.c 文件.现在你执行这个操作

gcc test.c -o test

gcc编译的步骤
1.0:预处理
gcc -E test.c -o test.i
2.0:编译为汇编代码
gcc -S test.i -o test.s
3.0:汇编
gcc -c test.s -o test.o
4.0:连接
gcc test.o -o test

这个也能进行编译,检查你的文件是否存在语法错误.但是无法进行gdb 调试.
要进行调试就要写成下面的代码

gcc -g test.c -o test

加上-g选项以后,gcc在编译是会做以下额外的操作:

  1. 创建符号表,符号表包含了程序中使用的变量名称的列表。
  2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

什么是GDB

GDB是一种调试器。
GDB 常用的调试命令
1.0 进入gdb
首先进行了gcc 操作,如果是gcc -g test.c 那么进入 命令是 gdb a.out
如果是gcc -g test.c -o test,那么进入命令是 gdb test
2.0 打断点
break/b 0 这个就是在第十行打了一个断点,程序执行在断点之前,就是执行到第九行。
3.0 程序执行
run/r
4.0 查看段点信息
info b

你可能感兴趣的:(Linux)