使用gdb工具,必須在編譯時加上 -g選項
gcc -g main.c -o main
$ gdb a.out
基礎指令
列出原始碼
(gdb) l 1
1 #include 2 #include 3 #include 4
5 void fun()
6
910 int main()
# 打斷點
(gdb) b 12
breakpoint 1 at 0x4005d6: file gdbtest.c, line 12.
# run
(gdb) r
starting program: /home/fight/demo/code/gdb/aa
breakpoint 1, main () at gdbtest.c:12
12 srand(time(null));
missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64
# 下一步,執行下一行,系統函式只能用n
(gdb) s
# 下一步,進入函式內部
(gdb) n
# until 19
(gdb) until 17
# 列印變數
(gdb) p age
# 繼續
(gdb) continue
直接run,可以找出段錯誤的位置。
#
b 12
# 條件斷點
b 12 if i=5
# 檢視斷點資訊
info b
(gdb) bt
#0 fun () at gdbtest.c:7
#1 0x0000000000400610 in main () at gdbtest.c:15
# 從#0棧幀切換到#1棧幀
(gdb) frame 1
#1 0x0000000000400610 in main () at gdbtest.c:15
15 fun();
# 檢視棧幀#1 的變數
(gdb) p age
$1 = 100
站幀:隨著函式呼叫而在stack上開闢的一片記憶體空間。用於存放函式呼叫時產生的區域性變數和臨時值。
(gdb) display age
1: age = 100
(gdb) n
age is : 100
15 fun();
1: age = 100
(gdb) undisplay 1 # 跟蹤的變數編號
除錯工具 gdb
gcc o a.out a.c gdb q a.out break main info register i r objdump d a.out grep a20 main.轉換為機器 objdump m intel d a.out grep a20 main.gdb 設定 1 gdb q 2 se...
gdb除錯工具
檢視幫助一是man 命令,二是進入 www.gnu.org 找到gdb的幫助文件 更詳細 gcc wall g main.c o main,只有這樣才能產生除錯資訊,包括core的除錯資訊。一 常用命令 run r 執行,執行到斷點,重新用r,表示重新開始執行。list l 列出源 l 2,l ma...
GDB除錯工具
mascot 射水魚 gdb官網 gdb適用的程式語言 ada c c objective c pascal 等。gdb的工作方式 本地除錯和遠端除錯。目前release的最新版本為8.0,gdb可以執行在linux 和windows 作業系統上。1.1 what is gdb?1 gdb gnud...