Git/Ctags/Vim/GDB基础笔记

2023-10-27

>>>>>>>>>>>>>>>>>>>>>>>>>>> Git基础知识 >>>>>>>>>>>>>>>>>>>>>>>>>
git add file 增加新的文件跟踪,以及将修改后的文件放入暂存区
git status -uno 查看被跟踪文件的修改情况
git commit -m "注释"  添加修改说明并将暂存区修改确认为本地最新版本,可以add多个文件后一起commit
*******************************************注释格式*********************************
变更类型:
功能描述:
方案概述:
涉及修改:
自测说明:
合入版本:
修改时间:
*****************************************************************************************
git push origin HEAD:refs/for/master  推送到远端等待评审
git commit --allow-empty -m "..."  提交无修改文件
1.commit之后,如果需要修改注释内容可以使用命令
git commit --amend
进入Vi编辑模式改写注释内容

2.在push远端之后,重新修改了某文件,可以根据以下命令,将修改合并到本次提交
git add file
git commit --amend  不修改任何内容
git push origin HEAD:refs/for/master 修改同步到远端
git log  查看远端push的和本地已经commit的文件及其commit信息
git diff origin/master HEAD  查看本地已commit的内容与远端的区别(已经commit的本地修改内容)

在git commit之后不要着急直接git push,先使用git diff origin/master HEAD确定自己已经修改内容的详细信息是否正确
若是不正确,继续做修改后git add,然后git commit --amend,将新的修改合入到上一次commit版本中
最后再git push

想要获取历史版本的文件,先 git clone得到最新的版本,之后执行:git checkout commit-id即可回退到历史版本
git checkout 0be417e8f776e61f18696980f7a59589048e71f2

[分支]
git switch -c <name> 创建并切换到新的分支
git switch master  切换到已有的master分支
git branch -r  查看所有分支
git branch -av  查看当前所有分支,当前所在分支及切换历史
git checkout -b local_develop remotes/origin/develop  创建本地分支,并设置其跟踪某个远程分支
git branch --set-upstream-to=remote_name/branch_name branch_name  设置当前分支追踪某个远程分支
git branch <name> 创建分支
git checkout <name>或者git switch <name>  切换分支
git merge <name> 合并某分支到当前分支
git branch -d <name>  删除分支
git pull origin develop 从指定分支拉取代码

[git配置]
git config --global  --list 查看用户配置信息
git config --global user.name "myname"
git config --global user.email  "test@gmail.com"  修改用户配置信息
git config --system --list  查看系统配置信息
git config --local  --list  查看本地仓库配置信息

>>>>>>>>>>>>>>>>>>>>>>>>>>> Ctags基础知识 >>>>>>>>>>>>>>>>>>>>>>>>>
ctags –R *  遍历当前目录下所有文件并标记
 vim –t tag_name  寻找标记tag_name并用vim打开文件
*******************************************************************
*Tags文件中包括这些对象的列表:                                   *
*用#define定义的宏                                                *
*枚举型变量的值                                                   *
*函数的定义、原型和声明                                           *
*名字空间(namespace)                                            *
*类型定义(typedefs)                                             *
*变量(包括定义和声明)                                           *
*类(class)、结构(struct)、枚举类型(enum)和联合(union)     *
*类、结构和联合中成员变量或函数                                   *
*******************************************************************
:ts  列出多个可供选择的tag对象所在文件
:[count]tp/tn  选择上/下一个文件,count为一次性跳转的行数,在列表中执行后要ts刷新定位
:Ctrl+]   跳转到变量或者函数定义的源文件位置
:Ctrl+t    返回上一次查询的tag位置
:tag tag_name /tselect tag_name  跳到tag_name标签
:Enter  由列表模式进入到vim编辑模式

>>>>>>>>>>>>>>>>>>>>>>>>>>> Vim常用技巧 >>>>>>>>>>>>>>>>>>>>>>>>>

光标移动
    shift+H    移动光标到屏幕顶端(move to top of screen)
    shift+M    移动光标到屏幕中央(move to middle of screen)
    shift+L    移动光标到屏幕底端(move to bottom of screen)

全选(高亮显示):按esc后,然后ggvG或者ggVG
全部复制:按esc后,然后ggyG
全部删除:按esc后,然后dG

