怎样在Linux上配置C++调试工具
调试C++程序需安装编译器(生成带调试信息的可执行文件)、调试器(核心调试工具)及辅助工具(内存/性能分析)。
g++)或Clang(clang++),多数Linux发行版默认包含。若未安装,可通过包管理器安装(如Ubuntu/Debian用sudo apt install g++,Fedora用sudo dnf install gcc-c++)。sudo apt install gdb,Fedora用sudo dnf install gdb,Arch Linux用sudo pacman -S gdb。sudo apt install valgrind);-fsanitize=address选项);-fsanitize=thread选项)。调试信息是GDB等工具定位变量、函数的关键,编译时需添加**-g选项**。例如:
g++ -g -o my_program my_program.cpp # 生成带调试信息的可执行文件my_program
若使用CMake构建项目,需在CMakeLists.txt中设置set(CMAKE_BUILD_TYPE Debug),再执行cmake .. && make。
GDB是命令行调试工具,以下是核心操作流程:
gdb ./my_program(加载可执行文件)。break main:在main函数开头设置断点;break my_program.cpp:20:在第20行设置断点;break MyClass::myMethod:在类的成员函数处设置断点。run(无参数)或run arg1 arg2(带命令行参数)。next(或n):执行下一行代码,不进入函数内部;step(或s):执行下一行代码,进入函数内部(用于跟踪函数逻辑)。print variable_name(或p variable_name):打印变量的当前值(如p x打印变量x的值);info locals:显示当前作用域的所有局部变量;info args:显示当前函数的参数列表。backtrace(或bt):显示程序的调用栈(从当前函数到main函数的调用路径),用于定位函数调用顺序。continue(或c):继续执行程序,直到遇到下一个断点或程序结束。quit(或q)。IDE提供图形化界面,简化调试流程,适合大型项目。常用IDE及配置方法:
program(可执行文件路径)、args(命令行参数)、preLaunchTask(编译任务,如g++ -g -o my_program my_program.cpp);Executable(可执行文件路径)、Working directory(工作目录);valgrind --leak-check=full ./my_program(--leak-check=full显示详细的内存泄漏信息)。-fsanitize=address选项,运行程序即可(如./my_program),ASan会在程序崩溃时输出详细的错误信息(如缓冲区溢出位置)。-fsanitize=thread选项,运行程序即可(如./my_program),TSan会输出数据竞争的具体信息(如线程冲突的位置)。-g选项,否则调试器无法获取变量、函数等信息;break不能写成Break);g++ -g)正确生成带调试信息的可执行文件;