最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明

 更新時(shí)間:2023年09月04日 10:16:49   作者:凌肖戰(zhàn)  
這篇文章主要介紹了gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一. watch 命令的兩種監(jiān)控機(jī)制

在 gdb 調(diào)試中,

watch 命令有兩種設(shè)置觀察點(diǎn)的方式:

  • 硬件觀察點(diǎn)
  • 軟件觀察點(diǎn)

注意:

而 awatch 和 rwatch 命令只能設(shè)置硬件觀察點(diǎn)。

watch 命令所支持的兩種設(shè)置機(jī)制 

軟件觀察點(diǎn):

所謂軟件觀點(diǎn)(software watchpoint),即用 watch 命令監(jiān)控目標(biāo)變量(表達(dá)式)后,GDB 調(diào)試器會(huì)以單步執(zhí)行的方式運(yùn)行程序,并且每行代碼執(zhí)行完畢后,都會(huì)檢測(cè)該目標(biāo)變量(表達(dá)式)的值是否發(fā)生改變,如果改變則程序執(zhí)行停止。

可想而知,設(shè)置軟件觀察點(diǎn)的方式,一定程度上會(huì)影響程序的執(zhí)行效率。但從另一個(gè)角度看,調(diào)試程序的目的并非是為了獲得運(yùn)行結(jié)果,而是查找導(dǎo)致程序異?;?Bug 的代碼,因此即便軟件觀察點(diǎn)會(huì)影響執(zhí)行效率,一定程度上也是可以接受的。 

硬件觀察點(diǎn):

所謂硬件觀察點(diǎn)(Hardware watchpoint),和前者最大的不同是,它在實(shí)現(xiàn)監(jiān)控機(jī)制的同時(shí)不影響程序的執(zhí)行效率。

簡(jiǎn)單的理解,系統(tǒng)會(huì)為 gdb 調(diào)試器提供少量的寄存器(例如, 32 位的 Intel x86 處理器提供有 4 個(gè)調(diào)試寄存器),每個(gè)寄存器都可以作為一個(gè)觀察點(diǎn)協(xié)助 gdb調(diào)試器完成監(jiān)控任務(wù)。

需要注意的是,基于寄存器個(gè)數(shù)的限制,如果調(diào)試環(huán)境中設(shè)立的硬件觀察點(diǎn)太多,則有些可能會(huì)失去作用,這種情況下,

gdb 調(diào)試器會(huì)發(fā)出如下警告:

Hardware watchpoint num: Could not insert watchpoint

除此之外,受到寄存器數(shù)量的限制,可能會(huì)出現(xiàn):無法使用硬件觀察點(diǎn)監(jiān)控?cái)?shù)據(jù)類型占用字節(jié)數(shù)較多的變量(表達(dá)式)。

例如,某些操作系統(tǒng)中,gdb 調(diào)試器最多只能監(jiān)控 4 個(gè)字節(jié)長(zhǎng)度的數(shù)據(jù),這意味著 C、C++ double 類型的數(shù)據(jù)是無法使用硬件觀察點(diǎn)監(jiān)測(cè)的。

這種情況下,可以考慮將其換成占用字符串少的 float 類型。

目前,大多數(shù) PowerPC 或者基于 x86 的操作系統(tǒng),都支持采用硬件觀點(diǎn)。

并且 gdb 調(diào)試器在建立觀察斷點(diǎn)時(shí),會(huì)優(yōu)先嘗試建立硬件觀察點(diǎn),只有當(dāng)前環(huán)境不支持硬件觀察點(diǎn)時(shí),才會(huì)建立軟件觀察點(diǎn)。

借助如下指令,即可強(qiáng)制 gdb 調(diào)試器只建立軟件觀察點(diǎn):

set can-use-hw-watchpoints 0

注意,在執(zhí)行此命令之前建立的硬件觀察點(diǎn),不會(huì)受此命令的影響。

awatch 命令和 rwatch 命令只能設(shè)置硬件觀察點(diǎn),如果系統(tǒng)不支持或者借助如上命令禁用,

則 GDB 調(diào)試器會(huì)打印如下信息:

Expression cannot be implemented with read/access watchpoint.

二. watch 命令,rwatch 命令,awatch 命令的區(qū)別

1.  watch 命令可以設(shè)置硬件觀察點(diǎn)方式或軟件觀察點(diǎn)的方式。而 rwatch 命令與 awatch 命令只能設(shè)置硬件觀察點(diǎn)的方式。

