Visual Studio Code (VSCode) 使用 GDB 进行调试

news/2025/3/3 13:57:08/

在 Visual Studio Code (VSCode) 中使用 GDB 进行调试,通常用于调试 C/C++ 程序。以下是配置和使用 GDB 调试的步骤:

1. 安装必要工具

确保已安装以下工具:

  • GCC/G++:用于编译 C/C++ 代码。
  • GDB:GNU 调试器。
  • VSCode:代码编辑器。
  • C/C++ 扩展:VSCode 的 C/C++ 扩展。
安装 GCC/G++ 和 GDB

在 Linux 上,可以通过包管理器安装:

sudo apt-get update
sudo apt-get install build-essential gdb

在 Windows 上,可以使用 MinGW 或 MSYS2 安装 GCC 和 GDB。

安装 VSCode 和 C/C++ 扩展
  1. 下载并安装 VSCode:VSCode 官网。
  2. 打开 VSCode,安装 C/C++ 扩展:
    • 打开扩展视图(Ctrl+Shift+X)。
    • 搜索 “C/C++”,安装 Microsoft 提供的 C/C++ 扩展。

2. 配置 launch.json

  1. 打开项目文件夹。
  2. 点击左侧的调试图标(或按 Ctrl+Shift+D)。
  3. 点击“创建一个 launch.json 文件”。
  4. 选择 “C++ (GDB/LLDB)”。
  5. 选择默认配置或自定义配置。

生成的 launch.json 文件示例如下:

{"version": "0.2.0","configurations": [{"name": "GDB 调试","type": "cppdbg","request": "launch","program": "${workspaceFolder}/a.out",  // 可执行文件路径"args": [],  // 程序参数"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build",  // 调试前运行的任务"miDebuggerPath": "/usr/bin/gdb",  // GDB 路径"logging": {"trace": true,"traceResponse": true,"engineLogging": true}}]
}

3. 配置 tasks.json

tasks.json 用于定义构建任务。示例:

{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-g","${file}","-o","${workspaceFolder}/a.out"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"],"detail": "编译器: /usr/bin/g++"}]
}

4. 开始调试

  1. 打开要调试的 C/C++ 文件。
  2. 按 F5 或点击调试图标中的绿色播放按钮启动调试。
  3. 程序将在断点处暂停,可以使用调试控制台查看变量、调用栈等信息。

5. 常用调试功能

  • 设置断点:点击行号左侧的空白处。
  • 单步执行:F10(跳过)或 F11(进入)。
  • 查看变量:在调试侧边栏查看,或悬停在代码上。
  • 调用栈:查看函数调用栈。
  • 监视表达式:在“监视”窗口中添加表达式。

6. 调试多文件项目

对于多文件项目,确保 tasks.json 中的构建命令包含所有源文件,例如:

"args": ["-g","${workspaceFolder}/*.cpp","-o","${workspaceFolder}/a.out"
]

7. 调试核心转储

如果需要调试核心转储文件,可以在 launch.json 中添加:

"coreDumpPath": "${workspaceFolder}/core"

总结

通过以上步骤,你可以在 VSCode 中使用 GDB 调试 C/C++ 程序。确保正确配置 launch.jsontasks.json,并安装必要的工具和扩展。


http://www.ppmy.cn/news/1576303.html

相关文章

哈工大 计算机组成原理 第四章 存储器(上)笔记

4.1概述 A 一、存储器概述 1. 存储器的重要性 ‌定义‌:存储器是计算机系统中最重要的部件之一,负责存储指令和数据。‌功能‌:执行程序时所需的指令和数据来自存储器,程序的执行结果也保存在存储器中。‌应用‌:存…

创建一个简单的spring boot+vue前后端分离项目

一、环境准备 此次实验需要的环境: jdk、maven、nvm和node.js 开发工具:idea或者Spring Tool Suite 4,前端可使用HBuilder X,数据库Mysql 下面提供maven安装与配置步骤和nvm安装与配置步骤: 1、maven安装与配置 1…

​VS Code Go 开发配置

0.vscode安装 已安装 1.安装插件 安装第一个 2.构建第一个Go程序 https://www.youtube.com/watch?v1MXIGYrMk80 2.1新建一个文件夹 使用vscode打开 2.2打开终端新建一个模块 后面的地址,可以随意填写,不连接真实网站 go mod init demo/demo.com 2.3新建.go文件 在go.mo…

迷你世界脚本游戏接口:Game

游戏接口:Game 彼得兔 更新时间: 2024-05-07 15:52:59 具体函数名及描述如下: 序号 函数名 函数描述 1 doGameEnd(...) 游戏结束 2 dispatchEvent(...) 派发自定义事件 3 getDefString(...) 获取默认字符串 4 setScriptVar(...) 设置…

使用 Kubeflow 和 Ray 构建机器学习平台

使用 Kubeflow 和 Ray 构建一个稳健的 ML 平台。我们将深入讨论 Kubeflow 和 Ray 的独特功能,以及它们如何互补,共同创建一个强大的 ML 生态系统 集中化 ML 平台的需求 随着企业在 ML 旅程中的成熟,初始 ML 项目的临时性质逐渐让位于对更结构化和可扩展方法的需求。集中化…

202年充电计划——自学手册 网络安全(黑客技术)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“…

【重构小程序】升级JDK1.8、SpringBoot2.x 到JDK17、Springboot 3.x(一)

前言 最近想着把大火的deepseek 迁移到小程序里,基于刷题小程序的数据库做一个RAG应用,来进一步扩展答案解析,帮助用户解答相关问题。但是由于之前做的项目都要老了,并不支持spring 的AI模块,因此,我打算先…

深入剖析 OpenCV:全面掌握基础操作、图像处理算法与特征匹配

深入剖析 OpenCV:全面掌握基础操作、图像处理算法与特征匹配 一、引言二、OpenCV 的安装(一)使用 pip 安装(二)使用 Anaconda 安装 三、OpenCV 基础操作(一)图像的读取、显示与保存(…