centos

CentOS里gcc调试程序步骤

小樊
45
2025-09-17 16:09:52
栏目: 智能运维

CentOS下使用GCC调试程序的标准步骤

1. 安装GCC与GDB工具链

在CentOS系统中,需先确保安装了GCC编译器(用于编译程序)和GDB调试器(用于调试程序)。可通过以下命令一键安装:

# 安装GCC编译器及基础开发工具(含make、libc等)
sudo yum groupinstall "Development Tools"  
# 安装GDB调试器
sudo yum install gdb  

安装完成后,可通过gcc --versiongdb --version验证是否安装成功。

2. 编译程序时添加调试信息

使用GCC编译C/C++程序时,必须添加-g选项,该选项会在生成的可执行文件中嵌入源代码的符号信息(如函数名、变量名、行号等),这是GDB调试的基础。
示例(编译test.c生成test可执行文件):

gcc -g test.c -o test  

注意:若未添加-g选项,GDB将无法显示源代码或定位变量,调试功能将受限。

3. 启动GDB调试器

通过GDB加载编译好的可执行文件,启动调试会话:

gdb ./test  

启动后,GDB会显示版本信息及程序入口(如(gdb)提示符),此时可输入调试命令。

4. 常用GDB调试命令

调试过程中,常用命令如下(按功能分类):

5. 示例调试流程(以test.c为例)

假设有以下简单C程序(test.c):

#include <stdio.h>  
int main() {  
    int a = 5;  
    int b = 10;  
    int c = a + b;  
    printf("The sum of a and b is: %d\n", c);  
    return 0;  
}  

调试步骤

  1. 编译程序并添加调试信息:
    gcc -g test.c -o test  
    
  2. 启动GDB:
    gdb ./test  
    
  3. main函数开头设置断点:
    (gdb) break main  
    Breakpoint 1 at 0x400536: file test.c, line 5.  
    
  4. 运行程序:
    (gdb) run  
    Starting program: /root/test  
    
    Breakpoint 1, main () at test.c:5  
    5        int a = 5;  
    
  5. 单步执行(进入main函数):
    (gdb) step  
    6        int b = 10;  
    
  6. 查看变量a的值:
    (gdb) print a  
    $1 = 5  
    
  7. 继续执行程序至结束:
    (gdb) continue  
    The sum of a and b is: 15  
    [Inferior 1 (process 12345) exited normally]  
    
  8. 退出GDB:
    (gdb) quit  
    

可选:使用Devtoolset切换GCC版本

若需要使用特定版本的GCC(如CentOS 7默认GCC版本较旧),可通过Devtoolset安装新版本GCC,并切换环境:

# 安装Devtoolset(以devtoolset-11为例)
wget http://people.centos.org/tru/devtools-11/devtools-11.repo -O /etc/yum.repos.d/devtools-11.repo  
sudo yum -y --enablerepo=devtools-11-devtools-11 install devtoolset-11-gcc devtoolset-11-gcc-c++  

# 启用Devtoolset环境(临时生效)
source /opt/rh/devtoolset-11/enable  

# 验证GCC版本
gcc --version  # 应显示devtoolset-11的GCC版本(如gcc (GCC) 11.3.1 20210422)  

使用devtoolset-X-gcc(如devtoolset-11-gcc)代替gcc编译程序即可。

0
看了该问题的人还看了