要在VS Code上进行远程Linux调试,你可以按照以下步骤进行配置:
前提条件:
- 确保你已在本地安装了VS Code。
- 确保你的本地计算机和远程Linux机器之间可以进行网络通信。
步骤:
-
在本地计算机上安装Remote Development插件:
- 打开VS Code并导航到扩展面板(Extensions)。
- 搜索并安装 “Remote Development” 插件。
- 安装完毕后,重启VS Code。
-
连接到远程Linux机器:
- 打开VS Code,并点击左下角的“远程窗格(Remote Explorer)”图标。
- 点击顶部的 “+ Connect to Host” 按钮。
- 输入远程Linux机器的SSH连接信息,如主机名、用户名和密码。
- 等待连接成功后,你将在 “Remote - SSH” 窗格中看到远程Linux机器的文件列表。
-
创建C++项目:
- 在远程Linux机器上创建或打开一个C++项目文件夹,并将C++代码文件放入其中。
-
配置调试器:
- 在VS Code中,打开C++源代码文件。
- 打开调试面板(Debug)并点击顶部的齿轮图标以配置调试器。
- 选择 “C++ (GDB/LLDB)” 作为调试环境。
- 在
.vscode
文件夹中创建一个launch.json
文件,如果已经存在,则编辑它。 - 根据远程Linux机器的配置,配置
launch.json
文件中的 “program”、“cwd” 和 “remoteRoot” 等属性,以指定可执行文件路径、工作目录和远程根目录。
-
开始调试:
- 在VS Code中设置断点或使用其他调试命令。
- 通过点击顶部的 “Start Debugging” 按钮(通常是绿色的播放按钮)来启动调试会话。
- 调试会话将连接到远程Linux机器,并在断点处中断,允许你逐步调试代码。
通过以上步骤,你就可以在VS Code上进行远程Linux的C++调试了。
//tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "test1",
"command": "g++",
"args": [
"-g",
"a.cpp",
"-o",
"a.out"
]
}
]
}
//launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"program": "${workspaceFolder}/a.out",
"internalConsoleOptions": "openOnSessionStart",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"externalConsole": false,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "test1"
}
]
}
主要launch.json里的preLaunchTask的值必须和tasks.json的里label一致,否则不能自动编译。
上面的配置完成后,每次连接linux和打开远程目录都要输入密码,要在远程Linux机器上实现免密码连接,你可以使用SSH密钥对。以下是基本的步骤:
-
生成SSH密钥对:
- 打开终端(Terminal)。
- 进入本地用户目录,输入下面的命令一路回车,会生成一对文件,其中一个是.pub文件:
ssh-keygen -t rsa
- 直接把.pub文件的内容复制到linux
用户目录/.ssh/authorized_keys里面并保存。
-
尝试免密码连接:
- 运行以下命令尝试使用SSH连接到远程Linux机器(请用你远程机器的IP地址和用户名替换
<remote_hostname>
和<remote_username>
):ssh <remote_username>@<remote_hostname>
- 如果一切设置正确,你将能够直接登录到远程机器,而无需再次输入密码。
- 运行以下命令尝试使用SSH连接到远程Linux机器(请用你远程机器的IP地址和用户名替换
通过上述步骤,你应该能够实现在本地机器和远程Linux机器之间的免密码连接。
如果有问题,可以扫下面的微信远程服务。