linux下gdb常用的調試命令

來源:互聯網
上載者:User

用gdb偵錯工具時,常常很困惑一些命令的使用,要麼是不知道這個命令,要麼忘了命令的使用方法。
呵呵,有時迷茫了自己處在什麼堆棧的深處,這是使用where命令能夠清晰的看到自己的位置,有時在迴圈太多讓人受不了了,可使用u或者finish或者jump命令來跳出去。
gdb常用:
run  啟動程式運行
next 逐步執行(不到函數內部)
step  逐步執行,跟蹤到函數內部
finish 繼續執行,直到當前函數結束
continue 繼續執行,直到下一個斷點
jump 9 直接跳到指定行

list  顯示源碼
l 3,10 顯示特定範圍的源碼 l main顯示函數的源碼
set listsize 50 修改源碼顯示行數

break 設定斷點
b main設定函數斷點
b 9 設定指定行斷點
b 將下一行設定為斷點
b test if a == 10 設定條件斷點

delete 刪除斷點
d 3 刪除指定的斷點

condition 修改條件 condition 4 a == 90

info 查看資訊
info threads 查看線程資訊
info breakpoints 查看斷點資訊
info locals 顯示局部變數
info args    顯示函數變數
info registers 顯示寄存器資料

thread 2 切換線程

where 查看呼叫堆疊(bt 或者 info s)
frame 查看當前堆疊框架
frame 8 查看指定堆疊框架資訊
info frame 查看當前堆疊框架更詳細的資訊

print a 列印變數資訊
print/x a 十六進位輸出變數資訊
print a + b 可以進行運算式計算
print $eax 顯示某個寄存器的資料

x/nfu 0×300098  顯示指定地址的記憶體資料
n 顯示記憶體單位,長度
f 格式(除了 print 格式外,還有 字串s 和 彙編 i)
u 記憶體單位(b: 1位元組; h: 2位元組; w: 4位元組; g: 8位元組)

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

commands 指定到了特定斷點後執行的命令序列

whatis buf  顯示變數的類型
dump memory 輸出檔案名 記憶體起始地址  記憶體終止地址
restore  檔案名稱 binary  起始位置
watch buf buf的值一旦改變,會觸發watchpoint

奇淫技巧:
cat ~/.gbinit  gdb會從這個檔案讀取配置
cat ~/.gdb_history

呵呵,對於gdb時想要查看長的字串老是顯示不全,怎麼半呢,gdb參看數組字串時預設只是顯示部分的資料,通過這個命令可以修改:

set print elements 0   預設這裡設定是200,設定為0表示沒有限制

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

set print address
set print address on
開啟地址輸出,當程式顯示函數資訊時,GDB會顯出函數的參數地址。系統預設為開啟的

set print object <on/off>
在C++中,如果一個對象指標指向其衍生類別,如果開啟這個選項,GDB會自動按照虛方法調用的規則顯示輸出,如果關閉這個選項的話,GDB就不管虛函數表了。這個選項預設是off

show print pretty
查看GDB是如何顯示結構體的

set print array
set print array on
開啟數組顯示,開啟後當數組顯示時,每個元素佔一行,如果不開啟的話,每個元素則以逗號分隔。這個選項預設是關閉的

set print null-stop <on/off>
如果開啟了這個選項,那麼當顯示字串時,遇到結束符則停止顯示。這個選項預設為off

set print pretty on
如果開啟printf pretty這個選項,那麼當GDB顯示結構體時會比較漂亮

set print union <on/off>
設定顯示結構體時,是否顯式其內的聯合體資料。例如有以下資料結構

p string+n顯示位移n後的字串內容,這個使用起來也是比較方便的

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.