快速注释
Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下ESC,Vim会自动将你选中的所有行首都加上注释,保存退出完成注释。
利用块操作完成批量插入字符

快速消释
Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释,ESC保存退出。

撤销
u 撤销
CTRL + r 重做

>>>>>>>>>>>>>>>>>>>>>>>>>>> GDB常用命令 >>>>>>>>>>>>>>>>>>>>>>>>>
[启动控制台]
gdb  直接启动gdb控制台
file program  加载可执行程序
set args  -i  path   为main函数传入命令行参数 “-i  path”
gdb --args program  -i  path 加载可执行程序并为main函数传入命令行参数“ -i  path”
gdb program core 调试程序program的core文件,调试core-dump不需要运行程序,可以直接找到报错位置,查看函数堆栈定位故障

[源码显示和编辑]
源码的显示和编辑前提是源码的内容未改变、源码的路径未改变
info source    查看当前源码文件的编译信息
info sources  查看所有源码文件的编译信息
l 从main 函数入口处开始列出源码,如果不l某函数,则不会跳转至其源文件
l 10 显示第10行上下的源码内容(基于上次l的地址)
l -10  向上跳转10行
l +10 向下跳转10行
l foo  跳转至函数foo()进行显示
l test.cpp:100 查看test.cpp的第100行内容
回车 重复前一次命令
edit test.cpp:10 
edit test.cpp:foo  编辑test.cpp文件的foo函数处源码,选择vi编辑

调试一个正在运行中的程序,调试正在运行中程序,则无法强制终止该程序
ps -all  查看程序的进程号
gdb program 1234  调试进程号为1234的program程序

[设置断点]
break 10 在第10行设置断点(ls定位到的文件,默认为main函数所在文件)
break foo 在函数foo()设置断点(ls定位到的文件,默认为main函数所在文件)
break test.cpp:100 在test.cpp的第100行设置断点
break test.cpp:foo 在test.cpp的foo函数设置断点
break *address 在函数运行的内存地址address处设置断点

info break 查看已设置的所有断点信息
info break 1 查看断点1的相关信息

[设置观察点]
观察点与断点类似,不同的地方在于停止的逻辑,断点让程序在执行到代码的某一行时停止,而观察点让程序在某一变量发生改变时停止
观察点的设置方法比较特殊,全局变量和局部变量的设置有区别
watch var  全局变量观察点,每次改变该值程序停止,打印变量值变化
break foo  局部变量在观察之前,需先在该局部变量所在函数入口或者代码块变量初始化之后的位置设置断点并运行程序(循环块中可把被观察变量所在行设置为断点行),等gdb加载该栈帧之后,方可观察变量值的变化情况,在退出函数或者代码块(或者run命令重跑程序)时,断点会保存,但是观察点自动清除
watch var/expr      局部变量观察点,每次改变该值程序停止,打印变量值变化
rwatch var/expr    当表达式(变量)expr被读时,停住程序。
awatch var/expr    当表达式(变量)的值被读或被写时,停住程序。

[查看信息]
p i       显示断点处变量i的值
p/a i    以16进制显示断点处变量i的值
x 按16进制格式显示变量
d 按10进制格式显示变量
u 按16进制格式显示无符号整型
o 按8进制格式显示变量
t 按2进制格式显示变量
a 按16进制格式显示变量
c 按字符格式显示变量
f 按浮点数格式显示变量
bt    查看程序运行至断点处的函数堆栈
f       显示当前函数栈帧和位置
display expr/value  设置显示表达式或者变量,在程序运行停止时打印该变量值
undisplay 10   取消第10个表达式或者变量值的显示
f 10  选择编号为10层的函数栈
info f  打印该函数栈层的详细信息
info locals  打印出当前函数中所有局部变量及其值
set print addr off 关闭函数地址显示

[其他]
n  单条语句向下执行
c   继续执行至下一个断点或者结束
clear 清理所有断点和观察点,局部观察的清理需退出栈帧
clear 10/foo   清除第10行断点或者清除函数foo断点
delete 10        清除第10号断点
enable/disenable  10 使能或者失能第10个断点
p x=i    设置变量i的值(栈层已载入该变量),或者set var width=47

