1. gzyueqian
      13352868059

      嵌入式開發(fā):使用映射文件查找緩沖區(qū)溢出問題

      更新時(shí)間: 2022-01-25 14:09:29來源: 粵嵌教育瀏覽量:9910

        緩沖區(qū)溢出是對(duì)嵌入式軟件造成嚴(yán)重破壞的錯(cuò)誤之一。該系統(tǒng)似乎運(yùn)行良好,然后突然,奇怪的事情開始發(fā)生!一直表現(xiàn)的變量突然以意想不到的值結(jié)束。嵌入式開發(fā)人員經(jīng)常會(huì)被難住并花費(fèi)數(shù)天時(shí)間試圖弄清楚發(fā)生了什么,從而浪費(fèi)了寶貴的時(shí)間和金錢。在今天的帖子中,我將向你展示如何快速有效地識(shí)別緩沖區(qū)溢出并修復(fù)它們。


        緩沖區(qū)溢出癥狀


        緩沖區(qū)溢出通常會(huì)給系統(tǒng)帶來一些開發(fā)人員可以輕松識(shí)別的癥狀。這些癥狀通常可以在似乎與發(fā)生溢出的位置無關(guān)的變量中找到,例如:


        初始化值不正確

        沒有任何代碼作用于變量的變化值

        超出范圍的值應(yīng)該是不可能的



        使用映射文件查找緩沖區(qū)溢出


        在嵌入式開發(fā)中,緩沖區(qū)溢出的問題是它們很難找到,誰知道是什么溢出到變量?jī)?nèi)存空間并破壞了它?如果你懷疑自己有緩沖區(qū)溢出,可以使用一個(gè)簡(jiǎn)單的過程來查找或排除溢出。


        識(shí)別似乎已損壞的變量。


        編譯你的代碼。


        導(dǎo)航到你編譯的項(xiàng)目文件夾并找到你的地圖文件。


        在映射文件中搜索損壞的變量。


        找到后,查看損壞的變量旁邊的變量。這很可能是罪魁禍?zhǔn)祝?/span>


        在你的代碼中搜索罪魁禍?zhǔn)壮跏蓟?/span>


        增加緩沖區(qū)大小,看看這是否確實(shí)是原因。


        我有一個(gè)行為不正確的變量。所以,我按照上面的步驟,在我的地圖文件中發(fā)現(xiàn)了以下內(nèi)容:



        我的 ScrState 變量在內(nèi)存中的前面有一個(gè) bytesToSend 數(shù)組! 在檢查了這個(gè)數(shù)組和使用它的代碼后,我發(fā)現(xiàn)我將緩沖區(qū)覆蓋了 1 個(gè)字節(jié),值為 0! 足以將我的 ScrState = True 變量更改為 False。


        結(jié)論


        如果查找緩沖區(qū)溢出的過程很隨意,則很難找到緩沖區(qū)溢出。緩沖區(qū)溢出通常是可重復(fù)的,這允許嵌入式開發(fā)人員追蹤它們導(dǎo)致的損壞。快速搜索映射文件并識(shí)別前面的變量可以幫助開發(fā)人員快速找到罪魁禍?zhǔn)撞⑿迯?fù)其溢出。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲一级二级视频在线观看 | 特级婬片女子高清视频国产 | 色综合天天综合高清网国产在线 | 黑人巨大亚州宗合在线 | 亚洲人成电影在线观看天堂色 | 免费99精品国产自在48 |