linux gdb基本概念
GDB是一個功能強大的調(diào)試器,它是一個自由軟件,能夠用在許多UNIX平臺上。它同時也是Linux系統(tǒng)中的默認調(diào)試器。GDB已被移植到許多其他的計算機平臺上,并且能夠用于調(diào)試嵌入式實時系統(tǒng)。一般來說,GDB主要可以幫助我們完成以下四個方面的功能: 1, 啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。 2,可以讓被調(diào)試的程序在你所指定的斷點處停住。 3, 當程序被停住時,可以檢查此時你的程序中所發(fā)生的事情。 4, 動態(tài)的改變你程序的執(zhí)行環(huán)境。 與圖形化的調(diào)試工具相比,GDB具有如下優(yōu)點: GDB的啟動速度比GUI快很多,當只需要快速檢查代碼中的某項內(nèi)容時,這就是一 個很重要的優(yōu)點。在與Eclipse比較時,這種啟動時間上的差距很大。
下面我在自己虛擬機上的一個進程拷貝的代碼進行的實驗
gcc main.c -g -o app
gdb app
之后我們就可以使用gdb進行調(diào)試了
run全速執(zhí)行,start開始執(zhí)行,這兩個命令如果有命令行參數(shù)的話最好加上(建議)
啟動界面
start直接執(zhí)行到了67行
list:可以查看代碼
list+num可以指明查看哪一行代碼
聽過break可以打斷點,info breakpoints可以查看我們用了哪些斷點,delete breakpoints可以取消斷點,這里我們需要注意一個問題就是,在virtual studio中的斷點,如果關(guān)閉了下次打開仍然存在,但是這里如果關(guān)閉了下次就不會存在了
相對應的,vs中有監(jiān)禁的功能,就是監(jiān)視變量,display就有這個功能,info display可以查看我們監(jiān)視了哪些變量,之后我們每次next和step的時候,都會在最后幾行顯示監(jiān)視的變量,delete就是刪除了
step就是按語句調(diào)式,next就是按照過程調(diào)式
set var 變量名=值 可以中途改變變量的值,
printf可以中間輸出變量的值
backtrace( bt )顯示程序的層次關(guān)閉,與函數(shù)調(diào)用棧幀,下面75行到26行跳到了另外一個函數(shù),這樣可以使用backtrace就可以看層次關(guān)系,兩個函數(shù)使用不同的棧,所以我們使用print argc的時候不好使,我們可以通過frame臨時跳到main中,
在一盒函數(shù)中我們使用finish可以挑戰(zhàn)到調(diào)用的開始位置
x(x/20wx)可一查看內(nèi)存,20表示查看20字節(jié),w表示word,x表示十六進制
continue 如果使用斷點的話我們使用continue可以按照斷電進行
set follow-fork-mode (child or parent) 調(diào)用父進程子進程
core啟用core文件,幫助調(diào)試
在編譯運行app的時候,如果有問題,會生成一個core文件通過gdb core會直接發(fā)現(xiàn)錯誤,這種方法非常方便,但是core的文件特別大
quit退出調(diào)試
總結(jié)
以上是生活随笔為你收集整理的linux gdb基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux入门】
- 下一篇: Linux网络管理——端口作用