TimeMachine -- 新一代的調試技術

2020-12-17 電子產品世界

嚴永紅  上海祥佑數碼科技有限公司 研發部經理

  隨著技術的發展,嵌入式系統已變得越來越複雜。這同時體現在軟硬體設計兩個方面。在硬體上,一方面是時鐘頻率越來越高,另一方面是在同一系統中往往集成了多個CPU內核,有同構的,也有異構的。在軟體上,各種複雜的作業系統也都被用到嵌入式系統中,而且這些複雜的作業系統往往兼具了傳統實時作業系統和桌面系統的功能和優點。所有這一切,都使嵌入式系統的性能大大提高,但同時也對開發過程提出了嚴峻的挑戰。特別是在調試和測試方面。

  在這樣一個複雜的系統中,一個錯誤的出現往往牽扯到很多方面。一個簡單的經常出現的錯誤可以在調試器中很容易被找到並修正,只要能順序地跟蹤代碼。而一個難以重現的錯誤往往佔用我們大量時間去尋找產生錯誤的源頭。這樣的錯誤往往在用調試器調試時不會出現。我們只能一遍又一遍地在代碼中加入列印語句來收集錯誤出現的一些蛛絲馬跡,然後再猜測錯誤的源頭。這種方法往往只能達到事倍功半的效果,而且隨著軟硬體複雜程度的增加,消耗在這一過程中的實踐會成倍的增加。

  今天,隨著調試除錯技術的發展,新的技術不斷的引入,我們已經能夠追蹤和控制這種複雜的錯誤。採用新技術的調試器可以讓系統在發生錯誤時停下,並從錯誤現象產生之處往回單步或直接運行到錯誤的源頭。這樣不但能使你抓住這個錯誤,而且能重現整個產生錯誤的各個步驟,讓一個複雜的錯誤變得簡單、容易重現。例如Green Hills研製的新技術Time Machine。它集成了實時跟蹤、反向追蹤以及多核技術。

  實時跟蹤利用CPU內部的一個埠,把CPU內部的動態信息傳送出來。這些信息包括執行過的指令,這些指令執行時所訪問的內存空間地址,以及所有這些動作的時間戳。所有這些信息都是在CPU全速運行時送出來的,所以這是的信息都是和正常使用的情況相一致的。現在很多CPU都帶有這樣的功能,ARM7, ARM9, ARM11, POWERPC-4XX, POWERPC-54XX, ColdFire等等。

  為了接收這些信息,需要一個設備,叫Trace Probe。現在的Trace Probe可以存儲高達千兆字節的信息。在Trace分析軟體的幫助下,我們可以通過這些大量的數據重複系統的功能,重構時間序列,定位錯誤和無效代碼。在這之前,一般是採用硬體邏輯分析儀來做這樣的工作,但邏輯分析儀只能採集到外部的地址和數據總線,並不能看到CPU內部的信息,例如緩存的動作。

  

  Green Hills提供的高級的跟蹤分析工具還能在更高的層次上分析整個系統。例如在RTOS的層面上,Trace工具可以幫助用戶理解作業系統中各種事件和資源之間複雜的交互。例如,提供任務切換和中斷延時的精確測量,還能讓用戶檢查和分析在系統範圍內,事件和任務之間交互。各種事件如任務切換,異常,中斷,系統調用,用戶事件,人物狀態改變等等都可以用圖示化的方式在時間軸上圖示所示。

  

  反向追蹤是建立在Trace基礎上的一項新技術。當Trace分析工具掌握了整個指令執行的順序和當時的內存映像,這些信息可以用來作為調試的基礎,而不用再真正連接到目標板上。調試器把原始的指令翻譯為原始碼行,把內存的值轉換為變量,這樣可以使你很容易看到每一個時間點上程序的狀態,當然你也可以讓產生錯誤的過程重新按原來的路徑走一遍。這時候,調試器不但可以讓你向前單步更新系統狀態,也可以反向復原系統,你甚至可以設置斷點和觀察點,讓系統狀態復原到斷點或觀察點為止。

  反向復原使你可以更快地找到發生錯誤的源頭,而不僅僅知道發生錯誤現象的地方。你可以檢視各種可能的解決方法。因為你有完整的Trace數據,你可以很容易地向前或向後調整程序的狀態。這是你很快找到那些用傳統調試技術很難找到的錯誤,因為傳統調試技術要求你在調試器中重現錯誤,這是你必須重啟系統,並經過一番複雜的操作才能達到錯誤點。這還算是好運的。有些錯誤並不是經常出現,而是和一些偶然的因素相關,這樣你在重現錯誤這個階段就要耗費很多的時間。而且在調試過程中,一旦你不小心錯過了這個錯誤,一切都得重新開始。這樣的噩夢,每個工程師應該都碰到過。但是有了TimeMachine的追蹤和反向追蹤技術,一切變得不一樣了。你只要追蹤到一次錯誤,你就可以充分利用追蹤到的數據,重複跟蹤指導錯誤找到並修正為止。

  一個複雜的系統往往會採用多核技術,可能是跑在同樣主頻上的同種CPU,也可能是跑在不同主頻上的不同的CPU。不論是何種多核架構,CPU之間的同步和通信都對於軟體設計來講是一個考驗。如果軟體存在瑕疵,一個細微的時延就可能帶來巨大的結果差異。用傳統的調試技術來跟蹤這樣的問題是極其困難的,因為重現這樣的問題基本上是不可能的。但是,如果你可以把每個處理器上的實時數據都記錄下來的話,你就可以按順序恢復每一個處理器的狀態並找出處理器之間的交互關係。

  

  Green Hills的TimeMachine套件集成了一系列的調試和分析工具,用來幫助工程師發現錯誤、進行測試和優化程序。以可視化的方法呈現整個程序在時間上的各種行為。這些工具包括TimeMachine Debugger、PathAnalyzer和Multi-Profile等等。PathAnalyzer以可視化的方法呈現了程序的堆棧在時間上的變化,這樣可以使你很容易看到程序在那個地方花了較多的時間。而且,你還可以很快看出程序各部分之間的交互關係。

  PathAnalyzer

  TimeMachine的基礎是要有記錄下來的大量實時跟蹤數據,但還有很大一部分的CPU是沒有硬體跟蹤功能的。怎麼辦?對於這樣的CPU,Green Hills給出了兩種解決辦法,一種叫In-Memory,一種叫TraceEdge。若要使用這兩種辦法,你需要使用Green Hills的編譯工具。一些額外的代碼會被插入到程序中,而這些額外代碼所產生的信息可以被Time Machine用來重構整個程序的流程。In-Memory TimeMachine 和TraceEdge 與傳統的代碼植入方法相比有明顯的優勢。第一,代碼植入是在Link的時候而不是在編譯時,這樣使用起來方便而且省時。第二,TraceEdge 一般僅僅插入一條指令,而In-Memory TimeMachine也只插入一條指令去調用一個很小的庫函數。這樣在空間和時間上都不會對目標程序造成大的影響。第三,使用Green Hills先進的Link技術,可以使需要植入代碼的程序塊的數目最小化,而不是每一個程序塊都要植入。因為有些程序塊會有相關性。In-Memory TimeMachine 要使用一塊目標系統的內存在存放數據,當數據填滿後就被JTAG Probe或Debug Agent 送回PC。而TraceEdge不佔用目標系統內存。而且有三種可選的配置,TraceEdge Bus, TraceEdge-PCI, TraceEdge-PMC。用TraceEdge Bus 植入的程序會向系統的一段無緩存的地址空間寫信息,這一段地址要有一個獨立的CS。Trace Probe會監視這一段地址空間,並把抓到的信息存到保存起來。而TraceEdge-PCI 和TraceEdge-PMC 分別需要一塊 TraceEdge PCI卡和PMC卡插到目標系統的PCI或PMC槽中,而Trace Probe直接和卡相連。

