自从vscode出了远程模式,再结合win10的内置linux子系统,就大大改善了对开发人员的友好度。今天尝试了一把在vscode上调试c++程序,中间踩了不少坑。

我们知道c++是一个高级语言,需要编译后才能调试,不像python这样的解释性语言。这个特点在linux环境里调试c++就表现得很充分,在linux中,通过编译命令生成二进制文件或是可执行文件

g++ -g filename -o obname

然后在gdb执行二进制文件。同样的,在vscode中同样需要先编译,然后在对二进制文件进行调试。下面介绍在vscode中调试c++的步骤:

1. 首先电脑要安装vscode和c++插件,以及c++环境。当然如果你是在linux子系统中开发,就在linux子系统中配置好开发环境。

2. c++和python不同的地方在于工作空间的概念,新建的cpp文件最好在一个独立的文件夹中,在vscode中打开文件夹(注意是图中这样打开文件夹)作为c++的工作空间。

3.配置完以后可以尝试按F5进行调试,如果语言环境已经正常安装,那么会自动在工作空间中生成名为".vscode"的文件夹,并在该文件夹中生成launch.json文件,这个文件需要修改一下才能使用。

4.如果并没有自动生成".vscode"和launch.json,则需要自己手动创建。".vscode"文件夹的创建方法不赘述。创建launch.json的方法为快捷键ctrl+p调出控制台,在控制台中输入">launch.json",然后选择默认的一项即可。

5.并不着急修改launch.json,而是应该先创建tasks.json:通过快捷键调出控制台,然后输入">tasks.json",选择“其他”。

这样tasks.json和launch.json两个配置文件就都生成了,则两个文件分别配置了二进制文件的生成过程和二进制文件的调试过程。下面介绍tasks.json和launch.json的配置。

6. tasks.json配置

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build on WSL",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${file}",
                // "/home/ksz/cplus/snake/snake.cpp",
                "-o",
                "${workspaceFolder}/${fileBasenameNoExtension}",
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

在这其中最关键的三处配置分别是:

label,值在launch中被引用。一般建议起成常规名字,例如build on WSL

command,代表生成二进制文件的指令,在linux中为gcc或是g++(gcc针对C语言标准,不兼容c++语言。g++兼容c++和C语言,但是主要用于c++)

args,代表指令用到的参数。

7. launch.json的参数配置如下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            //"program": "/home/ksz/cplus/snake/snake",
            "program":"${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build on WSL",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

launch.json的关键配置包括:

name:任务名称,建议使用默认。

programe:用于调试的可执行文件,必须与tasks.json中的可执行文件一致

preLaunchtask:执行launch前要执行的tasks.json文件,必须与tasks.json的label保持一致(这个非常重要!我按照网络上的教程配置大多都不能运行,都是因为这个参数不对)

mimode:调试模式,建议使用gdb

"miDebuggerPath": 调试程序路径,默认"/usr/bin/gdb",不能修改!!

8.经过以上的几步以后,配置就完成啦,保存两个配置文件。然后按F5,debug!

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