1)gcc
gnu compiler collection
分為四個階段:
a)預處理pre-processing:gcc -e test.c -o test.i
b)編譯compiling:
gcc -s test.i -o test.s
組合語言檔案
c)彙編assembling:
gcc -c test.s -o test.o
二進位制機器**
d)鏈結linking:
gcc test.o -o test
一般簡化為:
gcc -c test.c -o test.o
gcc test.o -o test
或者直接簡化為一步:
gcc test.c -o test
2)options:-e -s
-c 如前
-o output_filename
-g 產生gdb所需符號資訊
-wall 顯示素有警告
-o -o2 優化,編譯鏈結過程慢
-idirname include位址
-ldirname
lib位址
-llibname 例如:-lm 數學庫
-mm 自動生成依賴性 例如:gcc -mm main.c
3)gdb
使用:>gdb 程式檔名
或》gdb
>gdb -q
不顯示版權資訊
(gdb) file 程式檔名
(gdb) list filename:lin1, line2
line1-line2內容顯示
(gdb) list funcname
(gdb) search 字串
(gdb) reverse-search 字串
(gdb) shell shell命令
(gdb) run
(gdb) break 行號/函式名 if 條件
(gdb) watch 條件
條件中的變數必須已定義,即程式已經執行過該變數定義處
(gdb) print 變數/表示式/變數=值(賦值)
(gdb) disable 斷點編號
(gdb) enable 斷點編號
(gdb) info breakpoints
(gdb) clear
刪除所有斷點
(gdb) clear 行號/函式名
(gdb) delete 斷點編號
用,分隔
(gdb) whatis 變數/表示式
檢視資料型別
(gdb) set variable 變數=值
與print賦值同
(gdb) continue
(gdb) kill
結束除錯
(gdb) next
(gdb) step 進入函式
(gdb) nexti
(gdb) stepi
這兩個是機器指令
4)ldd 程式檔名
列印程式依賴的共享函式庫
nm 程式檔名
顯示目標檔案符號表
Linux系統 gdb彙編級除錯C語言程式
彙編級除錯 1.進入gdb gdb progarm 2.對程式打斷點 break main c語言級的斷點,break main 偏移量 彙編級斷點 3.r 執行程式 4.檢視記憶體 x 5xw 0xbffff0a4 檢視五個資料,以十六進製制 x,o,d,s,s為以字串形式顯示 乙個資料長度為四 ...
實驗四 Linux系統搭建C語言編譯環境
專案內容 這個作業屬於哪個課程 這個作業的要求在 學號 姓名 17043130 張智勇 作業學習目標 1.linux系統下c語言開發環境搭建學習2.linux系統環境c語言開發過程 1.安裝c語言開發環境 a 安裝開發環境 sudo apt install build essentialb 檢視gc...
Linux下C語言的除錯
除錯是每個程式設計師都會面臨的問題.如何提高程式設計師的除錯效率,更好更快地定位程式中的問題從而加快程式開發的進度,是大家共同面對的問題.可能windows使用者順口就會說出 用vc唄 它提供了設定斷點,單步跟蹤等的圖形介面,使除錯起來直觀易用.但linux使用者可能要生悶氣了 o 難道我們linu...