zoukankan      html  css  js  c++  java
  • vscode下调试运行c++

    vscode下调试运行c++

    一、总结

    一句话总结:

    vscode常用插件: c/c++ 插件(必须)、C++ Intellisense、Include Autocomplete

    二、vscode下调试运行c++

    转自或参考:vscode下调试运行c++
    https://www.cnblogs.com/zhuzhenwei918/p/9057289.html

      vscode是微软的最新产品,轻量易用,最初是前端用的多,尤其是typescript,因为vscode的作者也是typescipt作者。一般c++的IDE很多,比如visual studio等,但是都不太好用,所以,这里,使用vscode,下面讲解主要步骤。

    • 安装vscode。
    • 安装必要c++插件。
    • 安装编译、调试环境。
    • 修改vscode配置文件。
    • 运行
    • 调试

    一、安装vscode

      vscode是免费的,所以直接下载安装就好。

    二、安装必要c++插件

      在vscode左侧找到插件库,安装 c/c++ 插件(必须)、C++ Intellisense(非必须)、Include Autocomplete(非必须)。

    三、安装编译、调试环境

      网上找到mingw,直接安装,只要和本机匹配即可。

      安装之后,配置环境变量,配置好环境变量,通过g++ xx.cpp -o xx来检测是否可以用命令行来编译c++文件,如果可以,说明安装成功。

    四、修改vscode配置文件

      即在vscode中打开文件夹->创建新的文件夹->选中,这样就直接加入到vscode中了;或者直接把一个文件拖入vscode中;假设我们新建的文件夹名称为Foo。

      接着,在这个Foo下创建一个.vscode文件夹,这是必须的(一般来说,每个文件夹中都会有这么一个.vscode配置文件)。注意:将此文件夹放在常用文件夹顶层,就不需要重复配置了。

      在.vscode文件夹中,新建三个(只需三个)配置文件,即c_cpp_properties.json、launch.json、tasks.json。然后内容如下:

      c_cpp_properties.json (注意:每台电脑装mingw的位置可能不一样,根据everything确定!),这个配置文件指定mingw所在位置,方便vscode自动调用:

    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceRoot}",
                    "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++",
                    "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/mingw32",
                    "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/backward",
                    "C:/mingw/lib/gcc/mingw32/5.3.0/include",
                    "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/tr1",
                    "C:/mingw/mingw32/include"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "__GNUC__=6",
                    "__cdecl=__attribute__((__cdecl__))"
                ],
                "intelliSenseMode": "msvc-x64",
                "browse": {
                    "path": [
                        "${workspaceRoot}",
                        "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++",
                        "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/mingw32",
                        "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/backward",
                        "C:/mingw/lib/gcc/mingw32/5.3.0/include",
                        "C:/mingw/lib/gcc/mingw32/5.3.0/include/c++/tr1",
                        "C:/mingw/mingw32/include"
                    ]
                },
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        ],
        "version": 3
    }

      

      launch.json文件(注意:其中的miDebuggerPath可能也是不一样的,需要注意):

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
                "type": "cppdbg", // 配置类型,这里只能为cppdbg
                "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
                "targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
                "program": "${file}.exe", // 将要进行调试的程序的路径
                "miDebuggerPath": "c:\MinGW\bin\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
                "args": [
                    "blackkitty",
                    "1221",
                    "# #"
                ], // 程序调试时传递给程序的命令行参数,一般设为空即可
                "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
                "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
                "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
                "preLaunchTask": "g++" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
            }
        ]
    }

      tasks.json(这个所有都一样,无需个性化修改):

    {
        "version": "0.1.0",
        "command": "g++",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${file}.exe"
        ], // 编译命令参数
        "problemMatcher": {
            "owner": "cpp",
            "fileLocation": [
                "relative",
                "${workspaceRoot}"
            ],
            "pattern": {
                "regexp": "^(.*):(\d+):(\d+):\s+(warning|error):\s+(.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "message": 5
            }
        }
    }

      

      

    五、运行

      接下来,就需要创建cpp文件了,如下,在Foo下创建一个a.cpp:

    #include <iostream>
    #include <windows.h>
    #include <vector>
    using namespace std;
    
    int main() {
        cout << "hedy, I love you!" << endl;
        vector<int> a;
        a.push_back(5);
        cout << a[0] << endl;
        system("pause");
        return 0;
    }

      然后,我们点击左侧的debugger按钮,在这个状态下,就可以按下F5编译运行了,得到如下结果:

      这就说明我们已经可以自动运行了。 

       

    六、调试

      调试也非常简单,直接打断点即可,如下:

     

      即直接在我们需要判断的行处打断点,然后继续F5执行,就可以在DEBUG栏看到相应的内容了。

     
  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12985158.html
Copyright © 2011-2022 走看看