使用VSCode 和 Remote - WSL 插件,编辑 和 调试 C/C++代码

背景信息:

  笔者第一次接触C语言是在大一学校开设的C语言程序设计课上,使用教材是国内高校老师编著的。

  Windows 系统,IDE 是 Microsoft Visual C++ 6.0,简称 VC6.0,是微软于1998年推出的一款 C++ 编译器。

  当时,没学习过计算机科学导论,计算机组成原理,也不知道 Linux 为何物。就这样期末考了 80+

现在回炉重造!

  Windows 系统下使用 WSL 和 VSCode 调试 C/C++ 代码,这是折中方案。

  WSL(Windows Subsystem for Linux)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。

  它是由Microsoft与Canonical公司合作开发,其目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,

  并且映像内的工具和实用工具能在此子系统上原生运行。

必备知识:

Linux下gcc 编译C语言
 
1.创建一个.C文件

vi/vim  hello.c

2.编译 hello.c文件,生成可执行文件

gcc hello.c

 3.执行文件,在默认情况下产生的可执行程序名为 a.out

./a.out

 4.通常可以通过 gcc 的“-o”选项来指定自己的可执行程序名称。

gcc -o hi hello.c

  生成可执行程序名为 hi

./hi

5.使用gcc的“-c”标记来编译支持库代码(对多个文件进行编译)

gcc -c hello.c

 输出结果为一个名为 hello.o 的文件
 


Windows 10下安装WSL官方教程:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

编辑器有两种方案:

  1. Vim 或 Emacs
  2. Visual Studio Code:https://code.visualstudio.com/

接下来在 VSCode 安装必备插件:

  1. Remote - WSL
  2. C/C++

注意:点击 VSCode 左下角的 WSL:Ubuntu,选择 Remote-WSL:Reopen Folder in WSL

使用 VSCode 编辑代码 与远程连接WSL:Ubuntu,在 Linux 下 gcc 编译 和 gdb 调试

至于为什么,不在 VSCode 上一站式解决编辑、编译、调试?

每次编译都会生成同名文件文件,索性使用 gcc 命令行默认生成 a.out

 坑1:VSCode 是用来编辑代码,一定要保持在远程连接状态。

理清思路,不要在本地新建文件夹保存代码,要完全按照 Linux 操作习惯

yws@yws-pc:~/c_primer_plus$ mkdir chapter_03  

确保 gcc 和 gdb 安装成功

yws@yws-pc:~$ whereis gcc
gcc: /usr/bin/gcc
yws@yws-pc:~$ whereis gdb
gdb: /usr/bin/gdb 

下面是第一次使用 VSCode 中 C/C++ 编译插件需要配置的文件,launch.json

"version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/chapter_03/a.out",  // 此处是坑2,因为忘记加 chapter_03
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",  
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "gcc - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",  
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "gcc build active file",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]

受此启发:https://blog.csdn.net/Hyz8970/article/details/101627753

猜你喜欢

转载自www.cnblogs.com/yiweshen/p/12788123.html
今日推荐