日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux常用调试,linux下gdb常用的调试命令

發(fā)布時(shí)間:2025/3/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux常用调试,linux下gdb常用的调试命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用gdb調(diào)試程序時(shí),常常很困惑一些命令的使用,要么是不知道這個(gè)命令,要么忘了命令的使用方法。接下來(lái)是小編為大家收集的linux下gdb常用的調(diào)試命令,希望能幫到大家。

linux下gdb常用的調(diào)試命令

gdb常用:

run 啟動(dòng)程序運(yùn)行

next 單步執(zhí)行(不到函數(shù)內(nèi)部)

step 單步執(zhí)行,跟蹤到函數(shù)內(nèi)部

finish 繼續(xù)執(zhí)行,直到當(dāng)前函數(shù)結(jié)束

continue 繼續(xù)執(zhí)行,直到下一個(gè)斷點(diǎn)

jump 9 直接跳到指定行

list 顯示源碼

l 3,10 顯示特定范圍的源碼 l main顯示函數(shù)的源碼

set listsize 50 修改源碼顯示行數(shù)

break 設(shè)置斷點(diǎn)

b main設(shè)置函數(shù)斷點(diǎn)

b 9 設(shè)置指定行斷點(diǎn)

b 將下一行設(shè)置為斷點(diǎn)

b test if a == 10 設(shè)置條件斷點(diǎn)

delete 刪除斷點(diǎn)

d 3 刪除指定的斷點(diǎn)

condition 修改條件 condition 4 a == 90

info 查看信息

info threads 查看線程信息

info breakpoints 查看斷點(diǎn)信息

info locals 顯示局部變量

info args 顯示函數(shù)變量

info registers 顯示寄存器數(shù)據(jù)

thread 2 切換線程

where 查看調(diào)用堆棧(bt 或者 info s)

frame 查看當(dāng)前堆棧幀

frame 8 查看指定堆棧幀信息

info frame 查看當(dāng)前堆棧幀更詳細(xì)的信息

print a 打印變量信息

print/x a 十六進(jìn)制輸出變量信息

print a + b 可以進(jìn)行表達(dá)式計(jì)算

print $eax 顯示某個(gè)寄存器的數(shù)據(jù)

x/nfu 0×300098 顯示指定地址的內(nèi)存數(shù)據(jù)

n 顯示內(nèi)存單位,長(zhǎng)度

f 格式(除了 print 格式外,還有 字符串s 和 匯編 i)

u 內(nèi)存單位(b: 1字節(jié); h: 2字節(jié); w: 4字節(jié); g: 8字節(jié))

set vairiable a = 100 可以修改變量的值

commands 指定到了特定斷點(diǎn)后執(zhí)行的命令序列

whatis buf 顯示變量的類型

dump memory 輸出文件名 內(nèi)存起始地址 內(nèi)存終止地址

restore 文件名 binary 起始位置

watch buf buf的值一旦改變,會(huì)觸發(fā)watchpoint

奇淫技巧:

cat ~/.gbinit gdb會(huì)從這個(gè)文件讀取配置

cat ~/.gdb_history

呵呵,對(duì)于gdb時(shí)想要查看長(zhǎng)的字符串老是顯示不全,怎么半呢,gdb參看數(shù)組字符串時(shí)默認(rèn)只是顯示部分的數(shù)據(jù),通過(guò)這個(gè)命令可以修改:

set print elements 0 默認(rèn)這里設(shè)置是200,設(shè)置為0表示沒(méi)有限制

還有其它一些set命令可以試試:

set print address

set print address on

打開地址輸出,當(dāng)程序顯示函數(shù)信息時(shí),GDB會(huì)顯出函數(shù)的參數(shù)地址。系統(tǒng)默認(rèn)為打開的

set print object

在C++中,如果一個(gè)對(duì)象指針指向其派生類,如果打開這個(gè)選項(xiàng),GDB會(huì)自動(dòng)按照虛方法調(diào)用的規(guī)則顯示輸出,如果關(guān)閉這個(gè)選項(xiàng)的話,GDB就不管虛函數(shù)表了。這個(gè)選項(xiàng)默認(rèn)是off

show print pretty

查看GDB是如何顯示結(jié)構(gòu)體的

set print array

set print array on

打開數(shù)組顯示,打開后當(dāng)數(shù)組顯示時(shí),每個(gè)元素占一行,如果不打開的話,每個(gè)元素則以逗號(hào)分隔。這個(gè)選項(xiàng)默認(rèn)是關(guān)閉的

set print null-stop

如果打開了這個(gè)選項(xiàng),那么當(dāng)顯示字符串時(shí),遇到結(jié)束符則停止顯示。這個(gè)選項(xiàng)默認(rèn)為off

set print pretty on

如果打開printf pretty這個(gè)選項(xiàng),那么當(dāng)GDB顯示結(jié)構(gòu)體時(shí)會(huì)比較漂亮

set print union

設(shè)置顯示結(jié)構(gòu)體時(shí),是否顯式其內(nèi)的聯(lián)合體數(shù)據(jù)。例如有以下數(shù)據(jù)結(jié)構(gòu)

p string+n顯示偏移n后的字符串內(nèi)容,這個(gè)使用起來(lái)也是比較方便的

看了“l(fā)inux下gdb常用的調(diào)試命令”還想看:

總結(jié)

以上是生活随笔為你收集整理的linux常用调试,linux下gdb常用的调试命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。