在配置C++调试环境前,需确保系统为最新状态并安装必要的基础工具:
sudo yum update -y,同步系统软件包至最新版本,避免兼容性问题。sudo yum groupinstall -y "Development Tools"安装GCC编译器、Make工具等基础开发组件,这是编译C++程序的前提。C++程序需通过G++(GCC的C++扩展)编译,运行sudo yum install -y gcc-c++安装。安装完成后,通过g++ --version验证是否成功(显示版本号即为成功)。
GDB是CentOS下最常用的C++命令行调试工具,运行sudo yum install -y gdb安装。安装后,通过gdb --version验证(显示版本号即为成功)。
调试需在编译时包含调试符号(Debug Symbols),使用-g选项让编译器将源代码信息嵌入可执行文件。例如,编译hello.cpp:
g++ -g -o hello hello.cpp 其中,-g表示生成调试信息,-o hello指定输出文件名为hello。若未加-g,GDB无法显示源代码细节。
通过gdb ./hello命令启动GDB并加载可执行文件,进入GDB交互界面(提示符为(gdb))。
break main:在main函数开头设置断点;break hello.cpp:10:在hello.cpp文件的第10行设置断点。run(或简写r)启动程序,若程序需要命令行参数,可追加(如run arg1 arg2)。next(或简写n):执行下一行代码,不进入函数内部;step(或简写s):执行下一行代码,进入函数内部(用于调试函数逻辑)。print variable_name(或简写p variable_name),例如print num查看变量num的值。backtrace(或简写bt),显示当前函数的调用层次(用于分析程序崩溃时的调用路径)。continue(或简写c),让程序继续运行至下一个断点或结束。quit(或简写q),退出调试会话。若需图形化调试界面,可通过VS Code配置C++调试:
sudo yum install -y code安装(需提前配置Microsoft yum源)。launch.json: .vscode目录(在项目根目录下);launch.json文件,内容如下(以调试hello程序为例):{ "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 } ] } ] } hello.cpp,在代码行号左侧点击设置断点,按下F5即可启动调试(VS Code会自动调用GDB)。若项目需要特定版本的GCC(如C++17及以上特性需GCC 7+),可通过Devtoolset安装:
sudo yum install -y centos-release-scl;sudo yum install -y devtoolset-10-gcc*;scl enable devtoolset-10 bash,此时g++ --version将显示GCC 10版本。exit即可返回原环境。若需检测内存泄漏、非法访问等问题,可使用Valgrind工具:
sudo yum install -y valgrind;valgrind --leak-check=full ./hello(--leak-check=full表示详细显示内存泄漏信息)。