亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MIPS系統(tǒng)異?,F(xiàn)場分析工具的設(shè)計與實現(xiàn)

        2014-01-21 00:52:56夏東盛
        電子設(shè)計工程 2014年21期
        關(guān)鍵詞:堆棧死機代碼

        夏東盛

        (陜西工業(yè)職業(yè)技術(shù)學(xué)院 陜西 咸陽 712000)

        MIPS是一款RISC體系結(jié)構(gòu)的中央處理器,在嵌入式應(yīng)用的場合,和ARM一樣,MIPS核作為IP授權(quán)給各集成電路設(shè)計廠商根據(jù)自己的特定應(yīng)用生產(chǎn)專用的SOC(single on chip)解決方案[1]。

        為節(jié)省成本,很多嵌入MIPS的SOC實現(xiàn),省掉了MIPS的J-TAG支持;或者應(yīng)用MIPS核的系統(tǒng),在形成產(chǎn)品應(yīng)用到實際環(huán)境時,才出現(xiàn)死機等異常情況[2]。無論哪種情況,都使得要解決遇到的死機問題變得非常困難。

        1 異常處理機制

        任何一個CPU都要提供一個詳細的異常和中斷處理機制。一個軟件系統(tǒng),如操作系統(tǒng),就是一個時序邏輯系統(tǒng),通過時鐘,外部事件來驅(qū)動整個預(yù)先定義好的邏輯行為[3-4]。本文通過設(shè)計工具載入異常內(nèi)存數(shù)據(jù) (dump),然后進行反匯編,得到系統(tǒng)發(fā)生異常情況,定位異常所在位置及引起異常的調(diào)用堆棧,反序列出函數(shù)調(diào)用清單。

        2 工具設(shè)計與實現(xiàn)

        2.1 設(shè)計思路及流程

        產(chǎn)品軟件在工作中,引起死機的原因,一般是非法指令或指令訪問了非法地址[5]。而這類非法訪問,在支持虛擬地址的CPU體系中,都會引起系統(tǒng)的指令異常,從而進入異常服務(wù)程序[6]。該工具根據(jù)異常的堆棧數(shù)據(jù),配合整個程序空間的指令,列出引起死機問題的有效指令(引起異常的指令地址和函數(shù)調(diào)用返回的地址)的調(diào)用序列。從而避免到處懷疑代碼,加入各種觀察代碼勞心費力的抓取死機現(xiàn)象來解決問題這種低效的方式。該工具對其他的硬件原因引起的死機問題,不在分析之列。流程圖如圖1。

        圖1 流程圖Fig.1 Flow chart

        2.2 設(shè)計準備

        1)在發(fā)布系統(tǒng)程序前,確保系統(tǒng)中異常服務(wù)程序,處于活動狀態(tài);異常服務(wù)程序中,對于數(shù)據(jù)和指令引起的異常,要輸出(dump)引起異常任務(wù)當時的堆棧數(shù)據(jù)。

        2)發(fā)布系統(tǒng)程序時,保留源碼和系統(tǒng)對應(yīng)的反匯編代碼備用。

        3)在系統(tǒng)運行過程中,保持對系統(tǒng)串口的接收就緒狀態(tài),一旦系統(tǒng)發(fā)生異常引起死機,將接收的數(shù)據(jù)保存到文件(即所指的serial.log文件)。

        2.3 反匯編解析

        圖2 運行界面Fig.2 Operating interface

        1)復(fù)制腳本文件 disassemble.sh到 ygwinsrcgnutoolsmipsisa32-elfin目錄下。

        2)打開Cygwin,在命令行運行disassemble.sh OBERON.elf,生成OBERON.elf.lst文件。如圖2。

        3)運行MStarAnaW.exe軟件,在反匯編文件欄添加OBERON.elf.list文件,在輸出記錄欄添加serial.log文件,如圖3。

        4)添加serial.log文件之后系統(tǒng)自動切換到檢查堆棧信息界面,如圖4。

        2.4 堆棧分析

        1)一般情況下,本工具自動完成結(jié)果,在屏幕上依次顯示堆棧調(diào)用情況,前面的是被調(diào)用函數(shù),后面的是調(diào)用者。

        圖3 添加界面Fig.3 Add interface

        圖4 堆棧信息界面Fig.4 The stack information interface

        2)在分析過程中,可能會需要使用者輸入兩個參數(shù),這時需要使用這根據(jù)輸出結(jié)果分析匯編代碼,輸入正確的值這兩個值一個是匯編函數(shù)的返回地址所在的對邊偏移,一個是本函數(shù)的堆棧使用情況。返回地址要查看兩個相關(guān)的匯編代碼,“jr ra”即為函數(shù)返回指令,與之相關(guān)的另一條指令為“sw ra, xx(sp)”,“l(fā)w ra, xx(sp)”,前者是將 ra 寄存器的值保存到以sp為基址偏移為xx的堆棧中,后者從以sp為基址偏移xx的堆棧中取得數(shù)據(jù)載入ra寄存器。因此只需要從其中任意一個指令都能得到返回地址在堆棧中的偏移當一個函數(shù)中有兩個以上的單向改變sp內(nèi)容的指令出現(xiàn)以后,本工具就無法推算出正確的函數(shù)占用堆棧情況了,此時需要使用者閱讀匯編代碼,輸入正確的值。一般這類指令為

        “addi sp,sp,-xx”,“addiu sp,sp,-xx”,“addiu sp,reg,mm”,只要sp跟在指令后面,那就有可能是改變了堆?;羔?。然后根據(jù)從函數(shù)開始到調(diào)用(屏幕上)上一個函數(shù)出現(xiàn)的位置,將其偏移值累加,相應(yīng)的,“sw ra,xx(sp)”后面出現(xiàn)的 sp 變化值也要累加到返回值偏移上去。

        3)就圖3而言,在堆棧指針偏移欄中輸入40,在返回地址基于堆棧指針的偏移欄中輸入32,然后確定,就會自動跳轉(zhuǎn)到如圖5。

        4)同樣在相應(yīng)的選項中輸入對應(yīng)的指針偏移量之后,確定。得到如圖6。

        圖5 運行結(jié)果Fig.5 Operating results

        圖6 結(jié)果Fig.6 Results

        5)堆棧分析完成,死機的情況是由于圖5中的5個函數(shù)(最后倆個去除)引起。

        6)可拷貝函數(shù)之前的地址(如:_Zapper_Signal函數(shù)的地址是80041e98)到OBERON.elf.lst文件查找對應(yīng)的匯編運行代碼,如圖7。

        7)依以上步驟查看導(dǎo)致錯誤的匯編代碼或者在工程文件中對應(yīng)函數(shù)加入調(diào)試,查看代碼中存在那些錯誤。

        3 結(jié)束語

        正確快速查找出現(xiàn)的異常并能快速分析解決軟件健壯性和穩(wěn)定性的關(guān)鍵問題,該工具在滿足以上條件的同時,實現(xiàn)如MIPS指令模擬器、MIPS斷點調(diào)試等功能的擴展,具有比較強的推廣性。

        圖7 匯編代碼圖Fig.7 Assembly code chart

        [1]武曉島,范兵,于鵬,等.MIPS中國專利技術(shù)解析[J].中國集成電路,2010(1):88-93.WU Xiao-dao,F(xiàn)AN Bing,YU Peng,et al.Tecknology analysis on MIPS China patents[J].China Integrated Circuit,2010(1):88-93.

        [2]吳怡.MIPS體系結(jié)構(gòu)透視[J].教材建設(shè),2008(19):147.WU Yi.Research architecture of MIPS in another perspective[J].Computer Education,2008(19):147.

        [3]趙雪峰,姜淑娟.一個異常處理統(tǒng)計工具的設(shè)計與實現(xiàn)[J].中國科技信息,2008(21):180-181.ZHAO Xue-feng,JIANG Shu-juan.A design of statistical tools of exception handling and implementation[J].China Technology Information,2008(21):180-181.

        [4]裘宗燕.異常處理及其實現(xiàn)[J].程序員,2002(9):55-58.QIU Zong-yan.exception handling and its realization[J].Programmer,2002(9):55-58.

        [5]李莉,路而紅.ARM異常處理機制[J].燕山大學(xué)學(xué)報,2006,30(4):313-316.LI Li,LU Er-hong.Mechanism of handing ARM processor exceptions[J].Journal of Yanshan University,2006,4(30):313-316.

        [6]白國政,李庚,陳明.嵌入式軟件異常處理機制的研究[J].微機發(fā)展,2005,10(15):88-89,106.BAI Guo-zheng,LI Geng,CHEN Ming.Research on technology for exception processing in embedded software[J].Microcomputer Development,2005,10(15):88-89,106.

        猜你喜歡
        堆棧死機代碼
        電腦死機時在干什么
        電腦報(2022年49期)2023-01-01 03:42:10
        提醒
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計*
        基于堆棧自編碼降維的武器裝備體系效能預(yù)測
        臉死機了
        一種用于分析MCS-51目標碼堆棧深度的方法
        大桥未久亚洲无av码在线| 精品视频手机在线免费观看| 国内精品亚洲成av人片| 猫咪av成人永久网站在线观看| 成人免费网站视频www| 国产成人精品免费视频大全| 国产大屁股熟女流白浆一区二区| 欧美亚洲一区二区三区| 日日噜噜噜夜夜爽爽狠狠| 欧美日韩国产另类在线观看| 日韩人妻一区二区中文字幕| 亚洲av色香蕉一区二区三区| 亚洲av无码av制服丝袜在线| 国产美女裸身网站免费观看视频| 亚洲av狠狠爱一区二区三区| 好吊妞视频这里有精品| 大肉大捧一进一出好爽视频mba| 亚洲成av人在线观看无堂无码| av在线资源一区二区| 深夜放纵内射少妇| 男女18禁啪啪无遮挡| 国产粉嫩高清| 日韩av水蜜桃一区二区三区 | 摸进她的内裤里疯狂揉她动图视频| 精品国产高清a毛片无毒不卡| 水蜜桃在线视频在线观看| 一本色道久久88—综合亚洲精品 | 国产影片一区二区三区| 国自产精品手机在线观看视频| 亚洲综合色一区二区三区另类| 免费av在线视频播放| 日韩欧美中文字幕公布| 国产又黄又大又粗的视频| 久久精品国产屋| 久久精品亚洲94久久精品| 熟妇人妻久久中文字幕| 欧美日韩亚洲国产千人斩| 麻豆av毛片在线观看| 国产亚洲成av人片在线观看| 99久久久无码国产aaa精品| 韩国美女主播国产三级|