gdb break 斷點設定(一)

2021-08-09 22:07:24 字數 1880 閱讀 9590

二、斷點設定

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需要手動控制斷點的刪除和使能。

break 可帶如下引數:

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 可以跟乙個規則表示式。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 命令檢視當前斷點資訊。此外,還有如下幾個配套的常...