gdb 相關命令

參考教程:
Linux gdb調試器用法全面解析
gdb斷點(四)刪除
gdb: how to print the current line or find the current line number?
GDB Error: “The program is not being run”

編譯時:

gcc -g test.c -o test

進入調試:

gdb test.out

list 命令

縮寫 l

  • 跟行號
  • 跟函數名(run時停止在函數首行)

run 命令

縮寫 r

  • 停止在斷點處
  • 指定參數路徑等

break 命令

縮寫 b

  • 跟行號

  • 跟函數名

  • b +offset / -offset,在當前行的前面或後面 offset 行停止

  • break file:line_num,在源文件的某行停止

  • break *add,在 add 內存地址停止

  • break … if condition ,條件斷點,中間…代表是上述命令


  • 查看斷點

    info break break_num

    縮寫 i b

  • 刪除斷點

    delete break_num

    縮寫 d n

  • 刪除行斷點

    clear func clear 無縮寫

    clear file:line_num

    clear line_num

單步命令

next 命令

縮寫 n

  • next count,執行 count 條指令

  • 重複上一條命令:按下回車 。即每一次重複執行上一條指令時,不需要重複輸入,只需回車即可。

    附:報錯”The program is not being run.”

    程序沒有自動開始運行,此時輸入 start 即可開始調試,注意不要使用 run 命令。

step 命令

縮寫 s

  • 可以進入函數
  • step count

finish 命令

縮寫 f

  • 執行程序至當前函數完成,打印堆棧信息和返回值等

until 命令

縮寫 u

  • 運行程序至推出循環體

stepi 和 nexti 命令

縮寫分別爲 si 和 ni

  • 單步執行機器指令

frame 命令

縮寫 f

  • 顯示當前所在的行以及相關信息

continue 命令

縮寫 c

  • 程序停止後,continue 執行到結束或斷點處,或進行 watch 的變量變化處
  • continue ignore-break-num,忽略多少斷點

縮寫 p

  • print /f,由 f 指定輸出格式

    • x 十六進制
    • d 十進制
    • u 十六進制無符號整型
    • o 八進制
    • t 二進制
    • c 字符格式
    • f 浮點格式
  • 動態數組

    int *array = (int *)malloc (len * sizeof (int))

    查看該動態數組的值:p *array@len

  • p {*type*} add ,查看地-址 add 處 type 類型的值

  • display 命令,設置程序停止時自動顯示的變量

  • print x = 4,修改變量值

watch 命令

縮寫 w

  • 觀察的變量變化時停止程序
  • watch exp ,觀察表達式或變量
  • rwatch exp,表達式或變量被讀取時,停止程序
  • awatch exp,表達式或變量被讀或寫時,停止程序
  • info watchpoints,列出所有觀測點
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章