gdb除錯命令

2021-08-21 13:26:05 字數 1490 閱讀 2906

由於面試原因我特意總結一下gdb的用法,以免下次吃虧.

引數:f     ***    匯入檔案

b    number  設斷點

r    執行

n 執行一行

s    進入函式內部執行一小行

l     顯示**

si ni:彙編層用的除錯命令,用法和上面的n和s一樣

info break 顯示斷點

info threads 顯示當前所有的執行緒資訊

thread number 切換執行緒

d    number  刪除number號斷點

c     繼續執行到下乙個斷點

bt    列印函式呼叫棧(可以用於檢視死鎖)

i registers 列印所有暫存器

disassemble 反編譯

檢視記憶體裡面的內容:

格式:x/

n、f、u、i是可選的引數,表示乙個記憶體位址

1) n 是乙個正整數,表示顯示記憶體的長度,也就是說從當前位址向後顯示幾個位址的內容

2) f 表示顯示的格式

3) u 表示將多少個位元組作為乙個值取出來,如果不指定的話,gdb預設是4個bytes,如果不指定的話,預設是4個bytes。當我們指定了位元組長度後,gdb會從指記憶體定的記憶體位址開始,讀寫指定位元組,並把其當作乙個值取出來。

4)i  把記憶體中的指令翻譯成彙編,彙編級別的除錯才能用上。

引數 f 的可選值:

x 按十六進製制格式顯示變數。

d 按十進位制格式顯示變數。

u 按十進位制格式顯示無符號整型。

o 按八進位制格式顯示變數。

t 按二進位制格式顯示變數。

a 按十六進製制格式顯示變數。

c 按字元格式顯示變數。

f 按浮點數格式顯示變數。

s 按字串格式顯示變數。

引數 u 可以用下面的字元來代替:

b 表示單位元組

h 表示雙位元組

w 表示四字 節

g 表示八字節

特殊用法:

1.條件斷點。b line if *** == yyy //當*** == yyy時候觸發第line行的斷點。

例如:(gdb) p record

$10 =

(gdb) p &record

$11 = (int (*)[10]) 0x8049740

(gdb)x/4uw0x8049740

0x8049740 :    12    76    48    62

(gdb)x/6ow0x8049740

0x8049740 :    014    0114    060    076

0x8049750 :    0136    021

設定條件斷點:

(gdb) b 13 if i == 8

breakpoint 1 at 0x80483fa: filegdb_condition.c, line 13.

gdb除錯命令

一 gdb常用命令簡介 rrun 執行.程式還沒有執行前使用 c cuntinue 執行到下一斷點處 qquit 退出tab tab命令補全功能 h help幫助s step 跟入函式 nnext 執行下一行的 如果是函式呼叫,也當作一行 執行到此函式返回 b breakpoint 設定斷點,用法 ...

GDB除錯命令

gdb的命令很多,本文不會全部介紹,僅會介紹一些最常用的。在介紹之前,先介紹gdb中的乙個非常有用的功能 補齊功能。它就如同linux下 shell中的命令補齊一樣。當你輸入乙個命令的前幾個字元,然後輸入tab鍵,如果沒有其它命令的前幾個字元與此相同,shell將補齊此命令。如果有 其它命令的前幾個...

GDB除錯命令

用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...