GDB是GNU發佈的一款功能強大的程序調試工具。GBD主要完成下面三個方面的功能:
1,啓動被調試程序。
2,讓被調試的程序在指定的位置停住。
3,當程序被停住時,可以檢查程序狀態(如變量值)。
1,編譯生成可執行文件
gcc -g test.c -o test
2,啓動GDB
gbd test
或者
gdb
file test
3,在 XXX 函數處設置斷點
break main (或者 b main)
4,運行程序
run (或者 r)
5,單步運行
next (n)
6,繼續運行
continue (c)
7,退出GDB
quit (q)
* list (l) 查看程序
* break (b) 函數名 在某函數入口處添加斷點
* break (b) 行號 在指定行添加斷點
* break (b) 文件名:行號 在指定文件的指定行添加斷點
* break (b) 行號 if 條件 當條件爲真時,指定行號處斷點生效,例 b 5 if i=10
當 i 等於 10 時第5行斷點生效
* info break 查看所有設置的斷點
* delete (d) 斷點編號 刪除斷點
* run (r) 開始運行程序
* next (n) 單步運行程序(不進入子函數)
* step (s) 單步運行程序(進入子函數)
* continue (c) 繼續運行程序
* print (p) 變量名 查看指定變量值
* finish 運行程序,直到當期函數結束
* watch 變量名 對指定變量進行監控
* quit (q) 退出 gdb
==================================================================
Makefile (術語)
規則:用於說明如何生成一個或多個目標文件,規則格式如下:
targets:prerequisites
command
目標 依賴 命令 (命令前是 tab 鍵)
例: main.o:main.c
gcc -c main.c
在makefile中,規則的順序是很重要的,因爲,makefile中只應該有一個最終目標,
其他的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終目標是什麼。
一般來說,定義在makefile中的目標可能會有很多,但是第一條規則中的目標將被確立
爲最終的目標。
make命令默認在當前目錄下尋找名字爲 makefile/Makefile的工程文件,當名字不爲
這兩者之一時,可以使用如下方法指定:
make -f 文件名
Makefile中把那些沒有任何依賴只有執行動作的目標稱爲“僞目標”(phony targets)
例: .PHONY:clean
clean:
rm -f hello main.o
".PHONY"將"clean"目標聲明爲僞目標
====== 變量 =========
obj=main.o func1.o func2.0
hello:$(obj)
gcc $(obj) -o hello
obj爲變量
在makefile中,存在系統默認的自動化變量
* $^ : 代表所有的依賴文件
* $@ : 代表目標
* $< : 代表第一個依賴文件
例: hello:main.o func1.o func2.o
gcc main.o fun1.o func2.o -o hello
===>>
hello:main.o func1.o func2.o
gcc $^ -0 $@
makefile中"#"字符後的內容被視作註釋。
@ :取消回顯
例: hello:hello.c
@gcc hello.c -o hello