gdb命令和gcc命令

gcc/g++命令

使用GNU推出的基於C/C++的編譯器,是開放源代碼領域應用最普遍的編譯器,具備功能強大,編譯代碼支持性能優化等特色。

選項: -c:僅執行編譯操做,不進行鏈接操做; -o:指定生成的輸出文件; -wall:顯示警告信息; -E:僅執行編譯預處理; -S:將C代碼轉換爲彙編代碼; -g: 在編譯時產生調試信息,使用gdb工具時使用。c++

實例: 假設源程序文件名爲test.c性能優化

1. 預處理,.c文件 -> .i文件。 gcc -E test.c -o test.i函數

2. 編譯,.i文件 -> .s文件。 gcc -S test.i -o test.s 將預處理過程生成的.i後綴的文件轉化成彙編文件,裏面存儲的是相應的彙編代碼,這個過程叫作編譯。工具

3. 彙編,.s文件 -> .o文件。 gcc -c test.s -o test.o 將彙編文件中的彙編代碼翻譯成相應的機器語言,這個過程叫作彙編。性能

4. 連接, .o文件 - 可執行程序 gcc test.o -o test 完成連接這個過程,它經過連接器ld將運行程序的目標文件和庫文件連接在一塊兒,生成最後的可執行文件優化

若是有多個源文件,基本上有兩種編譯方法,假設有兩個源文件爲test.c和testfun.c: 1). 多個文件一塊兒編譯 用法:# gcc testfun.c test.c -o test 做用:將testfun.c和test.c分別編譯後連接成test可執行文件。ui

2). 分別編譯各個源文件,以後對編譯後輸出的目標文件連接。 用法: gcc -c testfun.c //將testfun.c編譯成testfun.o gcc -c test.c //將test.c編譯成test.o gcc -o testfun.o test.o -o test //將testfun.o和test.o連接成testspa

gcc和g++的區別

  1. gcc和g++的區別主要是在對cpp文件的編譯和連接過程當中,由於cpp和c文件中庫文件的命名方式不一樣,那爲何g++既能夠編譯C又能夠編譯C++呢,這時由於g++在內部作了處理,默認編譯C++程序,但若是遇到C程序,它會直接調用gcc去編譯.
  2. gcc不能自動連接庫文件,通常用g++來連接庫文件,非要用gcc的話,通常使用gcc -lstdc++命令
  3. extern 「c」對於gcc和g++沒有區別
  4. 使用g++編譯文件時,g++會自動連接標準庫STL,而gcc不會自動連接STL;

gdb命令

gdb命令包含在GNU的gcc開發套件中,是功能強大的程序調試器。GDB中的命令當然不少,但咱們只需掌握其中十個左右的命令,就大體能夠完成平常的基本的程序調試工做。開放源代碼

命令 解釋 示例
file <文件名> 加載被調試的可執行程序文件。由於通常都在被調試程序所在目錄下執行GDB,於是文本名不須要帶路徑。 (gdb) file gdb-sample
r Run的簡寫,運行被調試的程序。若是此前沒有下過斷點,則執行完整個程序;若是有斷點,則程序暫停在第一個可用斷點處。 (gdb) r
c Continue的簡寫,繼續執行被調試程序,直至下一個斷點或程序結束。 (gdb) c
b <行號> <br> b <函數名稱> <br> b *<函數名稱> <br> b *<代碼地址> <br> d [編號] b: Breakpoint的簡寫,設置斷點。兩可使用「行號」「函數名稱」「執行地址」等方式指定斷點位置。 <br> 其中在函數名稱前面加「*」符號表示將斷點設置在「由編譯器生成的prolog代碼處」。若是不瞭解彙編,能夠不予理會此用法。<br> d: Delete breakpoint的簡寫,刪除指定編號的某個斷點,或刪除全部斷點。斷點編號從1開始遞增。 (gdb) b 8 <br> (gdb) b main <br> (gdb) b *main <br> (gdb) b *0x804835c <br> (gdb) d
s, n s: 執行一行源程序代碼,若是此行代碼中有函數調用,則進入該函數; <br> n: 執行一行源程序代碼,此行代碼中的函數調用也一併執行。 <br> s 至關於其它調試器中的「Step Into (單步跟蹤進入)」;n 至關於其它調試器中的「Step Over (單步跟蹤)」。 這兩個命令必須在有源代碼調試信息的狀況下才可使用(GCC編譯時使用「-g」參數)。 (gdb) s <br> (gdb) n
p <變量名稱> Print的簡寫,顯示指定變量(臨時變量或全局變量)的值。 (gdb) p i <br> (gdb) p nGlobalVar
q Quit的簡寫,退出GDB調試環境。 (gdb) q

選項: -cd:設置工做目錄; -q:安靜模式,不打印介紹信息和版本信息; -d:添加文件查找路徑; -x:從指定文件中執行GDB指令; -s:設置讀取的符號表文件。翻譯

文件: 二進制可執行文件。

相關文章
相關標籤/搜索