程式除錯gdb基礎

2021-05-05 05:56:00 字數 1161 閱讀 7175

gcc 編譯器

gcc是linux平台下最重要的開發工具,它是gnu的c和c++編譯器,它總共提供的編譯選項超過100個,但只有少數幾個會被頻繁使用,收集如下。其基本用法為:gcc  [options]  [filenames]

> 最簡單的編譯方法是不指定任何編譯選項,會為目標程式生成預設的檔名a.out;

>-o: 為將產生的可執行檔案指定乙個檔名

來代替a.out; 如gcc -o helloworld helloworld.c

>-c: 告訴gcc僅把源**編譯為目標**而跳過彙編和連線的步驟

;>-s: 告訴gcc 在為 c**產生了組合語言檔案後停止編譯。gcc 產生的組合語言檔案的預設副檔名是.s ; assemble 彙編,組裝

>-e: 指示編譯器僅對輸入檔案進行預處理。當這個選項被使用時,預處理器的輸出被送到標準輸出(預設為螢幕)而不是儲存在檔案裡;

>-o: 告訴gcc對源**進行基本優化從而使得程式執行地更快;而-o2選項告訴gcc產生盡可能小和盡可能快的**。使用-o2選項編譯的速度比使用-o時慢,但產生的**執行速度會更快;

>-g: 告訴gcc產生能被gnu偵錯程式使用的除錯資訊以便除錯你的程式;

>-pg: 告訴gcc在你的程式裡加入額外的**,執行時,產生gprof用的剖析資訊以顯示你的程式的耗時情況;

gdb 偵錯程式

gcc用於編譯程式,而linux的另乙個gnu工具gdb則用於除錯程式。gdb是乙個用來除錯c和c++程式的強力偵錯程式,

gcc -c **.cpp -o **

我們能通過它進行一系列除錯工作,包括設定斷點、觀查變數、單步等。其最常用的命令如下:

>file:  裝入想要除錯的可執行檔案。

>kill:  終止正在除錯的程式。

>list:  列表顯示源**。 (l)

>next: 執行一行源**但不進入函式內部。 n

>step: 執行一行源**而且進入函式內部。 s

>run:   執行當前被除錯的程式  r

>quit: 終止gdb  q

>watch: 監視乙個變數的值  wa

>break: 在**裡設定斷點,程式執行到這裡時掛起  b

>make: 不退出gdb而重新產生可執行檔案

>shell: 不離開gdb而執行shell (exit退出乙個shell

1 2 程式設計基礎 GDB程式除錯

gdb是gnu發布的一款功能強大的程式除錯工具。gdb主要完成下面三個方面的功能 1.啟動被除錯程式 2.讓被除錯的程式在指定的位置停住。3.當程式被停住時,可以檢查程式狀態 如變數值 1.編譯生成可執行檔案 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設...

GDB除錯基礎

breakpoint 2,func n 250 at tst.c 5 5 int sum 0,i gdb n 6 for i 1 i n i gdb p i 列印變數i的值,print命令簡寫。1 134513808 gdb n 8 sum i gdb bt 檢視函式堆疊。0 func n 250 ...

GDB除錯基礎

要使用gdb除錯,gcc編譯時要加上 g 選項,這樣生成的可執行檔案才能被gdb除錯。基礎指令 l list 表示檢視源 後可跟數字num如 l num,表示檢視 的位置。b break 表示設定斷點的位置。b 20 if i 5,用此種方式設定條件斷點,即當for迴圈到i 5時才中斷。delete...