VSCode调试C++代码的多种方案

这篇具有很好参考价值的文章主要介绍了VSCode调试C++代码的多种方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容均针对 Linux 操作系统(包括Windows的Linux子系统WSL2)。

本文是对Linux系统中使用VSCode编译调试C++代码的系列文章的总结,前面三篇文章如下:

  1. 详解C/C++代码的预处理、编译、汇编、链接全过程
  2. Linux环境使用VSCode调试简单C++代码
  3. Linux环境使用VSCode调试CMake工程

1. 根本逻辑

在VSCode中编译调试C++代码的本质逻辑:

  • tasks.json 指定如何生成二进制可执行文件
    • 可以直接通过g++编译器生成
    • 可以通过CMake生成
    • 可以通过脚本.sh生成
  • launch.json负责配置gdb调试器,包括:指定可执行文件名、命令行参数,以及预执行任务(prelaunchTask)

2. 方案一:直接调用g++编译器生成可执行文件

具体过程在这篇文章中详细解释:Linux环境使用VSCode调试简单C++代码

这里简要概括重点内容。

  1. 第一步:将*.cpp源代码文件通过g++编译器生成一个可调试的可执行二进制文件

如果不在VSCode中运行,而是在终端中运行,需要运行下面的指令:

g++ -g hello.cpp -o hello

那么将这一步配置在VSCode的tasks.json中,tasks.json中的内容应该如下(具体过程可以参考上面的链接):

{
	"version": "2.0.0",
	"tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "编译器: /usr/bin/g++"
        }
    ]
}
  1. 第二步:调用gdb调试器对可执行文件进行调试

如果不在VSCode中运行,而是在终端中运行,需要运行下面的指令:

gdb hello

将这一步配置在VSCode的launch.json中,则launch.json中的内容应该如下(详细过程和解释同样可以参考上面链接):

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "C/C++: g++ 生成活动文件"
        }
    ]
}

3. 方案二:CMake生成可执行文件

具体过程在这篇文章中详细解释:Linux环境下使用VScode调试CMake工程

对于CMake工程,如果不使用VSCode,而是使用终端命令行方式进行编译的话,标准做法是:

cd build
cmake ..
make

那么将这个过程配置在VSCode的tasks.json中,其内容应该如下(详细过程见参考链接):

{
	"version": "2.0.0",
	"tasks": [
        {
            "label": "cmake",
            "type": "shell",
            "command": "cmake",
            "args": [
                "../"
            ],
            "options": {
                "cwd": "${fileDirname}/build"
            },            
        },
        {
            "label": "make",
            "type": "shell",
            "command": "make",
            "args": [],
            "options": {
                "cwd": "${fileDirname}/build"
            }, 
        },
        {
            "label": "build",
            "dependsOn":["cmake", "make"]
        },
    ],
}

通过VSCode完成CMake编译过程后,将会在 build 目录下生成一个可执行文件。
调用gdb对生成的可执行文件进行调试,需要配置launch.json文件如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/build/${fileBasenameNoExtension}",
            "args": ["para1", "para2"],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

4. 方案三:shell脚本生成可执行文件

脚本文件build_executable.sh的内容如下:

echo "Configuring and building ORB_SLAM3..."

mkdir build
cd build
# cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake .. -Wno-dev
make -j8

