温馨提示×

C++在Ubuntu上如何调试

小樊
38
2025-10-08 16:07:31
栏目: 编程语言

C++在Ubuntu上的调试方法

1. 使用GDB(GNU调试器)——命令行调试

GDB是Ubuntu下最常用的命令行调试工具,适合习惯终端操作的用户。

  • 安装GDB:若未安装,通过终端执行sudo apt update && sudo apt install gdb安装。
  • 编译程序(生成调试信息):使用g++编译时必须添加-g选项,例如g++ -g -o myprogram myprogram.cpp-g会保留变量名、行号等调试信息)。
  • 启动GDB:终端输入gdb ./myprogram,加载可执行文件。
  • 常用调试命令
    • break <函数名/行号>:设置断点(如break mainmain函数开头断住,break myprogram.cpp:20在第20行断住);
    • run(或r):启动程序,遇断点暂停;
    • next(或n):单步执行,不进入函数内部;
    • step(或s):单步执行,进入函数内部;
    • print <变量名>(或p <变量名>):打印变量当前值(如print x);
    • backtrace(或bt):显示函数调用栈(查看程序执行路径);
    • continue(或c):继续执行至下一个断点;
    • quit(或q):退出GDB。

2. 使用Visual Studio Code(VS Code)——图形化调试

VS Code是轻量级编辑器,通过扩展支持C++调试,适合偏好图形界面的用户。

  • 准备工作:从官网下载安装VS Code,打开扩展市场搜索并安装C/C++(Microsoft发布,提供C++语法支持和调试功能)。
  • 配置调试环境
    • 在项目根目录创建.vscode文件夹;
    • 新建tasks.json文件(用于定义编译任务),内容示例如下(指定编译器、调试信息选项):
      {
        "version": "2.0.0",
        "configurations": [
          {
            "label": "g++ build active file",
            "type": "shell",
            "command": "g++",
            "args": ["-g", "-O0", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
            "group": {"kind": "build", "isDefault": true}
          }
        ]
      }
      
    • 新建launch.json文件(用于配置调试器),内容示例如下(指定调试器类型、可执行文件路径):
      {
        "version": "0.2.0",
        "configurations": [
          {
            "name": "g++ build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [{"description": "Enable pretty-printing", "text": "-enable-pretty-printing", "ignoreFailures": true}],
            "preLaunchTask": "g++ build active file"
          }
        ]
      }
      
  • 调试操作:打开C++源文件,在代码行号左侧点击设置断点;按下F5键启动调试,程序会在断点处暂停,通过顶部调试工具栏控制执行(如单步跳过、进入函数、继续运行),下方调试面板可查看变量值、调用栈等信息。

3. 其他调试工具

  • CLion:JetBrains推出的专业C++ IDE,内置强大调试功能(如智能断点、变量监视、内存视图),适合大型项目。安装后直接导入项目,配置GDB/LLDB调试器即可使用。
  • Valgrind:内存调试工具,用于检测内存泄漏、越界访问等问题。安装后执行valgrind --leak-check=full ./myprogram,会输出内存错误详情(如未释放的内存块)。
  • strace:系统调用追踪工具,用于分析程序与操作系统交互的过程(如文件操作、网络请求)。执行strace ./myprogram,可查看程序执行的系统调用序列。

0