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连接在这里插入图片描述
  • 添加新的 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中terminaluname -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底层寄存器对应的实时值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95112.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95112.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95112.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java泛型通配符详解:搞懂?/extends/super用法,避开集合操作踩坑点

上次跟你们聊了泛型的基础用法&#xff0c;今天接着往下说 —— 泛型里还有个挺重要的概念叫 “通配符”&#xff0c;就是那个问号 “?”&#xff0c;很多人第一次见都懵&#xff1a;这玩意儿跟普通泛型有啥区别&#xff1f;为啥有时候非得用它不可&#xff1f;小索奇当初也卡…

EXCEL开发之路(二)跨表交互模拟—仙盟创梦IDE

在车辆租赁行业&#xff0c;数据的高效管理与分析对于企业的运营决策、资源调配及客户服务优化至关重要。自建 Excel 实现多表统计交互&#xff0c;如同为行业装上了效能驱动引擎&#xff0c;助力企业在复杂多变的市场环境中稳健前行。一、精准资源管理&#xff0c;优化车辆调配…

医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(八)

5.4 性能测试与结果分析 为了评估GoEHRStream的性能,我们设计测试模拟真实的医院数据流场景,并测量关键指标。 5.4.1 实验环境 硬件: CPU: Intel Xeon E-2288G (8 cores, 16 threads) RAM: 32 GB DDR4 Storage: 512 GB NVMe SSD (用于GoEHRStream和BadgerDB) Network: 1 G…

开关电源设计“反馈回路”部分器件分析

目录 主要分析问题如下&#xff1a; 一、问题1 二、问题二 分析电路如下&#xff1a; 主要分析问题如下&#xff1a; 1、分析TL431芯片1、2两引脚间并联电阻和电容&#xff08;RC电路&#xff09;的作用&#xff1f; 2、PC817A光耦输入两个引脚间并联电阻的作用&#xff1f;…

AI 编程新玩法:用 yunqi-saas-kit 框架制作小游戏,看广告变现轻松赚钱​

AI 编程新玩法&#xff1a;用 yunqi-saas-kit 框架制作小游戏&#xff0c;看广告变现轻松赚钱 在数字经济快速发展的当下&#xff0c;AI 技术正不断渗透到各个领域&#xff0c;其中 **#AI 编程凭借高效、便捷的优势&#xff0c;成为不少开发者和创业者的新选择。尤其是在小游戏…

Kafka 架构原理

一个kafka集群中包含一个或多个Producer、一个或多个broker、一个或多个ConsumerGrop以及一个Zookeeper集群。kafka通过Zookeeper管理kafka集群配置、leader副本的选举、生产者的负载均衡等。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消…

用 PyTorch 搭建 CNN 实现 MNIST 手写数字识别

在图像识别领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09; 凭借其对空间特征的高效提取能力&#xff0c;成为手写数字识别、人脸识别等任务的首选模型。而 MNIST&#xff08;手写数字数据集&#xff09;作为入门级数据集&#xff0c;几乎是每个深度学习学习者的 “第…

CTFshow系列——命令执行web61-68

本篇文章介绍了不同了方法进行题目的解析以及原因讲解。 文章目录Web61尝试了一下&#xff0c;被过滤的payload如下&#xff1a;所以&#xff0c;根据上述思路&#xff0c;这里尝试过的payload为&#xff1a;Web62&#xff08;同Web61&#xff09;Web63&#xff08;同Web62&…

.Net程序员就业现状以及学习路线图(二)

一、.NET程序员就业现状分析 1. 市场需求与岗位分布 2025年.NET开发岗位全国招聘职位约1676个&#xff0c;占全国技术岗位的0.009%&#xff0c;主要集中在一线城市如深圳、上海等地。就业单位类型分布为&#xff1a;软件公司占43.3%&#xff0c;研发机构占33.1%&#xff0c;物联…

MTK Linux DRM分析(二十二)- MTK mtk_drm_crtc.c(Part1)

