gdb break 斷點設置


http://sourceware.org/gdb/current/onlinedocs/gdb/

斷點設置

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    <MULTIPLE>
             stop only if i==1
             breakpoint already hit 1 time
     1.1                         y    0x080486a2 in void foo<int>() at t.cc:8
     1.2                         y    0x080486ca in void foo<double>() at t.cc:8


免責聲明!

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



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