Git/Ctags/Vim/GDB基础笔记

>>>>>>>>>>>>>>>>>>>>>>>>>>> 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文件的规格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值