最近需要写一个linux防火墙程序,发现可以在windows上安装Visual studio code通过插件远程连接linux。这对于习惯了windows界面编程的我是最佳选择。

linux系统:

尽量采用新的版本,我之前版本是centos 5.8,结果vscode连接时报一堆错,系linux基础语言库版本低导致。后来换成centos8,不再报错。而且阿里云centos8上已安装了openssh、gcc等常用软件。需要安装的是g++(不装这个vscode代码里会提示找不到头文件)

按网上方法下载Remote-SSH插件,安装完成后会出现一个远程资源管理器图标,其中可以选择SSH Targets:

然后点击配置,并在右侧的命令窗口中选择第一个配置文件。

配置文件如下所示,其中Host是名字(随便写,比如小电脑图标旁那串IP就是名字),HostName 是需要远程连接的ip,也就是我们安装的linux系统的ip地址,User 是远程用户名(如:root),正确设置后保存关闭即可。

左侧栏打开Extentions,找到已经安装好的Remote -SSH,右键点击,选择“Extension Settings”

在Config File中输入config文件路径 (一般被放在为“C:\Users\user_name\.ssh\config”)

配置文件中一组信息(host-hostname-user)对应着一个连接目标,会在ssh targets下显示对应目标。可以选择一个目标,进行远程连接。

选择远程平台为linux

输入前面配置文件中user用户对应的登录密码 

连接成功之后可以在左下角看到连接标识。 

将之前ssh设置为免密登录

windows端:

方法是在windows上安装openSSH,然后利用它生成一对公私钥,放到C:\Users\user_name\.ssh\目录下,并在该目录config文件中添加:

IdentityFile "C:\Users\IBM\.ssh\id_rsa"
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

基中IdentityFile指出了私钥路径。

服务器端:

(1)将客户端的公钥文件用ftp上传到服务器,然后再复制为username/.ssh/authorized_keys

(2)将.ssh文件夹权限设为700,将authorized_keys文件权限设为600

(3)在/etc/ssh/sshd_config文件中添加:

PasswordAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

配置C++开发环境

针对vscode远程连接linux服务器进行c++开发的情况,一般常用的是采用c_cpp_properties.json,tasks.json和launch.json进行环境配置。

a).c_cpp_properties.json

c_cpp_properties.json文件可以打开命令面板,然后点击c/c++编辑配置即可打开。首次打开时,会在.vscode文件夹自动创建该文件。

c_cpp_properties.json文件是c/c++插件对应的配置文件,允许用户更改前面设置中的部分选项,例如编译器的路径,包含路径,C ++标准(默认为C ++ 17)等,我配置的c_cpp_ properties.json文件内容如下,其中includePath字段新增了“/usr/include/**”路径,这个路径中放置了linux系统常见的头文件,包括c++相关头文件,便于实现项目开发。编译器采用的是g++,若linux系统中未安装g++,则要先进行安装

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [             //搜索头文件时的路径
                "${workspaceFolder}/**", //默认路径       
                "/usr/include/**"        //新增路径  
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++", //编译器路径
            "cStandard": "c99",             //编译时采用的c标准
            "cppStandard": "c++14",         //编译时采用的c++标准
            "intelliSenseMode": "gcc-x64"   //智能模式
        }
    ],
    "version": 4
}

配置完成之后我们可以在当前项目文件夹中新建一个简单的hello word程序进行练习,如下所示:  

 

b).tasks.json

如果有多个任务需要协调,就需要通过taks.json文件来设定build环境。可以在里面配置多个任务,每个任务其实就是帮你在终端输入指令(执行类似 gcc -g main.c -o main 的命令)。需要注意的一点是,tasks.json的"label"参数值和launch.json的"preLaunchTask"参数值需要保持一致。

c).launch.json

launch.json文件用以配置VS Code以在按F5调试程序时启动GDB调试器。若linux系统中未安装gdb,则要先进行安装。在左侧主菜单中,选择“运行和调试” ,然后点击蓝色按钮,选择“ C ++(GDB / LLDB)”,此时vscode自动打开launch.json文件。首次打开时,会在.vscode文件夹自动创建该文件。

 launch.json文件内容示例如下。

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) 启动",   //名称随便取
            "type": "cppdbg",       //正在使用的调试器,使用Visual Studio Windows时必须为cppvsdbg,使用GDB或LLDB时必须为cppdbg
            "request": "launch",    //表示此配置是用于启动程序还是附加到已运行的实例上
            "program": "${workspaceFolder}/hello_word",   //要执行的可执行文件的完整路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",          //可执行程序完整路径(不包含程序名称)
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

设置完成之后,在程序指定位置添加断点,并在“运行和调试”界面开启调试即可进行程序调试。 

 调试时在编辑器的顶部,将显示一个调试控制面板,可以进行单步、多步调试控制,同时在编辑器左侧会显示局部变量、监视的变量和程序调用堆栈等信息。

参考:https://cloud.tencent.com/developer/article/1945311 

Logo

更多推荐