当前位置: 首页 > java >正文

Linux应用开发-windows,linux环境下相关工具

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.xdnf.cn/news/19575.html

相关文章:

  • Adobe Illustrator 2025最新破解教程下载安装教程,Illustrator2025最新版下载
  • AI 安全与伦理:当大模型拥有 “决策能力”,我们该如何建立技术边界与监管框架?
  • 新手向:前端开发中的常见问题
  • NLP大语言模型数据准备
  • 基于 DNA 的原核生物与微小真核生物分类学:分子革命下的范式重构​
  • Shell编程(二):正则表达式
  • FastK v1.1 安装与使用-生信工具59
  • Gradle vs. Maven,Java 构建工具该用哪个?
  • 喜讯!华清远见参与制定的《电子产品印制电路板可制造性设计(DFM)和可靠性设计规范》正式发布
  • 【无标题】训练、推理适用的数据类型
  • 专题:2025全球新能源汽车供应链核心领域研究报告|附300+份报告PDF、数据仪表盘汇总下载
  • 关闭页面强制清除所有循环定时器
  • ES6手录02-字符串与函数的扩展
  • Kotlin 协程异步任务工具类:高效处理异步操作与超时控制
  • UE5 为啥原生的NotifyState写逻辑会有问题
  • 开源低代码平台(NocoBase)
  • 20250828的学习笔记
  • 9.1日IO作业
  • 2025年09月01日Github流行趋势
  • 99、23种设计模式之组合模式(8/23)
  • 09.《路由基础知识解析和实践》
  • 基于外部对照数据借用的临床试验统计分析方案设计与仿真研究
  • PitVis-2023挑战赛:内镜下垂体瘤手术视频中的手术流程识别|文献速递-深度学习人工智能医疗图像
  • 如何把指定阿里云文件夹下的所有文件移动到另一个文件夹下,移动文件时把文件名称(不包括文件后缀)进行md5编码
  • 从理论到实践,深入剖析数据库水平拆分的安全平滑落地
  • Spark自定义累加器实现高效WordCount
  • Spark和Spring整合处理离线数据
  • promptoMANIA-AI绘画提示词生成器
  • Electron使用WebAssembly实现CRC-16 CCITT校验
  • macOS中Homebrew安装PHP的详细步骤(五)