该方案与方案二类似,即把cd build + cmake + make的过程写到shell脚本文件里,那么只需要把方案二中的cmake + make过程替换为执行.sh脚本文件即可,直接列出来参考的 tasks.jsonlaunch.json文件,可以发现,launch.json的内容基本没有变:文章来源地址https://www.toymoban.com/news/detail-629342.html

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "sh",
            "args": [
                "build_executable.sh"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: /usr/bin/g++"
        }
    ]
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
		{
            "name": "g++ - debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}
        

到了这里,关于VSCode调试C++代码的多种方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决MAC中vscode调试C++代码无法处理输入的问题

    写在前面的话:很久没有使用C/C++进行编程了,这次在MAC电脑的vscode中对C/C++代码进行调试时,发现运行到scanf、cin等输入语句时无法输入,参考了网上一些教程,发现有些繁琐或是难以解决我的问题。因此以本文记录最终的解决方案,一来为了记录以便下次遇到时进行解决,

    2024年02月05日
    浏览(39)
  • vscode | linux | c++ intelliense 被弃用解决方案

    每日一句,vscode用的爽是爽,主要是可配置太强了。如果也很会研究,可以直接去咸鱼接单了 废话少说,直接整。 用着用着说是c++ intelliense被弃用,很多辅助功能无法使用,像查看定义、查看引用、函数跳转、智能提示…… 归根结底,还是太菜了,但真的很需要这些辅助啊

    2024年02月12日
    浏览(43)
  • VSCode C++ 调试方法

    VSCode 调试 C++ 主要就是 .vscode 中的 launch.json 和 tasks.json 的配置。 launch.json 可以通过 vscode 界面 ——》左侧调试功能按钮——》创建 launch.json ——》C++(GDB/LLDB)生成。 其中 launch.json 默认配置如下,主要配置项说明: name:启动项的名字 program:指向最终生成的可执行文件的

    2024年02月14日
    浏览(45)
  • C++ 开发 + VSCode 调试

    官方下载 清华大学开源软件镜像站:MSYS2 软件仓库 MSYS2: 主要功能是提供一个在Windows操作系统上模拟类Unix环境的开发和构建工具集。它提供了一个模拟POSIX系统的命令行接口和包管理器(Pacman)。 MSYS2基于Cygwin技术,但它更专注于构建原生Windows应用程序。 它的目标是创建

    2024年01月16日
    浏览(34)
  • 终端/Vscode + GDB调试C++程序

    CMakeLists中需要设置编译类型为Debug 下载gdb调试器 在终端使用gdb调试程序 然后进入(gdb)命令行 (gdb) set args … : 设置程序运行输入的参数 (gdb) break file_path:row_number : 设置断点位置 (gdb) run : 启动调试 (gdb) next : 下一步(不进入函数) (gdb) step : 下一步(进入函数) (gdb) continue : 继

    2024年02月04日
    浏览(38)
  • VSCode配置C++环境——弹出黑窗运行和断点调试程序

    前言 先决配置教程 安装拓展 1. Code Runner  2. Tabnine AI Autocomplete 配置文件launch.json  总结 笔者配置了很多次VSCode环境,但越配越烂导致很长一段时间都没有再打开过VSCode,但是VSCode确实轻量级,在打比赛之类的场合很适合快速编写代码(前端另说),既然都是无用的软件了不

    2024年02月05日
    浏览(54)
  • VSCode 远程调试C++程序打开/dev/tty设备失败的问题记录

    因为需要协助同事调试rtklib中的rtkrcv程序,一直调试程序都是用了vscode,这次也不例外,但是在调试过程中,发现程序在打开当前终端(/dev/tty)的时候,总是打开失败,返回的错误原因是“No such device or address”,后面网上搜索了下,在VS code 的issue里面,发现相关问题,用来记

    2024年03月19日
    浏览(42)
  • ubuntu + VScode + C++ + openCV 运行调试launch.json和task.json编写

    近期在学习opencv的使用,在进行多文件编写时遇到了诸多问题,在查阅众多博客之后,问题一个一个解决了,用这篇文章记录下我的解决方法,希望可以为你提供一定的帮助。(新手拙见,欢迎批评指正)。 创建项目并编写代码。我的项目文件结构如下  在创建项目之后,点

    2024年02月14日
    浏览(33)
  • VSCode配置之C++ & SQLite3极简配置方案

    背景 最近在学习《深入应用C++11: 代码优化与工程级应用》,其中第13章说到SQLite库,查询网上诸多教程,发现比较容易出现bug且配置较为麻烦,故记录此次简化版方案,以供参考。 软件环境 SQLite 3.42.0 版本(仅下载Source code即可) VSCode+CMake+ SQLite Viewer VSCode + SQLite文件目录

    2024年02月14日
    浏览(37)
  • Dev c++代码配色,像vscode一样

    目录 设置入口:进入工具编译器选项 光标所在行的背景 元素配色:代码元素由上至下配色(对于不常显示的元素就不设置了) 对要设置的元素:选自定义前景或背景规定自定义颜色输入配色参数  Space(先设置空白处,这也是全局背景,设置后,其他元素基本只需要设置前

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包