Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux C/C++ 開發工具鏈全景:GCC、GDB、xxgdb、calls、calltree、cproto、indent、gprof 實戰指南

編輯:Linux 教學

Linux 內建完整的 C/C++ 開發工具鏈。本文系統介紹:GCC 編譯選項 (最佳化 -O/-O2、除錯 -g、剖析 -pg);GDB 互動式除錯器 (斷點、單步、監看、堆疊檢視) 含實戰除錯範例;xxgdb 圖形介面;calls/calltree 函式呼叫樹產生器;cproto 自動產生函式原型;indent 程式碼美化排版;gprof 效能剖析器。掌握這套工具鏈,讓 Linux 開發事半功倍。

GCC 核心選項速查


gcc -o myprog myprog.c           # 編譯連結產出 myprog
gcc -c myprog.c                  # 僅編譯產出 myprog.o
gcc -S myprog.c                  # 產生組語 myprog.s
gcc -E myprog.c                  # 僅前置處理輸出 stdout
gcc -g -o myprog myprog.c        # 含除錯資訊 (可搭配 -O)
gcc -O2 -o myprog myprog.c       # 最大最佳化
gcc -pg -o myprog myprog.c       # 插桩產生 gmon.out 供 gprof

GDB 實戰除錯流程 (以反轉字串 Bug 為例)

  1. gcc -g -o hello hello.c 編譯含除錯資訊。
  2. gdb hello 進入 GDB。
  3. (gdb) break 26 在可疑行設斷點。
  4. (gdb) run 執行至斷點。
  5. (gdb) watch string2[size - i] 監看關鍵變數。
  6. (gdb) next 單步執行觀察變化。
  7. 發現 string2[size - i] 索引錯誤導致首字元為空,修正為 size - 1 - i。
  8. 重新編譯驗證修正。

常用指令:list、print、backtrace、info locals、frame。

輔助工具速覽

工具用途範例
xxgdbGDB 圖形前端xxgdb hello
calls函式呼叫樹calls hello.c → 顯示 main → my_print → printf...
calltree呼叫樹+詳細資訊calltree hello.c
cproto自動產生 .h 原型cproto hello.c > proto.h
indent程式碼排版美化indent -kr hello.c (K&R 風格)
gprof效能剖析gcc -pg ... && ./a.out && gprof a.out

gprof 輸出解讀


Flat profile:
%   cumulative  self    self    total
time seconds  seconds calls us/call us/call name
69.23  0.09    0.09    1    90000   103333  my_print2
30.77  0.13    0.04    3    13333   13333   count_sum
  • self seconds:函式本身耗時 (不含呼叫子函式)。
  • cumulative:含子函式累計耗時。
  • 優化重點:找 self seconds 高或 calls 多且 us/call 高的函式。

善用工具鏈,從編寫、除錯、美化、剖析到優化,構建專業 Linux 開發工作流。

Copyright © Windows教程網 All Rights Reserved