gdb偵錯程式與make工程管理器

2021-08-08 23:30:57 字數 2257 閱讀 1838

gdb偵錯程式

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具,gdb主要可幫助工程師完成下面4個方面的功能:

1.啟動程式,可以按照工程師自定義的要求隨心所欲的執行程式。

2.讓被除錯的程式在工程師指定的斷點處停住,斷點可以是條件表示式。

3.當程式被停住時,可以檢查此時程式中所發生的事,並追索上文。

4.動態地改變程式的執行環境。

#include

main() 

#include

main() 

#includemain() 

int a=1, b=1, sum;   

sum=a+b;   

printf(「a+b=%d」,  sum);

gdb中幾個常用的命令如下,格式:(gdb) ***

1. list(l) :顯示程式中的**,常用使用格式有:

list        輸出從上次呼叫list命令開始往後的10行程式**。

list -      輸出從上次呼叫list命令開始往前的10行程式**。

list n     輸出第n行附近的10行程式**。

list function     輸出函式function前後的10行程式**。

2. run :啟動程式,在run後面帶上引數可以傳遞給正在除錯的程式。(gdb) r

3.break:在程式中設定斷點,當程式執行到指定行上時,會暫停執行。使用格式:break +要設定斷點的行號 (gdb)b 15

4.info b:顯示斷電的情況 (gdb) info b

5.print :列印變數或表示式的值。使用格式:    (gdb) print   n

6.continue :使程式在暫停在斷點之後繼續執行。(gdb)c

7.step/next:在程式邏輯比較複雜的時候需要程式一步一步的往下執行。在gdb中通過命令」s「(step的縮寫)和」n「(next的縮寫)讓程式一步一步的往下執行。其中s可以發生函式呼叫時進入函式內部執行,而n不會進入到函式內部執行。

make工程管理器

linux 下 make 命令是系統管理員和程式設計師用的最頻繁的命令之一。管理員用它通過命令列來編譯和安裝很多開源的工具,程式設計師用它來管理他們大型複雜的專案編譯問題。

使用make指令時,make需要一定的規則,而規則都寫在乙個叫做makefile的檔案中,make命令依賴這個檔案進行構建。makefile檔案也可以寫為makefile, 或者用命令列引數指定為其他檔名。

makefile檔案由一系列規則(rules)構成。每條規則的形式如下。

: [tab]

上面第一行冒號前面的部分,叫做」目標」(target),冒號後面的部分叫做前置條件(prerequisites);第二行必須由乙個tab鍵起首,後面跟著命令(commands)。

「目標」是必需的,不可省略;」前置條件」和」命令」都是可選的,但是兩者之中必須至少存在乙個。

每條規則就明確兩件事:構建目標的前置條件是什麼,以及如何構建。下面就詳細講解,每條規則的這三個組成部分。

目標(target):

乙個目標(target)就構成一條規則。目標通常是檔名,指明make命令所要構建的物件。目標可以是乙個檔名,也可以是多個檔名,之間用空格分隔。

除了檔名,目標還可以是某個操作的名字,這稱為」偽目標」(phony target)。

clean: rm *.o

上面**的目標是clean,它不是檔名,而是乙個操作的名字,屬於」偽目標 「,作用是刪除物件檔案。

$ make  clean

但是,如果當前目錄中,正好有乙個檔案叫做clean,那麼這個命令不會執行。因為make發現clean檔案已經存在,就認為沒有必要重新構建了,就不會執行指定的rm命令。

為了避免這種情況,可以明確宣告clean是」偽目標」,寫法如下。

.phony: clean

clean: rm *.o temp

宣告clean是」偽目標」之後,make就不會去檢查是否存在乙個叫做clean的檔案,而是每次執行都執行對應的命令。像.phony這樣的內建目標名還有不少,可以檢視手冊。

例如:cc = gcc  

target = hello

object = hello.o

//make中的變數用$(變數名)表示

$(target) : $(object)

$(cc) $(object) -o $(target)

//這是鍵

.phony : clean

clean :

rm -rf hello *.o

偵錯程式gdb 工程管理器 make

格式 gcc g 檔名.c o 可執行檔案 gdb 可執行檔案 list 檢視程式 quit 退出 run 執行 break 行號 設定斷點 break 行號 if i 3 語句 info break 檢視斷點 delete 斷點編號 刪除斷點 next 單步執行 不進入子函式 step 單步執行 ...

GDB偵錯程式 工程管理器 make和指令碼Shell

一 gdb功能 1 啟動被除錯程式 2 讓被除錯程式在指定的位置停住 3 當程式被停住時,可以檢查程式狀態 變數值 gcc g test.c o test gdb test 啟動gdb break main 在main函式處設定斷點 run r 執行程式 next n 單步執行程式 不進入子函式 s...

make工程管理器及gdb偵錯程式 基本知識

make工程管理器完全根據 makefile 檔案中的編譯規則進行編譯,makefile 由以下三項基本內容組成 1 需要生成的目標檔案 target file 2 生成目標索取要的依賴檔案 dependency file 3 生成目標檔案的編譯規則命令列 command 這三項內容按以下格式進行組...