二、斷點設定
gdb斷點分類:
以設定斷點的命令分類:
breakpoint
可以根據行號、函式、條件生成斷點。
watchpoint
監測變數或者表示式的值發生變化時產生斷點。
catchpoint
監測訊號的產生。例如c++的throw,或者載入庫的時候。
gdb中的變數從1開始標號,不同的斷點採用變數標號同一管理,可以 用enable、disable等命令管理,同時支援斷點範圍的操作,比如有些命令接受斷點範圍作為引數。
例如:disable 5-8
1、break及break變種詳解:
相關命令有break,tbreak,rbreak,hbreak,thbreak,後兩種是基於硬體的,先不介紹。
>>break 與 tbeak
break,tbreak可以根據行號、函式、條件生成斷點。tbreak設定方法與break相同,只不過tbreak只在斷點停一次,過後會自動將斷點刪除,break需要手動控制斷點的刪除和使能。>>rbreakbreak 可帶如下引數:
linenum 本地行號,即list命令可見的行號
filename:linenum 制定個檔案的行號
function 函式,可以是自定義函式也可是庫函式,如open
filename:function 制定檔案中的函式
condtion 條件
*address 位址,可是函式,變數的位址,此位址可以通過info add命令得到。
例如:break 10
break test.c:10
break main
break test.c:main
break system
break open
如果想在指定的位址設定斷點,比如在main函式的位址出設斷點。
可用info add main 獲得main的位址如0x80484624,然後用break *0x80484624.
條件斷點就是在如上述指定斷點的同時指定進入斷點的條件。
例如:(假如有int 型別變數 index)
break 10 if index == 3
tbreak 12 if index == 5
rbreak 可以跟乙個規則表示式。rbreak + 表示式的用法與grep + 表示式相似。即在所有與表示式匹配的函式入口都設定斷點。>>檢視斷點資訊rbreak list_* 即在所有以 list_ 為開頭字元的函式地方都設定斷點。
rbreak ^list_ 功能與上同。
info break [break num ]info break 可列出所有斷點資訊,info break 後也可設定要檢視的break num如:
info break 1 列出斷點號是1的斷點資訊
num type disp enb address what
1 breakpoint keep y
stop only if i==1
breakpoint already hit 1 time
1.1 y 0x080486a2 in void foo() at t.cc:8
1.2 y 0x080486ca in void foo() at t.cc:8
gdb break 斷點設定(一)
二 斷點設定 gdb斷點分類 以設定斷點的命令分類 breakpoint 可以根據行號 函式 條件生成斷點。watchpoint 監測變數或者表示式的值發生變化時產生斷點。catchpoint 監測訊號的產生。例如c 的throw,或者載入庫的時候。gdb中的變數從1開始標號,不同的斷點採用變數標號...
GDB 斷點設定
啟動gdb後,首先就是要設定斷點,程式中斷後才能除錯。在gdb中,斷點通常有三種形式 斷點 breakpoint 在 的指定位置中斷,這個是我們用得最多的一種。設定斷點的命令是break,它通常有如下方式 可以通過info breakpoints n 命令檢視當前斷點資訊。此外,還有如下幾個配套的常...
GDB(設定斷點)
啟動gdb後,首先就是要設定斷點,程式中斷後才能除錯。在gdb中,斷點通常有三種形式 斷點 breakpoint 在 的指定位置中斷,這個是我們用得最多的一種。設定斷點的命令是break,它通常有如下方式 可以通過info breakpoints n 命令檢視當前斷點資訊。此外,還有如下幾個配套的常...