shell ls 在GDB控制台查看当前目录下所有文件
shell   切换到shell控制台,exit命令退出shell控制台
make   编译当前目录下的源码
cd        cd命令可以切换GDB控制台操作的目录位置
pwd     pwd命令获取GDB控制台的路径

ulimit -c unlimited  设置系统允许生成的core文件大小
ulimit -a  查看系统允许生成core文件的规格

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git/Ctags/Vim/GDB基础笔记 的相关文章

  • git 显示更改了 0 次插入(+)、0 次删除(-)的文件

    很多时候 当我运行 git diff shortstat 命令时 它会输出以下内容 17 files changed 0 insertions 0 deletions 即使没有插入或删除 文件怎么可能发生变化 如果项目中某些文件的文件权限已
  • 如何克隆 bitbucket 存储库?

    一段时间后重新开始工作 我似乎不知道如何克隆 bitbucket 存储库 知道为什么我收到 未找到 错误吗 git clone verbose https bitbucket org helllamer mod openid Cloning
  • 如何删除所有意外添加到git系统的本地文件

    我是 git 系统的新手 我可能犯了一个错误 将我所有的本地文件集成到 git 系统中 当我说出现以下错误时 我使用 vs代码编辑器 并放弃所有更改 Git fatal You are on a branch yet to be born
  • svn diff 或 git diff 中带有 at 符号的“@@...@@”元行是什么意思?

    当我使用svn diff or git diff它显示如下行 1 5 1 9 他们的意思是什么 这些称为 c hunk 标头并包含范围信息 它们周围有双标志 它们的格式如下 l s l s where l是起始行号并且s是 c hunk 应
  • git - 奇怪的分支合并错误,我不知道如何解决

    当我 git status 时 我收到以下错误消息 On branch master Your branch and origin master have diverged and have 1 and 2 different commit
  • GitHub 恢复或重置? [复制]

    这个问题在这里已经有答案了 正如您在图片中看到的 我正在功能 forum kolo 3 中工作 我决定完成该功能并将其合并到开发中 但没有将更改推送到远程开发 因此它只是本地更改 然后我意识到这是一个坏主意 现在我想删除这个合并 就像它从未
  • 查询对 git 存储库的最后一次提交而不进行克隆

    假设我希望从 URL 克隆一个大型 git 存储库 当且仅当在最后一次提交到 master 时n 比如 24 小时 我不想克隆它 因为对于这么大的存储库来说这相当耗时 我也不希望克隆它一次然后检查例如定期查看 git 状态 我希望能够知道克
  • 在 git 中标记多个分支?

    我有一个有两个分支的 git 存储库 一个用于制造 测试的代码 另一个是实际的生产固件 它们几乎相同 现在是时候剪切一个版本并发送给制造商了 所以我自然想在两个分支上放置一些适当的标签 但是 似乎 git 不允许我在两个分支上放置相同的标签
  • 如何在microsoft windows下使用ansible克隆git存储库

    Ansible 2 1 centos7下控制主机 windows 10数量作为客户端 我需要在远程端克隆 git 存储库 但不知道如何执行此操作 没有Windows 本机模块 http docs ansible com ansible li
  • 如何撤消成功的“gitcherry-pick”?

    在本地仓库中 我刚刚执行了git cherry pick SHA没有任何冲突或问题 然后我意识到我不想做我刚才所做的事情 我还没有把这个推到任何地方 我怎样才能去掉这个樱桃镐 我想知道是否有办法做到这一点 当我有其他本地更改时 当我没有其他
  • git - 将分支描述推送到远程

    我们每周举行一次集成会议 审查未合并到 master 的分支中的代码 作为起点 我们用它来列出打开的分支 git branch a no merged master 我们以票号命名我们的分支机构 因此很难看出我们真正在看什么 我回来了 BU
  • 意外推送提交:更改 git 提交消息

    在我的本地存储库中 我有一次提交的提交消息不正确 我已经发布了错误的提交消息git push 现在 远程存储库 由 GitHub 托管 也有错误的提交消息 我已经尝试过了git commit amend 但发现在这种情况下它对我不起作用 因
  • Git Svn 的问题,为什么为什么我永远不能 dcommit?

    我有一个 git svn 存储库 git svn clone http myrepo myrepo 我不想在master工作 git checkout b development 黑客了一段时间 git checkout master gi
  • 在 Git 上保存 Excel 文件的版本,以便稍后手动协调差异

    我将用一个月的时间更新Excel文件 这些文件的语言不是英语 我想我也可以使用 Git 来管理我想做的事情 情况 初始提交 我有一个用其他语言编写的 Excel 文件 我必须执行一些工作并用其中的数据填充 Excel 文件 My plan
  • 通过 npm 节点自动化 Git 提交 + 版本控制 + 标记

    我一直试图得到的是 使用 npm version 来更新 package json 并创建一个标签 然后提交我的更改 通过这种方式 我将能够按版本添加标签 自动版本控制并提交信息 我遇到的问题是 当我使用 npm 版本时 它会自动执行标记
  • iOS CoreData:“数据模型版本编译器”错误

    我在项目中创建了一个数据模型文件 ChatModel xcdatamodeld 然后我合并了github上的分支 project pbxproj 中存在冲突 我修好了它们 然后错误就发生了 Users mac zhongqing ios Z
  • 删除不在 master 上的所有提交

    我有一个本地 git 存储库 有几个分支 我想在本地删除所有非主分支 以及不在主分支上的提交 如何删除不在主分支上的所有提交 我后来做了一个失败的樱桃选择 因为它到达了一个合并的提交 所以它有两个父母 我需要做什么才能使它只有一个父级 来自
  • 使用git在测试和生产环境之间同步数据库

    我正在尝试在 php mysql 应用程序的开发过程中实现 git 到目前为止 我已经设置了 git repos 并且我们正在使用本地计算机进行测试 并且我们成功地将其用于文件 但我真的不知道如何处理数据库 服务器上有一个 cron 脚本
  • 使用 `git for-each-ref` 和 `git log` 显示 origin 上每个远程分支上的最新提交

    完成后git fetch all prune为了从远程存储库获取引用 我现在想查看每个分支上的最新提交origin 命令 git for each ref format refname short grep origin 列出所有 16 个
  • xcode 中的 Git(无分支)

    在我的 ios 项目中 我使用 git 作为 scm Xcode 存储库列表包括 至少在 Xcode 中 无分支 的内容 前段时间我可能检查了以前的提交 但没有创建分支 从那时起我已经做出了大约 40 次提交 现在我想从我的下一个最后提交分