linux作業系統文章專題:linux作業系統詳解(linux不再難懂)

相關焦點

  • 『柴火新一代信息技術』硬體開發入門首期培訓班,現在開始招生啦
    『柴火新一代信息技術賦能培訓』「 硬體開發入門 」首期班招生簡章
  • 全面氣動——BMC Timemachine R01詳細體驗
    BMC聲稱他們的新產品的舒適性以及輕量化將令人印象深刻,並且全新的設計理念也會將氣動車的實際使用性能提升到一個新的高度。但情況是否果真如此?若以我兩天170公裡的試乘來評價這一款車,實在顯得不夠全面,但是憑藉筆者對這款車子的第一印象,不難看出,BMC的確交出了一份相當令人滿意的答卷。
  • ...Chinese documentary "Our Time Machine" resonates with crew...
    If you can travel back in time using a time machine, whom would you like to travel with? Ma Liang chose his father who was diagnosed with Alzheimer's disease.
  • 新一代信息技術產業集聚成勢
    引入先進生產線,忙於調試生產設備。在長春新區中國長城(吉林)信創製造基地,室外雖然仍是白雪覆蓋,而室內已是繁忙一片。「待所有設備調試完成後,這裡將具備年產30萬臺以上整機規模。」長春嘉誠信息是長春新區的另一家信息技術核心企業,2018年、2019年連續兩年被公安部評為「全國網絡安全等級保護測評機構先進單位」,拳頭產品「公益訴訟大數據應用平臺」,以網際網路+、大數據和人工智慧、雲計算等技術破解許多業務難題,已從初創時僅經營計算機散件,發展成為如今國內領先的政務軟體信息化服務商,為客戶提供包括軟體開發、網絡安全和信息技術服務等,貫穿客戶信息系統全生命周期的專業化服務
  • 雲計算核心技術Docker教程:Docker Machine 使用 - TechWeb
    Linux 安裝命令:$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&curl -L $base/docker-machine-$(uname -s)-$(uname -m)
  • Chrome Devtools 高級調試指南(新)
    後續會單獨出一篇,以下是目錄:常用命令和調試黑盒腳本:Blackbox Script控制臺內置指令遠程調試WebView1、Chrome Devtools 的用處前端開發:開發預覽、遠程調試、性能調優、bug跟蹤、斷點調試等後端開發:網絡抓包、開發調試Response測試:服務端API數據是否正確
  • 地鐵BAS調試中的技術管理思路淺析
    接口調試受制於風水電設備的安裝調試情況,調試具有難度較大,接口眾多,工作較為繁瑣,驗證功能較為困難等特點,因此在BAS接口調試中,管理難度大,一方面需要技術支持,進而進行高效的接口管理;另一方面,要加強與風水電施工單位的密切配合,確保安裝調試的效率和質量,需要有技術經驗豐富的施工班組,制定詳細合理的調試計劃,有序壓茬推進調試工作,保證調試質量,為後期的聯調聯試打下基礎。
  • machine、machinery、mechanic這三個詞長得這麼像,怎麼辨別?
    一、 machinemachine在牛津詞典中的解釋是:「a piece of equipment with moving parts that is designed to do a particular job.
  • 「新一代信息技術高端科學論壇」在廣東舉行
    論壇現場(央廣網發 主辦方供圖)  央廣網珠海10月25日消息(記者鄭澍 通訊員科記協)「新一代信息技術高端科學論壇」10月24日在珠海舉行,為期兩天。  「新一代信息技術高端科學論壇」是2020年嶺南科學論壇系列活動之一,由廣東省科技協會和廣東省科技廳共同主辦。廣東省計算機學會、廣東科技新聞工作者協會承辦。
  • 技術詞條 | 機器學習(Machine Learning)篇
    An overview of machine learning. In Machine learning (pp. 3-23). Springer Berlin Heidelberg.Goldberg, D. E., & Holland, J. H. (1988). Genetic algorithms and machine learning.
  • Time Machine的星際穿越
    甚至可以快速的還原整個系統,你還可以快速的將一臺新的Mac電腦瞬間變成你習慣的桌面環境,所有的一切都跟之前的電腦完全一模一樣!  由於Time Machine本身就是內置於Mac OS X系統中的,得益於蘋果的特殊優化,它可以完全靜默於後臺備份,不會干擾其他程序的正常運行,備份的過程中你甚至完全感覺不到它的存在。
  • X-ray Imaging through Machine LearningI 本周物理學講座
    new frontier of machine learning.space-time? crystal as a general framework for studying intertwined space-time periodic structures, which include both the static crystal and the Floquet lattice as special cases.
  • 習水縣:新一代天氣雷達即將試運行
    本報訊 (記者 陳穎 通訊員 王燁)2018年,由中國氣象局和省政府投資3800餘萬元,在習水縣海拔1690米的馬臨街道辦事處沔山村臥虎嘴山頂上建設新一代天氣雷達系統,目前整個項目已經完成95%以上。新一代天氣雷達系統是採用目前國內最為先進的雙偏振都卜勒天氣雷達,能夠對半徑200公裡的區域進行較準確的降水量分布測量。新一代天氣雷達系統投用以後,將為習水以及周邊川、渝接壤地區的縣市提供實時、準確的氣象數據,大大增強對暴雨、冰雹、大風等災害性天氣的監測預警能力,為防災減災提供有力的支撐。
  • Chrome 調試工具奇淫技 - OSCHINA - 中文開源技術交流社區
    所以對前端er來說,熟練掌握瀏覽器調試工具是性能優化的必備條件。首先我們得知道如何打開Chrome調試工具。你可以滑鼠右鍵,選擇審查元素(Inspect Element)或者使用快捷鍵(⌥⌘I)。Snippets調試sass,通過工具生成sourcemap以及Chrome的一點設置,你可以調試sass,coffeescript,並且實時保存。
  • 日本借物聯網技術探索新一代便利店
    能根據需要隨時更換內容的電子價籤、缺貨時能及時通知補貨的業務輔助系統、通過圖像處理技術識別商品並刷臉結帳的自助收銀臺……日本松下公司和全家便利店2日在橫濱市推出一家匯集物聯網技術等多種技術的驗證實驗店鋪,探索新一代便利店的具體方式。
  • Linux 系統內核的調試
    所以對 Linux 內核進行調試一直是個令內核程式設計師感到棘手的問題,調試工作的艱苦性是內核級的開發區別於用戶級開發的一個顯著特點。   儘管缺乏一種內置的調試內核的有效方法,但是 Linux 系統在內核發展的過程中也逐漸形成了一些監視內核代碼和錯誤跟蹤的技術。同時,許多的補丁程序應運而生,它們為標準內核附加了內核調試的支持。
  • 新一代聽筒技術:屏幕發聲技術原理介紹
    打開APP 新一代聽筒技術:屏幕發聲技術原理介紹 電子發燒友網 發表於 2019-01-01 11:14:00 隨著手機全面屏的普及,原有的16:9的屏幕逐步被18:9替代,各廠商爭相擴大手機的屏佔比,部分手機已然將屏佔比達到了90%以上,但是傳統器件的擺放日漸困難,尤其是傳統受話器的位置,逐步被隱藏甚至取消;目前傳統的聽筒還是以動圈式Receiver為主,屏幕聽筒位置開孔的問題一直未能解決,所以我們今天來聊一聊一款新型的替代傳統聽筒的技術-屏幕發聲技術。
  • 攜手提升廣州新一代信息技術產業發展水平
    工業和信息化部信息技術發展司副司長楊宇燕致辭。  張碩輔對合作協議籤署和麒麟V10發布表示祝賀。他說,廣州深入學習貫徹習近平總書記重要講話和重要指示批示精神,聚焦新基建、新技術、新應用,大力發展5G、雲計算、區塊鏈等新一代信息技術,著力打造人工智慧與數字經濟發展高地。中國電子在穗業務布局,契合廣州產業發展方向。
  • 展示策劃師知識體系專欄之一:怎樣理解新一代信息技術?
    那麼,如何準確理解新一代信息技術呢?我們先來看一下全球市值前十名企業的變遷歷程,可以看出,新一代信息技術企業逐漸後來居上,佔據了大半壁江山。而且,這一發展勢頭仍遠未結束,IT巨頭們仍在各種細分領域開疆拓土,擠佔著傳統行業企業的份額。那麼,什麼是新一代信息技術呢?
  • 馬鋼自主研發的新一代加熱爐在線煤氣監控系統成功投用
    馬鋼自主研發的新一代加熱爐在線煤氣監控系統成功投用 2020-06-17 08:55 來源:澎湃新聞·澎湃號·政務