首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

GCC/G++ 編譯器與 GDB 調試器完整參考手冊

     編輯:PHP 綜合知識

系統級開發必備:GCC/G++ 四階段編譯流程、核心參數詳解、GDB 常用指令與實戰除錯範例。

編譯四階段

  1. 預處理:cpp → .i 檔
  2. 編譯:egcs → .s 組合語言
  3. 組譯:as → .o 目標碼
  4. 連結:ld → 可執行檔

核心參數速查

參數用途範例
-x language強制指定語言,忽略副檔名gcc -x c hello.pig
-c僅編譯至 .o,不連結gcc -c hello.c
-S僅產生 .s 組合碼gcc -S hello.c
-E僅預處理,輸出導向檔案gcc -E hello.c > out.txt
-o file指定輸出檔名gcc -o hello.exe hello.c
-O0 ~ -O3優化等級 (0 無、3 最高)gcc -O2 hello.c
-g產生除錯資訊 (GDB 專用建議 -ggdb)gcc -ggdb hello.c
-I dir新增標頭檔搜尋路徑gcc -I/my/include hello.c
-L dir新增庫搜尋路徑gcc -L/my/lib -lmylib hello.c
-l lib連結指定庫gcc -lcurses hello.c
-static靜態連結,無需動態庫gcc -static hello.c
-shared動態連結,產出較小gcc -shared hello.c

GDB 常用指令

指令功能
break N第 N 行設中斷點
bt顯示呼叫堆疊
continue繼續執行
display expr每次停下顯示運算式值
print expr印出運算式值
next單步執行 (不進入函數)
list顯示原始碼片段
info locals顯示區域變數
set var x=5修改變數值

實戰除錯範例

錯誤程式 bugging.c:未初始化指標 string 導致 Segmentation Fault。

  1. gcc -g -o bugging bugging.c 編譯含除錯資訊。
  2. gdb bugging 進入調試器。
  3. run 執行至崩潰。
  4. where (或 bt) 定位崩潰行 (gets(string))。
  5. print string 發現值為隨機記憶體位址。
  6. 第 11 行設中斷點 break 11。
  7. run 重跑至中斷點。
  8. set var string = buff 指向合法緩衝區。
  9. continue 程式正常結束。

掌握 GCC/GDB 工具鏈,是 C/C++ 開發者的核心基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved