gdb除錯工具

2022-02-22 17:08:25 字數 1600 閱讀 6524

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