VS Code Remote - SSH
虚拟机部分的操作
sudo systemctl status sshsudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh # 设置开机自启hostname -I
VS Code部分的操作
- 安装 Remote - SSH 插件
- vscode右下角出现,然后点击添加新ssh连接
- vscode右下角出现,然后点击添加新ssh连接
- 添加新的 SSH 连接
- 点第一个connect to host
- 然后Add New Host
- ssh <你的用户名>@<你的虚拟机IP地址>
- 配置文件,直接选择第一个默认选项即可,它通常是 C:\Users\YourUserName.ssh\config
- 报错易忽略的细节
- Ubuntu版本要高于18.04,我选择22.04.5 https://releases.ubuntu.com/jammy/
- Ubuntu中terminal
uname -m
,x86_64才行
Git 版本控制
git初始化
terminal中下载插件:sudo apt install git
在需要提交的代码文件夹下git init
,Git 会在文件夹里创建一个隐藏的子文件夹,名为 .git,.git 文件夹就是您的本地代码仓库,它包含了管理项目版本所需的所有信息。
git使用
- 初始化您的代码仓库、
git init
- 提交您的第一个版本
git add .
. 是一个通配符,代表当前目录下的所有文件和文件夹。(这个操作是把这个文件夹下的所有文件添加到暂存区-下一步就是将文件进行提交)git status
查看-绿色的列出了您所有的项目文件,表示这些文件已经成功进入暂存区,等待提交。git commit -m "Initial commit"
-m"message"本次提交说明信息- 首次提交:按照提示设置
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
- 首次设置后重新执行
git commit -m "Initial commit" -m"message"
- 首次提交:按照提示设置
- 修改后的提交
git status
修改后使用,展示的是进行修改过的函数文件git diff
可进行查看作出修改的具体内容- 修改一个函数文件,然后进行分支修改提交,如下:
# 1. 将修改过的 main.c 添加到暂存区 git add main.c # 2. 提交,并写上清晰的说明 git commit -m "Feat: Add a new printf statement in main"
git log
查看提交的历史
-git log --oneline
展示更清晰爽,每一行代表一次提交- 历史版本回退以及查看
- "版本前的值"就是
git log --oneline
前的id值 - 让整个项目回到指定的历史版本,
git checkout "版本前的值"
- 不切换项目状态,只查看某次提交的具体修改内容
git show "版本前的值"
- "版本前的值"就是
GDB 调试
说明:核心目标始终是:在 X86 架构的电脑上,开发和调试一个将在 ARM 架构的设备上运行的程序。
linux端要安装gdb
sudo apt update
sudo apt install gdb-multiarch
Makfile的编辑
原始Makefile编辑见往期链接
修改如下(两点):
# 新增:编译选项
# -g: 加入GDB调试信息
# -Wall: 显示所有常用的编译警告
CFLAGS = -g -Wall
规则,加入 CFLAGS每个编译变量后面添加
$(CC) $(CFLAGS)
VsCode文件编辑
点击左边虫子开始符号,run and debug,选择创建launch.json,同文件位置下自己创建tasks.json
注意 "${workspaceFolder}/code/makfile_test/my_app_arm"换成自己最终执行文件位置
{"version": "2.0.0","tasks": [{"label": "Start QEMU Debug Server","type": "shell","command": "qemu-arm","args": ["-g","1234","-L","/usr/arm-linux-gnueabihf","${workspaceFolder}/code/makfile_test/my_app_arm"],"isBackground": true,"problemMatcher": []}]
}
同上换文件执行位置 “program”
{"version": "0.2.0","configurations": [{"name": "QEMU ARM Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/code/makfile_test/my_app_arm","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}","MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb-multiarch","miDebuggerServerAddress": "localhost:1234","preLaunchTask": "Start QEMU Debug Server"}]
}
Run and Debug遇到的难解决易忽略问题(没遇到跳过)
- 终端尝试能不能启动
qemu-arm -g 1234 -L /usr/arm-linux-gnueabihf ./my_app_arm
- 能,直接Run and Debug
- 不能
- 文件没有执行权限,chmod +x my_app_arm
- 连接超时,检测端口占用 Address already in use
sudo lsof -i :1234
查看端口占用情况- 占用则杀死进程
sudo kill -9 PID
在VsCode里面的调试使用
- 继续 (Continue, F5): 让程序一直运行,直到遇到下一个断点或程序结束。
- 单步跳过 (Step Over, F10): 执行当前这一行代码。调试控制台有对应代码结果输出
- 单步进入 (Step Into, F11): 执行当前高亮显示的这一行代码。如果这一行是函数调用,它会进这个函数的内部,停在函数的第一行。
- 单步跳出 (Step Out, Shift+F11): 如果您已经进入了一个函数内部,这个按钮会执行完这个函数剩下的所有代码,然后返回到调用它的地方。
- 变量窗口 variables
- Locals (局部变量):初始的时候是分配内存空间,进行下一步执行才会赋值
- Registers (寄存器):CPU底层寄存器对应的实时值