GDB调试:观察点(数据断点)【GDB调试】
生活随笔
收集整理的這篇文章主要介紹了
GDB调试:观察点(数据断点)【GDB调试】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 觀察點
- 觀察點類型
- Hardware watchpoint
- Software watchpoint
- watch 寫觀察點
- 值被改變
- 滿足表達式條件
- 給特定運行的線程加 watch
- 查看運行的線程
- 為運行的線程設置 watchpoint
- rwatch 讀觀察點
- awatch 讀寫觀察點
- info watch 查看觀察點
- delete 刪除觀察點
- disable 禁用觀察點
- enable 啟用觀察點
觀察點
觀察點是一個特殊的斷點,當表達式的值發生改變時,進行終端。
表達式可以使一個變量的值,也可以包含由運算符組合的一個或多個變量的值。
觀察點類型
Hardware watchpoint
通過硬件方式。
不影響程序的執行。
不影響程序執行的性能。
大多數X86系統都使用 Hardware watchpoint。
Software watchpoint
通過軟件方式。
影響程序性能。(慢到幾倍甚至十幾倍)
例如:a + b
watch 寫觀察點
值被改變
當變量的值發生改變并被寫時,觸發斷點。
命令:(gdb) watch [變量名]
例如:
(gdb) watch tmp Hardware watchpoint 1: tmp滿足表達式條件
觸發中斷條件:
①:表達式中的值被改變。
②:表達式滿足條件。
命令:(gdb) watch [條件]
例如:
(gdb) watch tmp1+tmp2 > 10 Hardware watchpoint 1: tmp1+tmp2 > 10給特定運行的線程加 watch
查看運行的線程
命令:
(gdb) i threads帶 * 為主線程。
為運行的線程設置 watchpoint
命令:watch [變量名] thread [線程號]
舉例:
(gdb) watch tmp thread 3給3號線程的tmp變量設置觀察點。
說明:設置只有只有3號線程改變tmp值時,觸發斷點。
rwatch 讀觀察點
當變量的值被讀取時,觸發斷點。
命令:(gdb) rwatch [變量名]
例如:
(gdb) rwatch tmp Hardware read watchpoint 1: tmpawatch 讀寫觀察點
當變量的值發生改變或者被讀取時,觸發斷點。
命令:(gdb) awatch [變量名]
例如:
(gdb) awatch tmp Hardware access (read/write) watchpoint 1: tmpinfo watch 查看觀察點
命令:info watch
舉例:
(gdb) info watch Num Type Disp Enb Address What 1 acc watchpoint keep y tmpbreakpoint already hit 1 timedelete 刪除觀察點
命令:
(gdb) delete Delete all breakpoints? (y or n) y (gdb) info watch No watchpoints.disable 禁用觀察點
命令:
(gdb) awatch tmp Hardware access (read/write) watchpoint 2: tmp (gdb) info watch Num Type Disp Enb Address What 2 acc watchpoint keep y tmp (gdb) disable 2 (gdb) info watch Num Type Disp Enb Address What 2 acc watchpoint keep n tmp (gdb)說明:觀察點存在,但是滿足條件后不會觸發斷點。
enable 啟用觀察點
命令:
(gdb) awatch tmp Hardware access (read/write) watchpoint 2: tmp (gdb) info watch Num Type Disp Enb Address What 2 acc watchpoint keep y tmp (gdb) disable 2 (gdb) info watch Num Type Disp Enb Address What 2 acc watchpoint keep n tmp (gdb) enable 2 (gdb) info watch Num Type Disp Enb Address What 2 acc watchpoint keep y tmp (gdb)禁用之后啟用觀察點,滿足條件之后觸發觀察點。
總結
以上是生活随笔為你收集整理的GDB调试:观察点(数据断点)【GDB调试】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取代C语言的标准输入输出:cin 和 c
- 下一篇: GDB调试基础操作详解【GDB调试】