随机推荐

  • activate : 无法将“activate”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1

    在pycharm里面错误展示 无法激活虚拟环境 解决方法 以管理员身份运行 PowerShell 并输入 set executionpolicy remotesigned 再输入 y 如图 输入完后重新打开pycharm 再次输入 acti
  • SpringBoot项目整合Mybatis时Mapper.xml文件的存放位置

    目录 方式一 放在与Mapper接口同级目录 方式二 在resources创建Mapper接口同名文件夹用来存放Mapper xml文件 方式三 在resources目录下创建mapper文件夹存放mapper xml 推荐 方式一 放在与
  • git 签出(恢复)指定文件

    在项目开发中 偶尔会因为误删文件或其他原因需要从git仓库中恢复某些文件 此篇文章将介绍如何通过git从历史提交记录 分支记录恢复指定文件 1 git checkout 说明 使用git checkout除了可以切换分支外 还可以签出指定文
  • Elasticsearch Java High Level REST Client(Exists API)

    Exists API 如果文档存在 则existsAPI返回true 否则返回false Exists请求 它就像Get API一样使用GetRequest 支持所有可选参数 由于exists 只返回true或false 我们建议关闭获取
  • 目标检测之Yolov3与Anchor-Free

    原文 目标检测之RCNN Yolo SSD RetinaNet与Anchor Free dagongji10的博客 CSDN博客 2 2 Yolo v3 2018 Yolo v3 论文比 Yolo v2 还要随意 具体优化内容主要有 bbo
  • 用python绘制曼彻斯特编码等八种常见数据编码方式的波形图

    用python绘制八种数据编码方式的波形图 2020春季北京航空航天大学计算机学院物联网引论课程作业 介绍八种常见数据编码方式并实践画出波形图 本文使用了python中的二维图像模块matplotlib 博主在信号与通信原理方面功底不深 如
  • deepin的踩坑问题与解决方案,以及使用分享(持续更新)

    笔者目前的电脑环境是Redmibook 14 AMD的锐龙版 R5 3700U 只有集成显卡 不同换环境下问题原因不一定相同 如驱动等兼容性问题 可以借鉴解决思路 但更多问题还是具有共性 Q1 u盘安装的时候 卡在蓝色背景图 无安装程序启动
  • e3 服务器虚拟机,e3 虚拟机

    e3 虚拟机 内容精选 换一换 Hypervisor能实现同一物理机上不同虚拟机之间的资源隔离 避免虚拟机之间的数据窃取或恶意攻击 保证虚拟机的资源使用不受周边虚拟机的影响 用户使用虚拟机时 仅能访问属于自己的虚拟机的资源 如硬件 软件和数
  • 【Ethernet】以太网卡LAN8720A分析和使用

    文章目录 1 LAN8720A简介 2 PHYAD 0 PHY地址配置 3 MODE 2 0 Mode配置 4 nINTSEL nINT REFCLKO配置 5 REGOFF 配置内部 1 2V电压源 6 SMI MDC MDIO 总线接口
  • android studio jdk se 8,java - Is JDK 1.8 fully supported by Android Studio? - Stack Overflow

    Actually you get all sorts of crazy Gradle errors when trying to build Android Studio projects with Java 8 like 2016 04
  • C++避坑——most vexing parse问题

    1 坑 的问题是什么 先看一段代码 class Functor public void operator std cout lt lt 我是线程的初始函数 lt lt std endl int main std thread t Funct
  • 第六章:认识Java的API-使用Java函数库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第六章 认识Java的API 使用Java函数库 Java内置有数百个类 如果你知道如何从统称Java API的Java的函数库中查找所需功能 那就不用再造轮子了 核
  • 检测属性

    点上面关注免费学习前端知识 JavaScript对象可以看做属性的集合 我们经常会检测集合中成员的所属关系 判断某个属性是否存在于某个对象中 可以通过in运算符 hasOwnPreperty 和propertyIsEnumerable 方法
  • HTML常见标签总结

    目录 1 标题标签 2 段落标签 3 字体修饰标签 4 图片标签 5 超链接标签 6 表格标签 7 列表标签 8 表单标签 9 下拉菜单 10 多行文本框 1 标题标签 一级标题是 h1 h1 中间填上标题的内容 一共可以设置六级标题 数字
  • 【Git笔记】添加暂存区与提交本地库

    本文以提交 hello txt 为例 在开始之前普及一个快捷方式 在 Linux 中 文本复制为 esc gt yy 粘贴为 d 查看本地库状态 git status 当文本只停留在工作区时 本地状态如下 添加暂存区 git add hel
  • Naviact无法连接到MySQL数据库

    无法连接到MySQL数据库 省流版 服务器没有开MySQL的端口 之所以还要写一篇文章 是因为开端口只需要一分钟 而根据各种现象与线索推断出没有开端口则需要三个小时 问题背景 在服务器上安装了Linux虚拟机 然后在虚拟机上安装MySQL
  • 文本分类之模型初探

    这里写自定义目录标题 简说回归模型 逻辑回归模型介绍 逻辑回归模型应用 简说回归模型 回归模型是对统计关系进行定量描述的数学模型 研究的是因变量和自变量之间的关系 研究回归模型要用到回归方法 常见的回归方法有线性回归 逻辑回归 多项式回归等
  • C语言编写一个简单的选择题答题系统

    上个星期 我们老师给我们布置了一道非常变态的作业题 开始一看只有一道题 欣喜若狂 以为老师终于大发慈悲了一回 结果点开一看 长这样 顿时就傻了眼 对于一个刚接触C语言一两个月的小白来说 不能说不会做 只能说看不懂 哭笑 哭笑 但是经过几天的
  • html,css初学

    安装VSCODE 插件 live server html support html 然后为了更好地理解 请逐步输入 并及时查看效果 div class box h1 非顶级程序员 h1 h2 hhh h2 img src tes div
  • Git/Ctags/Vim/GDB基础笔记

    gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Git基础知识 gt gt gt gt gt gt gt gt gt gt g