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