偵錯程式gdb

2021-09-29 16:33:46 字數 1752 閱讀 3694

2.偵錯程式gdb

三大功能:啟動被除錯程式,

讓被除錯的程式在指定位置停住,

當程式停住時,可檢查此時程式中所發生的事。

命令列以demo.c為例

gcc -g demo.c -o demo

除錯gdb demo

進入除錯

run執行可執行檔案

list

檢視***

break 20

在20行打斷點

break 20 if i=10

在i=10時在20行停住

break +函式名

在呼叫此函式時暫停

printf i

檢視當前的i值

info break

檢視斷點資訊

delete 1

刪除斷點資訊(數字代表斷電編號)

next

單步執行,但不可進入子程式

step

單步執行,可以進入子程式

finish

繼續執行,結束當前函式,之後不再執行

continue

繼續當前斷點之後的程式,執行到下乙個斷點或者執行到最後

quit

推出gdb

list

(gdb) list line1,line2

檢視源**

list linenum 在linenum的前後源**顯示出來

list + 列出當前行的後面**行

list - 列出當前行的前面**行

list function

set listsize count

設定顯示**的行數

show listsize

顯示列印**的行數

list first,last

顯示從first到last的源**行

對段錯誤進行除錯

run之後停在哪一行,就是哪一行出現了段錯誤

如下所示函式

02.c

1 #include

2 #include"debug.h"

3 int main()

4        

debug.h

1 #define __debug__

2 #ifndef __debug__

3 #define debug_msg(fmt, args...)

4 #else

5 #define debug_msg(fmt, args...) printf(fmt, ##args)

6 #endif

[root@promote 0708]# gcc 02.c

[root@promote 0708]# ./a.out

a!b!

c!ptr=ello word

d段錯誤

所以d之後出現錯誤,12行出錯。

也可以刪除debug.h的第一行

[root@promote 0708]# gcc 02.c

[root@promote 0708]# ./a.out

ptr=ello word

段錯誤看不出來**出現錯誤

執行以下步驟

[root@promote 0708]# gcc 02.c -d__debug__

[root@promote 0708]# ./a.out

a!b!

c!ptr=ello word

d段錯誤

-d是指加上標頭檔案

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 ...