2. 每個(gè)命令的功能不同。

  • watch 命令,即變量(或表達(dá)式)的值改變,程序都會(huì)停下來。
  • rwatch 命令,即當(dāng)發(fā)生讀取變量行為時(shí),程序就會(huì)暫停住。
  • awatch 命令,即當(dāng)發(fā)生讀取變量或改變變量值的行為時(shí),程序就會(huì)暫停住。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux系統(tǒng)cpu飆高的排查方法

    Linux系統(tǒng)cpu飆高的排查方法

    本文介紹了如何在Linux系統(tǒng)中通過檢查CPU使用率、系統(tǒng)負(fù)載、進(jìn)程資源、系統(tǒng)調(diào)用、日志分析以及使用性能工具如perf來診斷CPU占用過高的問題,幫助用戶定位和解決問題,需要的朋友可以參考下
    2024-10-10
  • Linux實(shí)現(xiàn)用腳本添加crontab定時(shí)任務(wù)

    Linux實(shí)現(xiàn)用腳本添加crontab定時(shí)任務(wù)

    這篇文章主要介紹了Linux實(shí)現(xiàn)用腳本添加crontab定時(shí)任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹

    Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹

    這篇文章主要介紹了Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Ubuntu修改IP的三種方法

    Ubuntu修改IP的三種方法

    在 Ubuntu 系統(tǒng)中配置或修改靜態(tài) IP 地址,主要依賴于系統(tǒng)的版本以及是否使用圖形界面,本文給大家介紹了Ubuntu修改IP的三種常用方法,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • Linux系統(tǒng)重啟后MySQL數(shù)據(jù)丟失問題的解決步驟

    Linux系統(tǒng)重啟后MySQL數(shù)據(jù)丟失問題的解決步驟

    今天分享一個(gè)在Linux系統(tǒng)中經(jīng)常遇到的問題:系統(tǒng)重啟后發(fā)現(xiàn)MySQL無法啟動(dòng),而且數(shù)據(jù)似乎丟失了,這個(gè)問題可能會(huì)讓人驚慌失措,但別擔(dān)心,通常情況下這只是因?yàn)閿?shù)據(jù)盤沒有正確掛載導(dǎo)致的,現(xiàn)在我們將深入探討這個(gè)問題的原因、解決方法以及如何預(yù)防它的再次發(fā)生
    2024-09-09
  • linux下用戶程序同內(nèi)核通信詳解(netlink機(jī)制)

    linux下用戶程序同內(nèi)核通信詳解(netlink機(jī)制)

    這篇文章主要介紹了linux下用戶程序同內(nèi)核通信詳解(netlink機(jī)制),涉及netlink,內(nèi)核模塊,用戶程序的介紹等相關(guān)內(nèi)容,小編覺得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下
    2018-01-01
  • PHP程序員玩轉(zhuǎn)Linux系列 Linux和Windows安裝nginx

    PHP程序員玩轉(zhuǎn)Linux系列 Linux和Windows安裝nginx

    這篇文章主要為大家詳細(xì)介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,Linux和Windows安裝nginx教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置)

    詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置)

    這篇文章主要介紹了詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Linux中讓alias設(shè)置永久生效的方法詳解

    Linux中讓alias設(shè)置永久生效的方法詳解

    在Linux中為我們提供了一個(gè)很方便的重命名命令 alias ,它的作用為如果要執(zhí)行命令太長(zhǎng)又不符合用戶的習(xí)慣,那么我們可以為它指定一個(gè)別名。下面這篇文章主要給大家介紹了關(guān)于Linux中讓alias設(shè)置永久生效的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Linux無法為立即文檔創(chuàng)建臨時(shí)文件:設(shè)備上沒有空間的問題解決

    Linux無法為立即文檔創(chuàng)建臨時(shí)文件:設(shè)備上沒有空間的問題解決

    這篇文章主要介紹了Linux無法為立即文檔創(chuàng)建臨時(shí)文件的問題解決方案,文中通過圖文結(jié)合的形式講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

云南省| 新河县| 开阳县| 鸡泽县| 临潭县| 济源市| 德令哈市| 桂林市| 黎川县| 湘西| 镇巴县| 大理市| 晋江市| 左权县| 府谷县| 长垣县| 青海省| 华宁县| 隆化县| 蒙城县| 呼伦贝尔市| 肥城市| 东至县| 松江区| 玉树县| 图们市| 肥城市| SHOW| 乡城县| 舞阳县| 张掖市| 衡山县| 蒙城县| 蓬安县| 黄大仙区| 炎陵县| 澜沧| 潜山县| 连南| 乌鲁木齐市| 青岛市|