GDB學(xué)習(xí)筆記(1)

最近通過(guò)《軟件調(diào)試的藝術(shù)》學(xué)習(xí)GDB,書(shū)剛讀了大概三分之一,這里先記一些筆記
:-)

縮寫(xiě)

short full
b break
i b info break
c continue
r run
at attach
s step
n next
p print
bt backtrace

基本操作

斷點(diǎn)

b position
position可以是 filename:line filename:function
filename可以不指明,gdb總有一個(gè)焦點(diǎn)文件,剛啟動(dòng)時(shí)焦點(diǎn)文件是main函數(shù)所在的文件,當(dāng)程序運(yùn)行時(shí),焦點(diǎn)文件是當(dāng)前執(zhí)行代碼所在的文件,也可以通過(guò) list filename:functionname來(lái)設(shè)定焦點(diǎn)。

斷點(diǎn)命令:

command breakPointNumber,對(duì)編號(hào)為breakPointNumber的斷點(diǎn)設(shè)置命令,以end結(jié)尾,執(zhí)行到此斷點(diǎn)時(shí),命令會(huì)執(zhí)行,比如打印變量:

printf(“at break point 3,
           i = %d,j = %d,k = %d\n”,
           i,j,k) //括號(hào)可有可無(wú)

一些命令,感覺(jué)用處不大。。。

  • define 定義宏,可帶最多十個(gè)參數(shù)  
    
    define PRINT_AND_GO
    xxxxx(說(shuō)明)
    >printf   $arg1,$arg0
    >continue
    >end
    
-    `show user` :   列出所有宏  
-    `silent` :    不輸出信息  
          
## 監(jiān)視點(diǎn)
wathc `value`  
watch `expession`  
`expression`是 **當(dāng)前程序語(yǔ)言風(fēng)格** 的條件表達(dá)式,比如 (i>0)&&(j==2)  
當(dāng)`value`變化或`expression`成立時(shí),程序中斷。  
設(shè)置監(jiān)視點(diǎn)時(shí)必須保證監(jiān)視變量在當(dāng)前程序指針?biāo)谖蛔佑行?,即?duì)已局部變量,必須保證程序指針停留在局部變量所在函數(shù),所以一般在要函數(shù)入口處加一個(gè)斷點(diǎn),然后才能設(shè)置函數(shù)內(nèi)變量的監(jiān)視點(diǎn)。  
##條件斷點(diǎn)
- 設(shè)置條件斷點(diǎn)  
   b  `position`  if  (`expression`)  
   `expression`外的括號(hào)可有可無(wú)  
- 將已有斷電設(shè)置為條件斷點(diǎn)  
   condition `breakPointNumber` if (`expression`)  
   `breakPointNUmber`用 info breakpoint(i b)查看  
   
   
## 繼續(xù)執(zhí)行  
-    c/continue 繼續(xù)執(zhí)行到下個(gè)斷點(diǎn)  
-    fin/finsh  繼續(xù)執(zhí)行到此函數(shù)結(jié)束
-    u/until    繼續(xù)執(zhí)行到循環(huán)結(jié)束 
*當(dāng)然,斷點(diǎn)對(duì) `fin/u` 依然有效*
*u 可帶位置參數(shù):u `position` * 
-    s/step     執(zhí)行下一條語(yǔ)句,會(huì)進(jìn)入函數(shù)  
-    n/next     執(zhí)行下一條語(yǔ)句,不會(huì)進(jìn)入函數(shù)  
*s/n可帶步數(shù)參數(shù): s 4*
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,179評(píng)論 2 33
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 轉(zhuǎn)載 與調(diào)試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,448評(píng)論 0 10
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,580評(píng)論 30 472
  • 最近由于工作很忙,心情也變得有些急躁。但在外面,我們總會(huì)壓抑自己的情緒,在家人面前,也許我們會(huì)讓自己的情緒釋放出...
    天真的風(fēng)箏閱讀 313評(píng)論 0 0

友情鏈接更多精彩內(nèi)容