日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GDB调试:观察点(数据断点)【GDB调试】

發布時間:2025/3/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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: tmp

awatch 讀寫觀察點

當變量的值發生改變或者被讀取時,觸發斷點。

命令:(gdb) awatch [變量名]

例如:

(gdb) awatch tmp Hardware access (read/write) watchpoint 1: tmp

info watch 查看觀察點

命令:info watch

舉例:

(gdb) info watch Num Type Disp Enb Address What 1 acc watchpoint keep y tmpbreakpoint already hit 1 time

delete 刪除觀察點

命令:

(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调试】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。