linux下dbg


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-watchpointsshow can-use-hw-watchpoints設置或查看是否使用硬件斷點

11.     查看所有斷點:info break, info watchpoints

12.     刪除斷點:1.  clear 函數名,2.  clear 文件名:行號  3delete (刪除所有斷點)等

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.       機器指令級別執行:stepinexti

調用堆棧 [詳細]

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 參數

 


 

【參考】

https://cloud.tencent.com/developer/article/1022820


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM