gdb偵錯程式

2022-04-11 11:02:46 字數 2643 閱讀 6177

gdb偵錯程式是一款gnu開發組織並發布的unix/linux下的程式除錯工具。

下面以乙個簡單程式為例,介紹gdb使用流程:

編輯檔案test.c

#include "stdio.h"

int sum(int m);

int main()

printf("the sum of 1-50 is %d \n",n);

}int sum(int m)

}對test.c進行編譯

hh@hh-virtual-machine:~$ gcc -g test.c -o test

注意:一定要加上 -g 選項,這樣編譯出的可執行**中才包含除錯資訊,否則之後gdb無法載入該可執行檔案。

啟動除錯

hh@hh-virtual-machine:~$ gdb test

注意:gdb進行除錯的是可執行檔案,而不是「.c」的源**,因此,需要先通過gcc編譯生成可執行檔案才能用gdb進行除錯。

「l」 檢視載入的檔案

(gdb) l

1 #include 2 int sum(int m);

3 int main()

4 (gdb) l

11 printf("the sum of 1-50 is %d \n",n);

12 }

13 int sum(int m)

14

「b」設定斷點

(gdb) b 6

breakpoint 1 at 0x804842e: file test.c, line 6.

注意:gdb中利用行號設定斷點是指**執行到對應行之前停止,如上例,**執行到第6行之前停止(並沒有執行第6行)

「info b」檢視斷點情況

(gdb) info b

num type disp enb address what

1 breakpoint keep y 0x0804842e in main at test.c:6

執行**

(gdb) r

starting program: /home/hh/test

breakpoint 1, main () at test.c:6

6 sum(50);

可以看到,程式執行到斷點處就停止了。

檢視變數值「p」+變數名

(gdb) p n

$1 = 0

(gdb) p i

$2 = 134513851

「n」(next)單步執行

(gdb) n

the sum of 1-m is 1275

7 for(i = 1 ; i <= 50 ;i++)

「s」(step)單步執行

(gdb) s

9 n += i;

注意:它們之間的區別在於,若有函式呼叫的時候,「s」會進入該函式而「n」不會進入該函式。

10 . "c"恢復程式執行

(gdb) c

continuing.

the sum of 1-50 is 1275

[inferior 1 (process 6666) exited with code 031]

gdb最基本的命令有

gdb programm      啟動gdb

list(或l) 列出源**,接著上次的位置往下列,每次列10行

list 行號 列出從第幾行開始的源**

list 函式名 列出某個函式的源**

b(break) 設斷點(要會設4種斷點:行斷點、函式斷點、條件斷點、臨時斷點)

delete 刪除指定斷點

run 開始執行程式

bt 列印函式呼叫堆疊

info break 檢視斷點詳細資訊

p 檢視變數值

c 從當前斷點繼續執行到下乙個斷點

backtrace(或bt) 檢視當前棧的情況,即可以檢視到哪些被呼叫的函式尚未返回

next(或n) 單步恢復程式執行,但不進入函式呼叫

step(或s) 執行下一行語句,如果有函式呼叫則進入到函式中

quit 退出gdb]

其他幾個我認為應該掌握的除錯命令有:

display 跟蹤變數值的改變

until 跳出迴圈

finish 跳出函式

help 幫助

gdb使用時的注意點

GDB偵錯程式

偵錯程式gdb 一 啟動和退出gdb gdb除錯的物件是可執行檔案,而不是程式的源 如果要使乙個可執行檔案可以被gdb除錯,那麼在使用編譯器gcc編譯程式時需要加入 g選項。gdb除錯乙個程式的命令格式是 gdb 程式檔名 也可以在linux提示符下,直接輸入gdb,然後使用file命令裝入要除錯的...

gdb偵錯程式

在使用gdb偵錯程式之前,必須在編譯程式時加上 g選項 功能 顯示上次內容之前或之後的10行內容,首次使用顯示main 函式之前或之後的10行內容 命令 list 簡稱 l 功能 顯示引數行之前和之後的10行內容.命令 list line number 簡稱 l 10 功能 顯示原始檔從一行到另一行...

gdb偵錯程式

gdb是gnu發布的一款強大的除錯功能 gdb主要完成下面三個方面的功能 1 啟動被除錯程式 2 讓被除錯的程式在指定的位置停住 3 當程式停住時,可以檢視程式的狀態 變數值 gcc g test.c o test 生成除錯資訊 gdb test 啟動gdb gdb除錯工具相關命令 gdb run ...