b bcm_petra_oam_endpoint_action_set 打斷點
n 下一步執行
c 執行
d 取消斷點
p *指針 或者變量名 打印指針 結構體 變量值
【文檔】
GDB使用速查
啟動... 1
設置斷點... 1
跟蹤執行... 2
調用堆棧... 2
查看信息... 2
多線程,多進程... 2
其他... 3
附錄:《GDB用戶使用手冊》
啟動 [詳細]
1. 通過gdb啟動程序:gdb 可執行文件,然后調用run,啟動程序。另外有一個start命令,在main函數入口處斷住
2. 連到已經運行的程序:gdb
attach 進程ID
(進程ID可以通過ps –a查看)
3. 退出gdb調試:detach
設置斷點 [詳細]
1. 函數斷點:break 函數名
2. 文件斷點:break 文件名:行號
3. 條件斷點:break … if 條件或者通過condition斷點號 條件修改已經存在的斷點
4. 跳過n次后斷住:ignore 斷點號 count
5. 一次性斷點:tbreak …
6. 多函數斷點:rbreak regex (regex為函數名的正則表達式)
7. 硬件寫斷點:watch 變量或表達式(該表達式值被修改時斷)如:watch *(int*)0xbfbdd5c8
8. 硬件讀斷點:rwatch 變量或表達式(該變量讀取時斷)
9. 硬件讀寫斷點:awatch 變量或表達式 (表達式讀寫時斷)
10. 由於硬件斷點需要硬件支持,在不支持硬件斷點的情況下,watch會使用軟件模擬,可以通過set can-use-hw-watchpoints和show can-use-hw-watchpoints設置或查看是否使用硬件斷點
11. 查看所有斷點:info break, info watchpoints
12. 刪除斷點:1. clear 函數名,2. clear 文件名:行號 3. delete (刪除所有斷點)等
13. 使用和去使能斷點: enable [breakpoints] [range...]和disable [breakpoints] [range...]
14. 斷點后執行一段程序:commands 斷點號
... 執行程序...
end
跟蹤執行 [詳細]
1. 繼續執行:continue
2. 執行-進入(step in本行或多行):step 或者執行多個語句(行) step 行數
3. 執行-跳過(step over本行或多行):next 或者執行多個語句(行) next 行數
4. 執行跳到指定行:advance 行號
5. 退出循環:until
6. 返回上一級函數(step out):finish
7. 機器指令級別執行:stepi和nexti
調用堆棧 [詳細]
1. 查看調用堆棧: backtrace(bt)或者bt full 或者bt 堆棧編號
2. 進入指定堆棧:frame 堆棧編號,或者frame 地址
3. 上升或者下降堆棧級別:up n或者down n
4. 查看當前棧信息:info frame,info args(參數信息),info locals局部變量
查看信息 [詳細]
1. info program:查看當前程序狀態(如進程已停止,顯示停止原因)
2. 查看變量或者表達式:print /格式表達式
查看格式:x 16進制 d有符號 u無符號 o八進制 t 二進制 a 地址(包括符號表信息) c 字符 f 浮點數
3. 將指針轉換為數組查看:print *指針@長度
4. 查看結構體數組的某個字段 set$i=0
p dtab[$i++]->fv
回車
5. 查看內存:x/nfu 地址,其中n表示重復次數 f表示格式 u表示單位,u可以為b一字節 h兩字節 w四字節 g八字節
6. 自動查看:每次斷點后自動顯示該表達式:display (參數與print類似)
7. 查看寄存器:print $寄存器名稱 ,如print $pc
8. 查看源代碼:list 行號,list函數名,list文件名:行號
9. 查看所有斷點info breakpoints,info watchpoints
多線程,多進程 [詳細]
1. 查看所有線程信息:info threads
2. 切換到指定線程:thread 線程號
3. 在指定線程(或所有線程)執行命令:thread apply [threadno]或[all] 執行命令 (如常用thread apply all bt查看進程中所有線程調用堆棧)
4. 在指定線程設置斷點:break 斷點信息 thread 線程號
5. 多進程相關內容總是沒看到預期效果,還望牛人指導:)
其他
1. 動態修改變量:printf 變量名=值
2. 調用函數:call 表達式或者printf表達式,表達式中可以有函數調用
3. 執行shell命令:shell 命令參數,特別的make,pwd等可以直接執行,其效果相當於shell make 參數
【參考】
