在linux系統下如果想要除錯乙個專案,我們應該怎麼做?
有些童鞋可能會說:ide呀!
沒毛病老哥~非常標準的答案。除此之外,我們還可以使用gdb,為什麼使用gdb,它有什麼優勢呢?它可以在終端下使用,它短小精悍,功能強大~
嗯嗯嗯,我就是這樣說服自己的~
要注意!!使用gdb前,我們在編譯專案檔案時需加-g
作為乙個編譯引數(否則你將看不見函式名、變數名,而只能看到執行時的記憶體位址),再通過gdb執行可執行檔案,例:
gcc -o program -g main.c
gdb ./program
執行完上述命令,會看到關於 gdb 的說明和如下所示的除錯命令列:
(gdb)
關於gdb的基本使用:
——輸入l
(list 首字母)gdb 會列出10行**,l
後可加引數代表從第引數行開始列出(例如希望列出第 2 到11行時,我們可以寫l 2
)
——輸入b
(breakpoint首字母),表示設定程式執行的斷點,程式執行到斷點處就會暫停執行。b
後既可以加函式名作引數,使程式在呼叫某函式時暫停;也可以加行號作為引數,使程式在執行至某一行時暫停。
——輸入r
(run 首字母),程式會開始執行,並在第乙個斷點處暫停
——執行暫停時,輸入p 表示式
(print 的首字母) 表示在當前斷點處執行該表示式並檢視它的值。例如p ++age[0]
表示我們希望讓age[0]
自增並檢視自增後的值(表示式會對之後程式執行造成影響)
——執行暫停時,輸入n
(next 的首字母)程式會執行暫停位置後的下一條語句並再次暫停
——執行暫停時,輸入c
(continue 的首字母)程式會繼續執行到下乙個斷點處並暫停(如果沒有斷點就會執行直到結束)
以上就是gdb的簡單用法,具體用法請參考官方文件~
如果有寫的不對或者不全面的地方 可通過主頁的****進行指正,謝謝!
c 查缺補漏
c 基本語法 c 初始化引數列表 c 預設建構函式 c 複製建構函式 三 複製控制 1 複製建構函式 1.1 幾個要點 1 複製建構函式 複製建構函式是一種特殊建構函式,只有1個形參,該形參 常用 const 修飾 是對該類型別的引用。class peopel 當定義乙個新物件並用乙個同型別的物件對...
C語言查缺補漏 八 typedef的使用
至於typedef,說起來實在是太丟人了!這兩年一直以為這個關鍵字是結構體的專屬關鍵字 typedef 結構體型別 型別別名 型別別名 變數名 定義 最近才發現,它不僅可以給結構體起別名,還可以給各種各樣的型別起各種各樣的別名,用法實在是太活了!比如基本資料型別 typedef int size s...
C 查缺補漏之變數
我們在日常程式設計中經常會有int a 10 那麼 這個a就是變數。變數提供了程式可以操作的有名字的儲存區,要是在彙編時代,我們是直接操作暫存器和記憶體位址的,那麼現在就把底層的暫存器和記憶體位址抽象出來,取了乙個別名,通過這個別名也可以操作這塊記憶體。c 中每乙個兩邊都要有乙個特定的型別,該型別決...