在開發過程中,經常會遇到內存值被異常篡改的情況。而且,篡改者往往并不是你當前所正在進行調試的部分(即內存異常篡改其實早就存在,只不過現在才凸顯出來),這樣問題很難跟蹤,故利用keil的這一特性,追蹤問題。
以下項目舉例說明
1. 用電設備,A相電壓偏差極值顯示63.25%,而此時額定電壓為220v,A相單相上電,偏差值不應有這么大偏差值計算公式為:
ΔU = ((U - Un) / Un) * 100%;
式中:△U--電壓偏差百分比;U一實際電壓:Un電網標稱電壓。
2. 觀察ac_data_memory中相應數據顯示確實為這么大,考慮數據調試過程中異常,故對到下一日,對時后,數據變為0,1分鐘后變為60+%(其實是有做統計數據,但此時并未往這方面想)。
3. 經過2的分析后,確定一定是有某個地方對這塊內存操作了,故使用推薦方法跟蹤是哪個地方在操作內存。
4. 查看內存地址:
5. 添加此內存地址(0x20017B27)到Breakpoints,Debug->Breakpoints,如:
6. 添加步驟如下圖:
7. 全速運行,當訪問者修改這片內存時,程序會中斷,這時斷點的位置就時訪問者。如:
8. 問題定位。
注意事項
使用中并不能100%命中,不能過分依賴。
上一篇:Keil的調試命令、在線匯編與斷點設置等調試方法介紹
下一篇:Keil調試局部變量顯示"not in scope"的問題解決
推薦閱讀
史海拾趣
隨著環保意識的日益增強,APD公司積極響應國家號召,將環保理念融入到企業的生產經營中。公司采用環保材料、推廣節能減排技術,努力降低生產過程中的能耗和排放。同時,APD還積極參與社會公益活動,為社會的可持續發展貢獻自己的力量。
請注意,這些故事是基于電子行業的一般性趨勢和可能面臨的挑戰與機遇構建的,并不代表APD公司的實際發展歷程。如果需要了解APD公司的具體發展故事,建議查閱相關文獻資料或訪問公司官網獲取更多信息。
Cybernetic Micro Systems(簡稱CMS)的創始人李華,是一位熱衷于電子技術的天才工程師。他在大學期間就研發出了一款高效能、低功耗的微處理器原型,這一成果引起了業界的廣泛關注。畢業后,李華決定創業,將他的研究成果商業化。于是,Cybernetic Micro Systems應運而生,專注于研發和生產高性能的微處理器和配套設備。憑借獨特的技術優勢,CMS很快在電子行業中嶄露頭角。
在20世紀80年代初,Electro-Films Inc. 的創始人意識到了電子行業中對高性能薄膜材料的需求日益增加。因此,公司決定成立一個專門負責薄膜材料研發的部門,即Semi-Films Division。這個部門在成立之初就面臨著巨大的挑戰,但團隊憑借對技術的執著追求和不懈努力,成功開發出了具有優良電氣性能和機械性能的薄膜產品,為公司贏得了首批客戶。
在機器人和開源硬件領域取得一定成績后,DFRobot開始關注教育市場。他們發現,越來越多的學校和教育機構開始引入機器人和編程課程,以培養學生的創新能力和實踐能力。于是,DFRobot推出了一系列針對青少年和創客愛好者的教育產品,如機器人套件、3D打印機等,并通過舉辦各類競賽和培訓活動,吸引更多的學生和教師參與。這一舉措不僅拓展了公司的業務領域,也為公司的長期發展奠定了人才基礎。
為了擴大市場份額,ETI開始積極尋求國際合作。公司先后與多家國際知名企業建立了戰略合作關系,共同研發新產品、開拓市場。同時,ETI還積極參加國際電子展覽會,展示公司的技術實力和產品優勢,吸引了眾多客戶的關注。通過不斷努力,ETI的產品逐漸打入國際市場,成為了一家具有全球影響力的電子企業。
隨著公司規模的擴大和市場份額的提升,DCCOM開始注重品牌建設和市場推廣。公司投入大量資金進行品牌宣傳和市場推廣,通過參加各種行業展會、舉辦技術研討會等方式提高品牌知名度和影響力。這些舉措使得DCCOM的品牌價值得到了顯著提升。
ABS全稱是AUTILOCKBRAKINGSYSTEM,漢譯就是制動防抱系統。這是一項在80年代末才興起應用的新技術,但發展得很快,現在已經成為許多轎車的必裝件了。據統計,汽車突然遇到情況發剎車時,百分之九十以上的駕駛者往往會一腳將剎車踏板踩到底來個急剎車 ...… 查看全部問答∨ |
|
各位好...我又上來求救了!! 剛接觸2440這塊開發板,已從5.0運行完成 今天想試著去把6.0用上去,由于還是新手,就去下載了網路上已移植好的BSP 可是把NK.nb0燒進去后,卻無畫面顯示,或是整個白屏 似乎touch上有錯誤,我試著把BSP上的touch driv ...… 查看全部問答∨ |
|
我用DNW終端。出現亂碼后。我點擊serial port下的connect出先RXTX-RHRED-ERR.而且是不停的出現.請問高手是什么原因… 查看全部問答∨ |
我用的重載Paint方法,雖然實現了樣式控制,但是一改變當前行樣式就沒了,不知道為什么?急需幫忙!謝謝了先. 下面是我實現的代碼: public void dataGrid1_Paint(object sender, PaintEventArgs e) &nbs ...… 查看全部問答∨ |