linux下編譯器gcc和偵錯程式gdb的使用

2021-06-20 01:49:36 字數 2109 閱讀 2029

1 gcc的使用

gcc是linux下通用的c程式編譯器,具有非常強大的程式編譯功能。

1.1  gcc對源程式副檔名的支援

.c為c語言源**檔案

.a是由目標檔案構成的庫檔案

.c、.cc或、.cpp標識為c++原始檔

.h是程式包含的標頭檔案

.i標識檔案是已經與處理過的c源**檔案,一般為中間**檔案

.ii是已經處理過的c++源**檔案,一般為中間**檔案

.o是編譯後的目標檔案,原始檔生成的中間目標檔案

.s是組合語言源**檔案

.s是經過預編譯的組合語言源**檔案

.o是編譯以後的程式目標檔案,目標檔案經過連線成可執行檔案

1.2  gcc編譯程式

gcc在編譯程式時有很多可選引數,可以輸入gcc –help檢視gcc的這些可選引數。最簡單情況下:

gcc a.c會在同目錄下生成a.out檔案,./a.out可執行這個程式。

引數-o加檔名可設定輸出的檔案,引數-v可檢視程式的編譯過程和系那是已經呼叫的庫,引數-x可設定編譯的語言,如果副檔名不正確時,可使用gcc –x 『c』 a.u進行編譯,可以用-ansic來設定程式使用ansic標準。

編譯c++程式使用g++,引數與gcc命令基本相同。

1.3  編譯過程的控制

編譯程式會自動完成預處理、編譯、彙編和鏈結四個步驟,(1)使用-e可以完成程式的預處理,如gcc –e –o a.cxx a.c,(2)使用-s可在編譯時之生成相應的匯程式設計序檔案,如gcc –s –o a.s a.c,(3)使用-c可以只生成目錄嗲嗎而不生成可執行程式,如gcc –c –o a.0 a.c,(4)gcc可以把上一步驟生成的目錄**檔案生成乙個可執行檔案,如gcc a.o –o aa.out。

2 gdb除錯程式

gdb主要進行下面幾個方面的操作,包括啟動程式、設定斷點、檢視資訊、分布執行和改變環境。

2.1在程式中加入除錯資訊

在編譯程式時使用-g引數,gcc –g –o a.debuga.c,這時候生成乙個a.debug的可執行程式,以供除錯使用。

2.2啟動gdb

在終端中輸入gdb即可啟動gdb.

2.3載入需要除錯的程式

使用gdb除錯乙個程式之前,需要載入這個程式,引導程式的命令式file,如file a.debug。

2.4檢視**

a.debug程式中自動加入了斷點,使用list命令顯示程式的源**和斷點,如list 1。

2.5 在程式中加入斷點

當需要在程式的第六行增加乙個斷點時,可輸入一下命令,break 6。

2.6檢視斷點

命令「infobreakpoint」可以檢視程式中設定的斷點,加入相應的斷點編號,可以檢視其中乙個斷點的資訊,如info breakpoint 2。

2.7 執行程式

run命令執行程式,next會在下一行停下,continue會在下乙個斷點的位置停下,step實現對程式的單步執行

2.8 變數的檢視

print命令可實現對變數的檢視,如printi。

2.9 使用gdb幫助

在gdb中輸入help命令,可顯示幫助資訊,helpall可顯示所有幫助資訊。

2.10 gdb常用命令

breaktrace:顯示程式中的當前位置和表示如何到達當前位置的棧跟蹤。

breakpoint:在程式中設定乙個斷點。

cd:改變當前工作目錄。

clear:刪除剛才停止處的斷點。

commands:命中斷點時,列出將要執行的命令。

continue:從斷點開始繼續執行。

delete:刪除乙個斷點或監測點。

display:程式停止時顯示變數和表示式。

down:下移棧幀,使得另乙個函式成為當前函式。

frame:選擇嚇一跳continue命令的幀

info:顯示與該程式有關的各種資訊。

infobreak:顯示當前斷點清單,包括到達斷點處的次數。

infofiles:顯示被除錯檔案的詳細資訊。

infofunc:顯示所有的函式名稱。

infolocal:顯示當前函式中的區域性變數資訊。

Linux下gcc編譯器和g 編譯器的那些事兒

使用c c 程式設計大約有三四個年頭了。最開始涉及到微控制器 嵌入式linux等,都使用的是c語言,那時主要寫linux驅動,甚至在arm板上寫linux應用程式時需要應用物件導向的思想的時候,都是使用c語言的結構體和函式指標來實現。當然,使用的編譯器自然就是gcc了。後來,慢慢的轉向了使用c 編寫...

GCC編譯器和GDB偵錯程式

gcc gnu compiler collection 是目前linux下最常用的c語言編譯器,它是gnu專案中符合ansi c標準的編譯系統,可以在多種硬體平台上編譯出可執行程式的超級編譯器,執行效率與一般的編譯器相比平均效率要高20 30 在終端中輸入下列命令 gcc options filen...

gcc編譯器和gdb偵錯程式

將高階語言 c語言 程式編譯成為機器可識別的指令 編譯過程 預處理 去掉注釋,展開所有 編譯 語義 語法糾錯,將 解釋成為彙編 彙編 將彙編 解釋成為機器指令 連線 鏈結 庫以及所有的目標檔案,生成可執行程式 庫檔案 大佬實現一些常用的功能介面,為了防止每次編譯耗費大量時間,因此將這些介面 進行編譯...