拓展四之嵌入式開發工具

2021-10-04 08:02:53 字數 3830 閱讀 3506

一、偵錯程式:gdb

1、gdb命令

file [filename]:裝入想要除錯的可執行檔案

kill [filename]:終止正在除錯的程式

break[file:]function:在(file檔案的)function函式中設定乙個斷點

clear:刪除乙個斷點,這個命令需要指定**行或者函式名作為引數

run[arglist]:執行您的程式 (如果指定了arglist,則將arglist作為引數執行程式)

bt:backtrace: 顯示程式堆疊資訊

print expr:列印表示式的值

continue:繼續執行您的程式 (在停止之後,比如在乙個斷點之後)

list:列出產生執行檔案的源**的一部分

next:單步執行 (在停止之後); 跳過函式呼叫

nexti:執行下一行的源**中的一條彙編指令

set:設定變數的值。例如:set nval=54 將把54儲存到nval變數中

step:單步執行 (在停止之後); 進入函式呼叫

stepi:繼續執行程式下一行源**中的彙編指令。如果是函式呼叫,這個命令將進入函式的內部,單步執行函式中的彙編**

watch:使你能監視乙個變數的值而不管它何時被改變

rwatch:指定乙個變數,如果這個變數被讀,則暫停程式執行,在偵錯程式中顯示資訊,並等待下乙個除錯命令。參考rwatch和watch命令

awatch:指定乙個變數,如果這個變數被讀或者被寫,則暫停程式執行,在偵錯程式中顯示資訊,並等待下乙個除錯命令。參考rwatch和watch命令

ctrl-c:在當前位置停止執行正在執行的程式,斷點在當前行

disable:禁止斷點功能,這個命令需要禁止的斷點在斷點列表索引值作為引數

display:在斷點的停止的地方,顯示指定的表示式的值。(顯示變數)

undisplay:刪除乙個display設定的變數顯示。這個命令需要將display list中的索引做引數

enable:允許斷點功能,這個命令需要允許的斷點在斷點列表索引值作為引數

finish:繼續執行,直到當前函式返回

ignore:忽略某個斷點制定的次數。

info[name]:檢視name資訊

load:動態載入乙個可執行檔案到偵錯程式

xbreak:在當前函式的退出的點上設定乙個斷點

whatis:顯示變數的值和型別

ptype:顯示變數的型別

return:強制從當前函式返回

txbreak:在當前函式的退出的點上設定乙個臨時的斷點(只可使用一次)

make:使你能不退出 gdb 就可以重新產生可執行檔案

shell:使你能不離開 gdb 就執行 unix shell 命令

help [name]:顯示gdb命令的資訊,或者顯示如何使用gdb的總體資訊

quit:退出gdb

二、工程管理器:make

1、makefile的自動變數

$*:不包含副檔名的目標檔名稱

$+:所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含 重複的依賴檔案

$<:第乙個依賴檔案的名稱

? :所

有時間戳

比目標文

件晚的依

賴檔案,

並以空格

分開∗∗

?:所有時間戳比目標檔案晚的依賴檔案,並以空格分開 **

?:所有時間

戳比目標

檔案晚的

依賴檔案

,並以空

格分開∗

∗@**:目標檔案的完整名稱

$^:所有不重複的依賴檔案,以空格分開

$%:如果目標是歸檔成員,則該變數表示目標的歸檔成員名稱

三、指令碼語言:shell

1、什麼是shell

shell是linux的一外殼,它包在linux核心的外面,為使用者和核心之間的互動提供了乙個介面;當使用者下達指令給作業系統的時候,實際上是把指令告訴shell,經過shell解釋,處理後讓核心做出相應的動作;系統的回應和輸出的資訊也由shell處理,然後顯示在使用者的螢幕上。

2、shell的種類有哪些

常見的 shell 有 sh、bash、csh、tcsh、ash 等。

sh

sh 的全稱是 bourne shell,由 at&t 公司的 steve bourne開發,為了紀念他,就用他的名字命名了。

sh 是 unix 上的標準 shell,很多 unix 版本都配有 sh。sh 是第乙個流行的 shell。

bash

bash shell 是 linux 的預設 shell,本教程也基於 bash 編寫。

bash 由 gnu 組織開發,保持了對 sh shell 的相容性,是各種 linux 發行版預設配置的 shell。

csh

sh 之後另乙個廣為流傳的 shell 是由柏克萊大學的 bill joy 設計的,這個 shell 的語法有點類似c語言,所以才得名為 c shell ,簡稱為 csh。

tcsh

tcsh 是 csh 的增強版,加入了命令補全功能,提供了更加強大的語法支援。

ash

乙個簡單的輕量級的 shell,占用資源少,適合執行於低記憶體環境,但是與下面講到的 bash shell 完全相容。

3、shell的重要性

(1)shell 指令碼很適合處理純文字型別的資料,而 linux 中幾乎所有的配置檔案、日誌檔案(如 nfs、rsync、httpd、nginx、mysql 等),以及絕大多數的啟動檔案都是純文字型別的檔案。

(2)shell 指令碼是實現 linux 系統自動管理以及自動化運維所必備的工具,linux 的底層以及基礎應用軟體的核心大都涉及 shell 指令碼的內容。每乙個合格的 linux 系統管理員或運維工程師,都應該能夠熟練的編寫 shell 指令碼,只要這樣才能提公升運維人員的工作效率,減少不必要的重複勞動,為個人的職場發展奠定較好的基礎。

4、如何編輯,執行shell指令碼程式

乙個shell指令碼通常包含如下部分:

(1)首行

第一行內容在指令碼的首行左側,表示指令碼將要呼叫的shell直譯器,內容如下:

#!/bin/bash

#!符號能夠被核心識別成是乙個指令碼的開始,這一行必須位於指令碼的首行,/bin/bash是bash程式的絕對路徑,在這裡表示後續的內容將通過bash程式解釋執行。

(2)注釋

注釋符號# 放在需注釋內容的前面

(3)內容

可執行內容和shell結構

5、定義變數(預設變數,區域性變數,自定義變數)

$# :位置引數的數量;

$* :所有位置引數的內容;

$? :命令執行後返回的狀態,0表示沒有錯誤,非0表示有錯誤;

$$:當前程序的程序號;

$! :後台執行的最後乙個程序號;

$0 :當前執行的程序名;

拓展三之嵌入式開發工具(gdb make)

一 思考題 1 gcc static的作用?答 當gcc static用於編譯乙個程式時,會使此程式靜態編譯 把動態庫的函式和所依賴的任何東西,都編譯進本程式 編譯好後,檔案會非常大,但是,執行時就不需要依賴任何動態庫了。2 優化,每級優化了什麼?答 o1 提供基礎級別的優化,採用優化演算法,減少生...

嵌入式開發工具

嵌入式linux開發工具 vim,gcc.gdb,make vim 文字編輯器 學會使用和如何配置vim gcc 編譯器 學會製作動態庫和靜態庫及使用與區別 gdb 偵錯程式 設定斷點 單步執行 除錯記憶體錯誤 make 工程管理器 編寫makefile檔案 linux文字編輯器 vim 功能最強大...

嵌入式開發工具 WinSCP

嵌入式系統開發的乙個典型模式是 在windows平台下安裝vmware linux虛擬機器。這時候windows和linux系統之間的檔案傳輸就顯得非常重要。在windows和vmware linux虛擬機器之間實現檔案傳輸的方式很多,由於開發過程的繁瑣,我們通常都希望找到乙個非常方便的方式。使用w...