Gdb調試工具/ Makfile項目管理
gdb調試工具
gcc -g main.c -o main
常用命令
命令 簡寫 作用
help h 按模塊列出命令類
help class 查找某一類型的具體命令
list l 查看代碼,可跟行號和函數名
quit q 退出gdb
run r 全速運行程序
start 單步執行,運行程序,停在第一行執行語句
next n 逐過程執行
step s 逐語句執行,遇到函數,調到函數內執行
backtrace b 查看函數的調用棧幀和層級關系
info I 查看函數內部局部變量的數值
frame f 切換函數的棧幀
finish 結束當前函數,返回函數調用點
set 設置變量的值
run arvg[1] argv[2] 調試時命令行傳遞參數
print p 打印變量和地址
break b 設置斷點,可根據行號和函數名
delete d 刪除斷點 d breakpoints NUM
display 設置觀察變量
undisplay 取消觀察變量
continue 繼續全速運行剩下的代碼
enable breakpoints 啟用斷點
disable breakpoints 禁用斷點
x 查看內存x /20xw顯示20個單元,16進制,4個字節每單元
watch 被設置觀測點的變量發送修改時,打印顯示
i watch 顯示觀測點
core文件 ulimit -c 1024 開啟core文件,調試時gdb a.out core
set var 設置調試中變量的值 例如 n=10 set var n=100
gdb調試模式
gdb調試模式
run全速運行
start 單步調試
set follow-fork-mode child/parent #Makefile項目管理 跟蹤子進程和父進程
Makfile項目管理
項目代碼編譯管理
節省編譯項目時間
一次編寫終身受益
操作示例文件:add.c sub.c mul.c dive.c main.c
基本原則
三要素
目標
條件
命令
Makefile工作原理
分析各個目標和依賴之間的關系
根據依賴關系自底向上執行命令
根據修改時間比目標新,確定更新
如果目標不依賴任何條件,則執行對應命令,以示更新
clean
用途:清除編譯生產的中間.o文件和最終目標文件
make clean 如果當前目錄下有同名clean文件,則不執行clean對應的命令
偽目標聲明:.PHONY:clean
clean命令中的特殊符號
- "-"此條命令出錯,make也會繼續執行後續的命令。如:"-rm main.o"
- "@"不顯示命令本身,只顯示結果。如:"@echo"clean done ""
其他
-make默認執行第一個出現的目標,可通過make dst指定要執行的目標
-distclean目標
-install目標
-make -C指定目錄 進入指定目錄,調用裏面的Makefile
簡單使用MakeFile
python@ubuntu:~/linuxC/calc$ cat Makefile
#目標:依賴(條件)
# 命令
#階段一
#app:add.c sub.c dive.c mul.c main.c
# gcc add.c sub.c dive.c mul.c main.c -o app
#
#階段二
#app:add.o sub.o dive.o mul.o main.o
# gcc add.o sub.o dive.o mul.o main.o -o app
#add.o:add.c
# gcc -c add.c
#sub.o:sub.c
# gcc -c sub.c
#dive.o:dive.c
# gcc -c dive.c
#mul.o:mul.c
# gcc -c mul.c
#main.o:main.c
# gcc -c main.c
#階段三
# $@表示目標,$^表示所有依賴,$<表示依賴中的第一個
#obj=add.o sub.o mul.o dive.o main.o
#src = $(wildcard *.c)
#obj = $(patsubst %.c,%.o,$(src))
#target = app
#$(target):$(obj)
# gcc $^ -o $@
#%.o:%.c
# gcc -c $< -o $@
#階段四
CPPFLAGS= -Iinclude
CFLAGS= -g -Wall
LDFLAGS=
CC=gcc
#CC=arm-linux-gcc
src = $(wildcard *.c)
obj = $(patsubst %.c,%.o,$(src))
target = app
$(target):$(obj)
$(CC) $^ $(LDFLAGS) -o $@
%.o:%.c
$(CC) -c $< $(CFLAGS) $(CPPFLAGS) -o $@
.PHONY:clean
#徹底清除生生過程文件
clean:
-rm -f *.o
-rm -f app
#徹底清除生生過程文件和生成配置文件
distclean:
rm /usr/bin/app
install:
cp app /usr/bin
test:
@echo $(src)
@echo $(obj)
Gdb調試工具/ Makfile項目管理