linux系统下如何在vscode中调试C++代码

本篇博客以一个简单的hello world程序,介绍在vscode中调试C++代码的配置过程。

1. 安装编译器

vscode是一个轻量的代码编辑器,并不具备代码编译功能,代码编译需要交给编译器完成。linux下最常用的编译器是gcc,通过如下命令安装:

sudo apt-get install build-essential

安装成功之后,在终端中执行gcc --version或者g++ --version,可以看到编译器的版本信息,说明安装成功。

2. 安装必要的插件

在vscode中编写C++代码,C/C++插件是必不可少的。打开vscode,点击左边侧边栏最下面的正方形图标,在搜索框里输入c++,安装插件。

3. 编写代码

hello world程序,略。

4. 配置task

在task里添加编译命令,从而执行编译操作。步骤如下:

  • 按住ctrl+shift+P,打开命令面板;
  • 选择Configure Tasks...,选择Create tasks.json file from templates,之后会看到一系列task模板;
  • 选择others,创建一个task,下面是一个task的示例:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build hello world",     // task的名字
            "type": "shell",
            "command": "g++",    //编译命令
            "args": [    //编译参数列表
                "main.cpp",
                "-o",
                "main.out"
            ]
        }
    ]
}

上面的command是我们的编译命令,args是编译参数列表,合在一起,其实就是我们手动编译时的命令。

g++ main.cpp -0 main.out

5. 配置launch.json

把debug的内容配置在launch.json,这样我们就可以使用断点调试了。

  • 点击侧边栏的debug按钮,就是那只虫子图标;
  • 在上面的debug栏目里,点击齿轮图标;
  • 在下拉菜单中选择 C++ (GDB/LLDB),这时会在.vscode文件夹下创建一个lauch.json文件,用来配置debug;下面是launch.json文件的一个示例:
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug hello world",    //名称
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main.out",    //当前目录下编译后的可执行文件
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",    //表示当前目录
            "environment": [],
            "externalConsole": false, // 在vscode自带的终端中运行,不打开外部终端
            "MIMode": "gdb",    //用gdb来debug
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build hello world"    //在执行debug hello world前,先执行build hello world这个task,看第4节
        }
    ]
}

6. 结束

至此,配置完成,按F5可以编译和调试代码,vscode自带终端中会打印hello world字符串。在程序中添加断点,调试时也会在断点处中断。

原文地址:https://www.cnblogs.com/jiaxblog/p/9902535.html

时间: 2024-10-10 15:15:35

linux系统下如何在vscode中调试C++代码的相关文章

Linux系统下,在文件中查找某个字符串

在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的"vim". 需要查找特殊字符需要转义,例如/vim\$匹配"vim$". 实战一下: 1.用vim打开要查找的文件 2.在normal模式下/即可进入查找模式,输入要查询字符串 3.光标停留在loop上 4.按下n会查找下一个,注意光标 来源:https://zhidao.ba

Linux系统下不让MySQL区分表名的大小写的解决办法

问题描述: 今天将某项目数据库移植到liunix服务器上,结果出现无法找到表的错误,查询数据库,表确实是存在的.经过分析比较,发现是表名大小写问题导致. 问题分析: MySQL数据库的表名在Linux系统下是严格区分大小写的,在Windows系统下开发的程序移植到Linux系统下,如果程序中SQL语句没有严格按照大小写访问数据库表,就可能会出现找不到表的错误. 解决办法: 修改MySQL的配置文件my.cnf,在[mysqld]部分添加如下配置选项lower_case_table_names =

第九章 Linux系统下分区、格式化磁盘,学会挂载和卸载磁盘

1. 请查资料了解这些术语:/dev/hda, /dev/hdb, /dev/sda, /dev/sdb, 他们之间有什么区别?/dev/hda, /dev/hdb 是 IDE借口硬盘的块文件. /dev/hda  第一块IDE磁盘 : /dev/hdb 第二块IDE磁盘 /dev/sda, /dev/sdb 是SCSI接口硬盘的块文件. /dev/sda 第一块SCSI磁盘 :/dev/sdb 第二块SCSI磁盘 2. 为什么 du -b /etc/passwd  和 du -k  /etc/

linux系统下安装Python环境

如何在Linux系统下搭建Python开发环境(http://www.maiziedu.com/course/python/)?Python在Linux系统中安装方法在Windows下是有很大的区别的,今天就具体记录一下关于 Python 环境软件包在Linux系统下的一些安装步骤 1.升级 Python 到 2.7.10( 默认 2.6.6 ) shell > yum -y install epel-release shell > yum -y install gcc wget readli

linux系统下信号具体解释2

信号是UNIX 系统所使用的进程通信方法中,最古老的一种.信号不但能从内核发往一个进程,也能从一个进程发往还有一个进程.比如,用户在后台启动了一个要运行较长时间的程序,假设想中断其运行,能够用kill 命令把SIGTERM信号发送给这个进程,SIGTERM 将终止此进程的运行.信号还提供了向UNIX 系统进程传送软中断的简单方法.信号能够中断一个进程,而无论它正在作什么工作.因为信号的特点,所以不用它来作进程间的直接数据传送,而把它用作对非正常情况的处理.因为信号本身不能直接携带信息,这就限制了

linux系统下信号详解2

信号是UNIX 系统所使用的进程通信方法中,最古老的一种.信号不但能从内核发往一个进程,也能从一个进程发往另一个进程.例如,用户在后台启动了一个要运行较长时间的程序,如果想中断其执行,可以用kill 命令把SIGTERM信号发送给这个进程,SIGTERM 将终止此进程的执行.信号还提供了向UNIX 系统进程传送软中断的简单方法.信号可以中断一个进程,而不管它正在作什么工作.由于信号的特点,所以不用它来作进程间的直接数据传送,而把它用作对非正常情况的处理.由于信号本身不能直接携带信息,这就限制了它

Linux 系统下 ifconfig 命令详解

Linux系统下网卡网络配置详解 Ifconfig命令使LINUX核心知道软件回送和网卡这样一些网络接口,这样Linux就可以使用它们. 除了上面介绍的这些用法之外,ifconfig命令用来监控和改变网络接口的状态,并且还可以带上很多命令行参数.下面是一个ifconfig的通用调用语法: #ifconfig interface [[-net -host] address [parameters]] 其中interface是网络接口名:address是分配给指定接口的主机名或IP地址.这里使用的主

linux系统下安装mysql数据库(mysql-5.7)

前言: 本文主要介绍如何在linux系统下安装mysql数据库及安装时遇到各种问题该如何解决:     本次安装使用的linux系统是centos,数据库版本是mysql-5.7. 一.安装前准备 root用户登录只linux服务器,在根目录下新建数据库安装目录  /software/mysql:数据库文件数据位置:/data/mysql(可以根据自己的习惯创建) 然后从oracle官网上下载mysql安装包:可以在自己电脑上先下载再上传到linux服务上,如果linux服务器可以访问外网,也可

在虚拟机的Linux系统下安装wineqq

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 本文参考教程:http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7688&extra=page%3D1 WineQQ下载地址:http://pan.baidu.com/s/1c2FSTsk qq是一款国内非常著名的聊天工具,但是在腾讯的官网并没有Linux操作系统下的qq安装版本,但是我们也有办法在Linux系统下安装qq,下面我们实现在Linux安装w