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文件的規格
總結
以上是生活随笔為你收集整理的Git/Ctags/Vim/GDB基础笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洋葱头历险记的作者是谁啊?
- 下一篇: 收物甩wh