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