linux命令之gdb

注:Linux下輸入 * 號時,前面需要加\(轉義符),即\*。因爲Linux下的*代表所有文件。

啓動gdb           - gdb 程序名 [corefile]

corefile是可選的,但能增強gdb的調試能力。

Linux默認是不生成corefile文件的,所以需要在.bashrc文件中添加

ulimit –c unlimited(修改.bashrc文件後記得 . .bashrc 讓修改生效)

 

爲了能調試程序,makefile文件中,.c.o標號下需寫爲:(加上-g)

.c.o:

       $(CC) -Wall -g -o $@ -c $<


如上圖所示,make 編譯鏈接,運行可執行文件時出錯,此時發現多了core.5691文件,只能用gdb打開,gdb靠core文件提示你程序哪裏出錯。若用gdb –q mycal core.5691,即中間加上-q,可去除gdb版本號等信息。

或者可以先用gdb運行程序,再用run命令:

gdb mycal -q

run

run之後:

where           只顯示出錯的行的代碼

list                 顯示出錯的代碼的上下十行內的代碼,list也可以帶參數

print i              顯示變量i的值

break             設置斷點

break linenum                       在某一行設置斷點

break funcname                    在某個函數設置斷點

break filename:linenum       在其他文件中某行設置斷點

break filename:funcname   在其他文件中某函數設置斷點

  注:可以設置多個斷點,info break 查看有多少斷點,delete 刪除一個斷點

continue   從斷點以後繼續執行

 

改變一個變量的值

set variablevarname = value,varname是變量的名稱,value是變量的新值。

即用以上命令使得動態改變變量的值。

 

單步調試

step命令:                每次執行一條語句,相當於step into

next命令:                當遇到一個函數,next將執行整個函數,相當於step over

return [value]命令:停止執行當前函數,相當於step return

注:gdb記住了最後一個被執行的命令,因此若需要重複執行某條命令,不需要每次都鍵入命令。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章