首先确保系统包是最新的,避免因旧版本依赖导致安装或运行问题:
sudo yum update -y
C++程序的编译和调试需要GCC编译器、G++(C++编译器)和Make工具。通过Development Tools组可一键安装这些工具:
sudo yum groupinstall -y "Development Tools"
或单独安装:
sudo yum install -y gcc gcc-c++ make
安装完成后,验证版本:
gcc --version # 查看GCC版本
g++ --version # 查看G++版本
make --version # 查看Make版本
GDB(GNU调试器)是Linux下最常用的C++命令行调试工具,通过以下命令安装:
sudo yum install -y gdb
安装完成后,验证GDB版本:
gdb --version
调试C++程序时,必须在编译时添加-g选项,该选项会将源代码、变量名、行号等信息嵌入可执行文件,使GDB能关联源代码进行调试。
示例:创建一个hello.cpp文件,内容如下:
#include <iostream>
int main() {
int a = 10;
int b = 20;
int sum = a + b;
std::cout << "Sum: " << sum << std::endl;
return 0;
}
编译时添加-g选项:
g++ -g -o hello hello.cpp
-o hello指定输出文件名为hello,-g生成调试信息。
启动GDB并加载可执行文件:
gdb ./hello
进入GDB交互界面后,常用命令如下:
main函数开头):(gdb) break main
或简写:(gdb) b main
(gdb) run
或简写:(gdb) r
next(或n):执行下一行代码,不进入函数内部;step(或s):执行下一行代码,进入函数内部(如调用std::cout时会进入其实现)。a、sum):(gdb) print a
或简写:(gdb) p a
main到std::cout的调用过程):(gdb) backtrace
或简写:(gdb) bt
(gdb) continue
或简写:(gdb) c
(gdb) quit
sudo yum install -y valgrind
valgrind --leak-check=full ./hello
--leak-check=full会详细显示内存泄漏的位置和大小。devtoolset安装。例如安装devtoolset-9:sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9-gcc*
scl enable devtoolset-9 bash # 激活新版本GCC
gcc --version # 验证GCC版本
若使用Visual Studio Code(VSCode),可通过以下步骤配置图形化调试:
.vscode/launch.json文件,内容如下:{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/hello", // 可执行文件路径
"args": [], // 命令行参数
"stopAtEntry": false,
"cwd": "${workspaceFolder}", // 工作目录
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb", // GDB路径
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
-g选项,按F5启动调试,即可通过VSCode界面设置断点、查看变量等。通过以上步骤,你可在CentOS上完成C++调试工具的基础配置,并使用GDB进行命令行调试。如需更便捷的图形化调试,可选择VSCode等IDE配合使用。