vscode 远程开发c/c++

vscode 远程开发c/c++

简介

c/c++或嵌入式开发,往往需要在linux环境下开发。在windows下,除了用vmware/vbox安装linux虚拟机外,还可以安装wsl1/wsl2。wsl全名windows的linux子系统,其中wsl1只是改写了api,在windows内核上套了一层linux shell,因此很多内核相关的开发做不了。而wsl2则完全支持linux内核,但较为臃肿。孰优孰劣,还是根据需求来,应用开发,不涉及内核相关的,尽管用wsl1。

VS Code是微软出品的一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。

本文将介绍vs code + wsl1环境对c/c++的开发调试(已装好wsl)。

远程连接

  1. 安装remote - wsl插件

vscode 远程开发c/c++_第1张图片

  1. 点击左下角><符合,连接wsl

  1. 连接之后,就可以打开wsl下的目录进行远程编码,丝滑流畅

vscode 远程开发c/c++_第2张图片

编译调试

配置如何构建,和如何执行程序

vscode 远程开发c/c++_第3张图片vscode 远程开发c/c++_第4张图片

vscode 远程开发c/c++_第5张图片

在文件根目录下的.vscode文件中,产生launch.json和tasks.json两个配置文件。其中,tasks.json用于配置构建过程,launch.json用于执行程序的相关配置。

写个简单的单文件或几个文件的程序,直接简单修改tasks.jon还挺方便的。若是硕大的项目工程,往往都是由makefile或cmake等方式构建,不如直接切换到terminal,直接执行个make,更方便且符合习惯。

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc build active file",
            "command": "/usr/bin/gcc",				// 编译工具
            "args": [													// 编译参数
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

直接make之后,生成目标文件。

本例生成的可执行文件同main函数所在文件名相同,可切换到可执行文件的同名c的文件,按F5键或点击start debuging,启动调试。

{
    // 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": "gcc - Build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            //"program": "${fileDirname}/${fileBasenameNoExtension}",   <-- 修改实际可执行文件路径,程序名同文件名
            "program": "${workspaceFolder}/bin/${fileBasenameNoExtension}",
            "args": [],
            //"stopAtEntry": false, <-- 习惯,启动的时候break在main函数,然后可继续加断点
            "stopAtEntry": true,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            //"preLaunchTask": "C/C++: gcc build active file",      // <== makefile编译的,直接debug运行,不做构建了
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

vscode 远程开发c/c++_第6张图片

条件断点

vs code 支持条件断点,通过设置一个表达式/或计算hit断点的次数,当程序运行到满足条件下,才会break。调试重复执行的代码特有用。

方法是,右击一个断点,编辑断点,输入表达式或计数,回车生效,断点也随之变为黄点。

vscode 远程开发c/c++_第7张图片vscode 远程开发c/c++_第8张图片

最后

如果,你的代码在ssh连接的服务器上,用remote-ssh插件,一样可以进行上述调试过程。以前,用vim+ctags+各种vim插件开发,虽然挺能装逼的,但效率差的太远。

其他,资源管理器中输入\wsl$,可以打开linux的文件目录。

参考:

Using C++ and WSL in VS Code

Debug C++ in Visual Studio Code

你可能感兴趣的:(善事利器,visual,studio,code,c++,开发工具)