gdb的作用:
- 啓動程序,指定任意可以影響程序的參數
- 讓程序在指定條件下暫停
- 測試程序停止時發生事情
- 改變程序內部變量,改正錯誤繼續運行
gdb的使用:
- gdb + 可執行文件
- gdb + 可執行文件 + core
- gdb + 進程名 + 進程ID
調試命令:
- break 設置斷點:
- break function 設定到指定的函數
- break linenum 設定到行號
- break +/- offset 當前行號前後
- break filename:linenum 指定文件的多少行
- break if<condition> 條件成立時停住
- info breakpoints[n] 查看斷點信息
- delete breakpoints[n] 刪除斷點
- disable breakpoints[n] 禁用斷點
- enable breakpoints[n] 啓用斷點
- watch <expr> :變量發生變化時中斷 rwatch <expr> 讀時中斷 awatch <expr> 被寫或者讀中斷
- run[ ] :啓動程序附帶參數
- bt(backtrace) 顯示堆棧信息
- print expr:顯示錶達式的值
- c :繼續執行程序(例如斷電處停止)
- next:執行下一行代碼(跨過函數調用)
- edit [file:]function :查看程序停的位置
- list[file:] function :顯示程序停住的附近的代碼
- step:單步調試,進入函數內部
- quit:退出程序
- continue 繼續運行程序直到下一個斷點
-
until 運行至當前語句塊結束
-
finish 運行至函數結束並跳出,並打印函數的返回值
-
layout src (源代碼)、regs(寄存器)、asm(彙編)、split(源代碼和彙編) :顯示窗口 ,control + x ,再按a退出窗口
-
disassemble :查看彙編代碼,/m 源碼和彙編一起排列