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