ubuntu

Ubuntu下C++代码调试有哪些技巧

小樊
46
2025-06-11 23:39:21
栏目: 编程语言

在Ubuntu下调试C++代码,可以使用多种工具和方法。以下是一些常用的技巧和步骤:

使用GDB调试C++程序

  1. 安装GDB: 首先,确保系统已经安装了GDB。如果没有安装,可以使用以下命令进行安装:

    sudo apt update
    sudo apt install gdb
    
  2. 编译程序时包含调试信息: 在编译C++源代码时,需要加上 -g 参数来确保生成的可执行文件包含了调试信息。例如:

    g++ -g -o my_program my_program.cpp
    
  3. 启动GDB调试程序: 使用以下命令启动GDB并加载你的程序:

    gdb my_program
    
  4. 设置断点: 在GDB中,可以使用 break 命令在指定行设置断点。例如,在 main 函数处设置断点:

    break main
    

    或者在特定函数或行号设置断点:

    break my_program.cpp:42
    
  5. 运行程序: 使用 run 命令启动程序。如果设置了断点,程序将在断点处停止:

    run
    
  6. 调试操作

    • listl:显示源代码。
    • nextn:执行下一行代码,但不进入函数内部。
    • steps:执行下一行代码,并进入函数内部。
    • continuec:继续执行程序直到下一个断点。
    • printp:打印变量的值。例如,打印变量 x 的值:
      print x
      
    • backtracebt:显示当前的调用堆栈。
    • framef:选择堆栈帧。例如,选择堆栈中的第7帧:
      frame 7
      
    • watch:监视表达式的值。当表达式的值发生更改时,程序将暂停。
  7. 退出GDB: 使用 quit 命令退出GDB。

使用Visual Studio Code进行调试

  1. 安装必要的软件和组件

    • 安装Visual Studio Code。
    • 打开VS Code,在扩展市场中搜索“C/C”,然后安装由Microsoft提供的扩展。
    • 确保已经安装了GCC和GDB。
  2. 配置调试环境

    • 在VS Code中创建一个新的文件夹作为工程目录,并在其中创建一个简单的C++源文件,例如 main.cpp
    • 按下 Ctrl+Shift+P 打开命令面板,输入 Tasks: Configure Task,然后选择 Create tasks.json file from template。选择 Others,这将创建一个 tasks.json 文件,内容如下:
      {
        "version": "2.0.0",
        "tasks": [
          {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
              "-g",
              "-O0",
              "{file}",
              "-std=c++17",
              "-o",
              "{fileBasenameNoExtension}"
            ],
            "group": {
              "kind": "build",
              "isDefault": true
            },
            "problemMatcher": [
              "gcc"
            ]
          }
        ]
      }
      
    • 按下 Ctrl+Shift+D 打开调试视图,点击齿轮图标打开 launch.json 配置文件。选择 C (GDB/LLDB),这将创建一个默认的调试配置。你可以根据需要修改它。
  3. 添加断点: 在 main.cpp 文件中,在你想要调试的代码行左侧点击,设置断点。

  4. 启动调试: 点击调试视图中的绿色三角形按钮(或按下 F5 键)开始调试。程序将在第一个断点处停止。

  5. 使用GDB命令进行调试: 程序停止后,你可以使用GDB的各种命令进行调试,例如:

    • listl:显示源代码。
    • breakb:设置断点。
    • runr:启动程序。
    • nextn:执行下一行代码,但不进入函数。
    • steps:执行下一行代码,如果是函数调用,则进入函数。
    • continuec:从当前位置继续执行程序,直到遇到下一个断点。
    • finish:执行完当前函数并返回到调用者。
    • printp:打印变量的值。
    • backtracebt:显示当前调用堆栈。
    • framef:选择堆栈帧。
    • watch:监视表达式的值。

通过以上步骤,你可以在Ubuntu上使用GDB或Visual Studio Code进行C++程序的调试。

0
看了该问题的人还看了