Linux系統 gdb除錯技巧

2021-09-24 05:08:14 字數 1201 閱讀 5365

gdb除錯技巧

前言

我們知道,在linux環境下除錯**是不輕鬆的,至少很多ide整合開發環境下的除錯工具都比linux下的除錯要好用。但是linux也有像gdb這樣的工具,幫助我們進行相對方便的除錯。

使用-g選項允許gdb除錯

我們在linux環境下編譯**時,預設生成的可執行檔案是沒有辦法使用 gdb 進行除錯的,

但是我們在編譯選項裡輸入 -g選項,就可以使用gdb進行除錯了

print/p  ==>除錯中 檢視變數的值

break/b + n ==> 給某個位置的**打斷點,引數可以是行號也可以是乙個函式

info b ==> 檢視整個**的斷點資訊

run/r ==> 開始執行

continue/c ==> 繼續執行

quit/q ==>退出gdb

next/n ==>單步執行(逐過程)

step/s ==>單步執行(逐語句)

⭐bt/backtrace ==> 檢視函式呼叫棧幀(基本是除錯過程中必須敲的)

⭐frame/f + n ==>切換到某個棧幀

ulimit -a:檢視檔案大小

ulimit -c unlimited ==》將core檔案的大小調整為不做限制

gdb +(剛才的可執行程式)+ core.pid ==》

快捷鍵技巧

ctrl + r ==> 快速查詢上次敲的命令 可以加快除錯速度

入門的這些除錯過程都是讓gdb啟動乙個程式(這種除錯方法以後工作中幾乎不會用到)

真實的用法:

1.使用gdb除錯 coredump 檔案。(也稱 事後除錯)

coredump(核心轉儲檔案)就是車禍現場(**),程式崩潰那一瞬間的臨終遺言:

儲存了程式崩潰的那一瞬間,程式執行到哪了,執行狀況怎麼樣的一些資訊。

吐核:就是吐出了核心轉儲檔案(coredump)

2.使用 gdb attach(附加)上乙個程式

todo(程序相關的內容之後)

列印日誌 比偵錯程式會更管用

其他工具

cgdb(在gdb外面套了乙個殼子):

比gdb好用一丟丟,但是還是比不上ide.

GDB除錯技巧

在公司工作了一段時間,發現 b s結構的 除錯很麻煩,經常用的手段是通過 printf 打一串訊息來進行跟蹤,然後估計問題出在 通過逐步新增 printf 語句,獲得越來越多的資訊最終確定問題的根源。我感覺這樣比較麻煩,如果能把 gdb的單步除錯功能用上就好了。工作之餘,做了一定的嘗試,希望對跟我一...

GDB除錯技巧

談到gdb,不能不對他的強大功能所折服,在我所用過的所有偵錯程式中,這實在是乙個強大的除錯工具,今天就說說gdb的簡單用法。gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在 unix平台下做軟體,你會發現...

gdb除錯技巧

1 以結構體形式訪問某個記憶體 print type addr 其中type是結構體型別,addr是記憶體的位址 2 顯示符號表 info symbol info symbol symbol addr symbol addr為對應的位址 print 符號名 3 檢視型別的原型定義 有時候在除錯大型程...