偵錯程式:gdb
gun計畫的工具;核心除錯kgdb
程式的錯誤分類:編譯時錯誤:語法錯誤 執行時錯誤:記憶體問題,邏輯問題
gdb的功能:1.執行程式;2.設定斷點;3.檢視變數的值
hello.c gcc -g hello.c -o hello gdb hello
使用–tui:
layout asm
layout src
layout split
runfinish
continue(結束當前斷點,繼續往下執行,直到遇到下乙個)
break + 行號
break + 函式名
break + 行號if條件
info break;(檢視斷點資訊)
delete + 斷點編號
enable + 斷點
disable + 斷點編號
單步執行:
step(可進入子函式)
next(不可進入子函式)
工程管理器:make — 如何編寫makefile檔案?
1、 工程管理器:編譯很個檔案(型別不同、存放不同目錄、資源檔案使用)組成的軟體**結構 —實現自動編譯(根據makefile檔案內容進行)
makefile「自動編譯「:
1. 根據makefile檔案的內容進行自動編譯
2. 根據檔案的時間戳來判斷檔案是否需要編譯
單個.c — gcc hello.c -o hello
10000個.c(分別儲存在100個不同目錄) – gcc *.c -o hello
make —makefile(make讀取makefile裡內容)
如何編寫makefile檔案?
1 makefile是個指令碼檔案(批處理)
2 makefile語法:目標、依賴、命令
目標:依賴
按下tab 再鍵入命令
執行命令,依賴這個檔案,最終生成目標;
3 makefile執行順序:自上向下,當你的目標依賴的檔案又是乙個目標時,會先跳轉到該目標去執行相關命令
make+目標名:從該目標開始自上向下執行;
4 偽目標:執行命令,不生成對應的檔案;
.phony:clean install
echo在終端上?
make -f makefile指定後面的編譯?
./cal
為什麼將.c檔案先編譯生成.o檔案,再由.o檔案生成可執行檔案?
前提:原始檔到可執行檔案:預處理、編譯、彙編、鏈結
gcc hello.c -o hello 4s
cal:main
鏈結 1s
gcc hello.c -0 hello 4s
cal:main.c add.c sub.c div.c mul.c
gcc *.c -0 cal
假設修改了add.c — make: 20s假設修改了add.c — make:(.c -->.0) 第一次:20s,第二次:4s+4s=8s。
功能目錄管理軟體**
makefile:
1、 總控makefile
進入各個功能目錄執行make,並將所有.o檔案鏈結生成可執行檔案(再看)
2、功能目錄makefile
將功能目錄下的原始檔編譯生成目標檔案.o(最後看)
3、scripts目錄標頭檔案makefile
定義變數,供其他makefile使用(閱讀makefile順序:先看)
指令碼程式設計-shell
嵌入式設計課程總結4
偵錯程式 gdb 1.gnu計畫的工具 核心除錯kgdb 2.程式的錯誤分類 編譯時錯誤 語法錯誤 執行時錯誤 記憶體錯誤,邏輯錯誤 3.gdb的功能 1 執行程式 2 設定斷點 3 檢視變數值4.hello.c gcc g hello.c o hello gcc gdb 5.使用 tui 圖形化l...
嵌入式設計課程(3)
嵌入式linux開發工具及課程目標 vim 文字編輯器 學會使用和如何配置vim gcc 編譯器 學會製作動態庫和靜態庫及使用區別 gdp 偵錯程式 設定斷電 單步執行 除錯記憶體錯誤 make 工程管理器 編寫makefile檔案 vi vim im 命令列模式nyy p ndd u 插入模式i ...
3 24嵌入式設計課程
嵌入式linux系統開發 檔案 程序 執行緒 網路 20 嵌入式系統移植8h 嵌入式驅動開發8h 自動生成 cmake autotool 嵌入式linux開發工具 shell程式設計 指令碼 批處理 linux系統運維工程師 嵌入式系統開發 系統移植 shell 1.命令解析器 將使用者輸入的命令解...