標籤:文本編輯 調用 *** printf ace 最新 錯誤 連結 依賴
Vim test.c +24 開啟並定位到24行
命令模式
1、編輯模式
h 向左
j 向下
k 向上
l 向右
i 輸入 insert
gg=G 可以首行縮排
yy 拷貝
p 粘貼
R 替換模式
r 替換當前位置,回到命令模式
dd 刪除當前行
3dd 刪除游標以下3行
u 撤銷
:行號 轉移到對應行
J 將下一行拼接到上一行末尾
$ 當前行的行尾
0或^ 當前行的行首
w 跳到下一個單詞
b 跳到上一個單詞
} 跳到下一個空行
{ 跳到上一個空行
在{或}上按%可以在兩者之間跳躍切換
dw 從游標位置刪除到當前單詞尾部
db 從游標位置刪除到當前單詞首部
x 刪除一個字元
K或3K 對於系統函數或庫函數可以跳轉到其協助手冊
v 可視化(jk操作後 x刪除y複製)只能選中行
ctrl+v 塊可視化(可以選擇字元)
/ 尋找(n下一個N上一個)
?單詞 尋找(N下一個n上一個)
2、末行模式(:)
:w 儲存
:q 退出
:set nu 顯示行號
:no nu 取消行號
:50,59s/舊內容/新內容/g 50-59行的所有舊內容替換成新內容(不要g則替換每行第一個出現的舊內容)
:%s/舊內容/新內容/g 全文替換
:vsp 檔案名稱 垂直分屏
:sp 檔案名稱 水平分屏
:q 退出
:r 將另外一個檔案匯入到游標所在位置
ctrl+ww 跳到另一屏
gcc –E(預先處理)/-S(彙編)/-c(串連)/-v(顯示編譯過程) 檔案名稱 -o(重新命名)
gcc內部調用cc1編譯器 as彙編器 collect2連結器
strip 可執行檔名 對代碼進行瘦身
ldd 可執行檔 可查看程式用了哪些動態庫
gdb調試器(gcc 檔案名稱 –o 執行檔案名稱 -g)
list(l) 行號 顯示原始碼
break(b) 行號/函數名 加斷點
info break(i b) 查看斷點資訊
run(r) 執行
next(n) 逐步執行,不進入函數
print(p) 列印變數
whatis 變數名 查看變數類型
delete(d) 斷點編號 刪除斷點
b 17 if i==9 在條件等於9的時候設定斷點
step(s) 進入函數調用
finish 退出函數
breaktrace(bt) 查看函數調用棧
處理段錯誤——會產生一個core檔案,裡面會顯示在第幾行出現錯誤:
- gcc –g
- ulimit -c unlimited
- ./a.out
- gdb ./a.out core.****
makefile
目標:依賴檔案
Tab命令
第二種方式
$^ 代表所有的依賴檔案 [email protected] 代表目標檔案
第三種方式
%.o:%.c
gcc –c $^ -o [email protected]
可以在makefile裡寫clean功能,使用make clean
.PHONY:clean 使clean保持最新
OBJS=main.o \
plane.o
clean:
rm –rf $(OBJS) 這裡的objs是前面定義變數
1、在scanf中”%*c”是讀取並丟棄掉該字元,用於讀取丟棄分行符號
或”(空格)%c” 這個操作可以忽略字元之前的空白符
或“%[^;%*c]” 這個操作可以設定想讀取的字元,屬於輸入格式化(不擷取分號,例如資料庫)
2、記憶體緩衝區在以下5種情況時才會將緩衝區中內容輸出
\n
scanf
exit
核心緩衝區滿
fflush(stdout)
3、printf 輸出到螢幕
fprintf 輸出到檔案
sprint 輸出到數組
linux讀elf檔案
readelf –h(頭)/-a(全部)
看elf檔案的彙編代碼
objdump -dS
vim文字編輯器的基本操作及gcc、gdb的基本使用方法