學習日誌 姓名:葉聖民 日期:2018年7月11日
|
|
今日學習任務
|
1、瞭解項目管理的方法及重要性;(項目代碼目錄結構) 2、熟練掌握 makefile 基本語法的使用;(目標、依賴、命令) 3、企業級 makefile 的編寫;(迭代開發) 4、瞭解 git/github 的使用;(學會管理代碼) 5、瞭解調試器 gdb;(基本調試操作,段錯誤如何調試) |
今日任務完成情況
(詳細說明本日任務是否按計劃完成,開發的代碼量)
1、gdb 的特點有哪些?
gdb (調試器)是Linux GNU計劃的工具。
(1)啓動被調試程序;
(2)讓被調試程序運行;
(3)查看變量值;
例:調試:gcc -g text.c -o text
gdb text
list(反編譯);break(斷點);
2、分別闡述 run break info break continue finish 命令的作用?
run(執行完程序)先break n 後run(運行時在第n行停住);next或step(執行下一步);info break(查看斷點);delete n(刪除 第n個點);quit(退出);continue(跳過本次斷點運行到下一次斷點);finish(跳過本次斷點運行,單隻運行完子程序);
next 和 step 的區別:next不可進入子程序而step可以;
3、make 工程管理的作用?
一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪 些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因爲makefile就像一個Shell腳本一樣,其中也可以執行操所繫統的命令。
4、makefile 的語法是什麼?(定義、執行順序)
在各個子目錄和當前目錄中建立 mkdir Makefile,用vim對Makefile進行編寫;
三要素:目標,依賴,命令;執行命令需要依賴文件,會生成目標文件
格式: 目標:依賴
tab 命令
執行循序:由上而下執行;
5、企業級工程目錄是如何創建?分別描述三個不同 makefile 的作用?
總控 Makefile:將各個子目錄下的 .o 文件鏈接生成可執行文件
子目錄 Makefile:將目錄下的 .c 文件編譯生成 .o 文件
scripts 目錄下的 Makefile:相當於C語言中的頭文件定義了一些變量
今日開發中出現的問題彙總
反編譯 list 顯示代碼不全
對Makefile中的一些命令使用不理解
昨天未解決問題(現已解決):鏈接:地址和空間分配,重定義和符號決議;統計生成有邏輯的符號表進行地 址和空間分配;分爲:靜態 和 動態 鏈接
今日未解決問題
反編譯 list 顯示代碼不全
今日開發收穫
通過今日的學習和開發,掌握和熟悉了許多的gdb調試器指令和make工程管理器的編寫方法;
自我評價
(是否按開發規範完成既定任務,需要改進的地方,與他人合作效果等)
今天基本完成了開發規範完成既定任務;瞭解了C語言的錯誤類型分爲:編譯時錯誤(語法)和運行時錯誤(內存錯誤 或 總線錯誤)。
其他
CC := gcc
CFLAGS := -Wall -o3
Lids = -lpthread
Target := cal
Source := $(wildcard src/*.c)
Objs := $(patsubst %.c,%.o,$(Source))
Modules += main add sub mul div
AllObjs := $(addsuffix /src/*.o,$(Modules))
.PHONY:Echo clean
Echo:
@echo "make done!"
clean:
@echo "clean done!"
include ../scripts/Makefile
all : $(Objs)
clean :
rm -rf $(Objs)