一、代码分析 mtk_drm_crtc.c以mtk_crtc_comp_is_busy函数为界限进行拆分分析 static const struct drm_crtc_funcs mtk_crtc_funcs = {.set_config = drm_atomic_helper_set_config,.page_flip = drm_atomic_helper_page_flip,.destroy = mtk_drm_crtc_destroy,.reset = mtk…

stm32f103c8t6 led闪灯实验

目录 闪灯原理 2种接线方式控制闪灯 使用推挽接法 使用开漏接法 看原理图 写代码 闪灯原理 LED灯有个2-10mA的电流就可以点亮 3.3/5100.006A6mA 2种接线方式控制闪灯 使用推挽接法 当设置推挽模式时&#xff0c;CPU控制寄存器写0&#xff0c;IO引脚输出低电压&#xff0…

“我同意”按钮别乱点——你的“职业EULA”漏洞扫描报告

尊敬的审核&#xff1a; 本人文章《“我同意”按钮别乱点——你的“职业EULA”漏洞扫描报告》 1. 纯属技术交流&#xff0c;无任何违法内容 2. 所有法律引用均来自公开条文 3. 请依据《网络安全法》第12条“不得无故删除合法内容”处理 附&#xff1a;本文结构已通过区块链存证…

Product Hunt 每日热榜 | 2025-09-01

1. A01 标语&#xff1a;你个人的新闻助手 介绍&#xff1a;A01 是你的新闻助手&#xff0c;可以帮你关注你关心的任何话题。只需告诉它你想了解什么&#xff0c;它就能为你带来最新的文章。 产品网站&#xff1a; 立即访问 Product Hunt&#xff1a; View on Product Hunt…

【OpenFeign】基础使用

【OpenFeign】基础使用1. Feign介绍1.1 使用示例1.2 Feign与RPC对比1.3 SpringCloud Alibaba快速整合OpenFeign1.3.1 详细代码1. Feign介绍 1.什么是 Feign Feign 是 Netflix 开发的一个 声明式的 HTTP 客户端&#xff0c;在 Spring Cloud 中被广泛使用。它的目标是&#xff…

访问相同的url,相同入参的请求,Apifox/Postman可以正常响应结果,而本地调用不行(或结果不同)

文章目录问题概述Apifox查看实际请求总结问题概述 开发中有一个需求需要去别的系统中拿数据&#xff0c;配置好相关参数后发起请求时发现响应结果和在Apifox上不同&#xff0c;Apifox上正常显示数据&#xff0c;而本地调用后返回数据不存在。 这就很奇怪了&#xff0c;想了很多…

数据结构(C语言篇):(七)双向链表

目录 前言 一、概念与结构 二、双向链表的实现 2.1 头文件的准备 2.2 函数的实现 2.2.1 LTPushBack( )函数&#xff08;尾插&#xff09; &#xff08;1&#xff09;LTBuyNode( ) &#xff08;2&#xff09;LTInit( ) &#xff08;3&#xff09;LTPrint( ) &#x…

从拿起简历(resume)重新找工作开始聊起

经济萧条或经济衰退在经济相关学术上似乎有着严格的定义&#xff0c;我不知道我们的经济是否已经走向了衰退或者萧条&#xff0c;但有一点那是肯定的&#xff0c;那就现在我们的经济肯定是不景气的。经济不景气会怎么样&#xff1f;是的&#xff0c;会有很多人失业&#xff0c;…

OS+MySQL+(其他)八股小记

鲁迅先生曾经说过&#xff0c;每天进步一点点&#xff0c;妈妈夸我小天才。 依旧今日八股&#xff0c;这是我在多个文档整合一起的&#xff0c;可能格式有些问题&#xff0c;请谅解。 操作系统 1.进程和线程的区别&#xff1f; 进程是代码在数据集合的一次执行活动&#xff0c;…

Transformer的并行计算与长序列处理瓶颈总结

&#x1f31f; 第0层&#xff1a;极简版&#xff08;30秒理解&#xff09;一句话核心&#xff1a;Transformer像圆桌会议——所有人都能同时交流&#xff08;并行优势&#xff09;&#xff0c;但人越多会议越混乱&#xff08;长序列瓶颈&#xff09;。核心问题 并行优势&#x…

Vue 3 useId 完全指南:生成唯一标识符的最佳实践

&#x1f4d6; 概述 useId() 是 Vue 3 中的一个组合式 API 函数&#xff0c;用于生成唯一的标识符。它确保在服务端渲染&#xff08;SSR&#xff09;和客户端渲染之间生成一致的 ID&#xff0c;避免水合不匹配的问题。 &#x1f3af; 基本概念 什么是 useId&#xff1f; useId…