精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用靜態呼叫流瀏覽器進行軟件故障排除

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Hari Nagalla ? 2022-06-21 09:55 ? 次閱讀

由于具有射頻連接和微控制器內核的低成本集成片上系統設備的進步,物聯網IoT) 設備呈指數級增長。

其中許多設備主要基于 Arm? Cortex?-M 架構。隨著硬件的進步,嵌入式軟件在跟上新的連接協議、協議棧和框架方面發揮著重要作用。

然而,連接設備的激增給嵌入式軟件工程師帶來了挑戰,尤其是同時在多個設備和框架上工作的應用和維護工程師。

學習新設備軟件、框架和協議棧的工作方式可能非常耗時,并且會限制工程師快速解決問題的能力。設計文檔和內嵌源代碼注釋會有所幫助,但它們可能不容易訪問,并且可能無法提供代碼工作原理的完整畫面。

在這些情況下,工程師依靠他們的獨創性、足智多謀和使用集成開發環境 (IDE) 瀏覽源代碼。雖然這有助于理解軟件代碼流,但這是一個耗時且乏味的過程,但有更好的方法。

在本文中,我將介紹一種使用現有工具鏈實用程序來生成軟件的靜態函數調用層次結構并更快更好地理解軟件流程的新穎方法。

常見的函數調用跟蹤類型

您可以使用函數調用跟蹤來了解代碼流或識別錯誤。比較成功和失敗場景之間的程序流程(通過函數調用跟蹤)可以幫助您快速識別有問題的代碼區域以進行進一步檢查。

函數調用跟蹤補充了基于 IDE 的源代碼瀏覽,以更好地了解整個軟件實現,并且可以分為兩種常見的類別:

運行時函數調用跟蹤。這是一個侵入性過程,需要檢測源代碼。像 GNU Compiler Collection 這樣的工具鏈提供了放置函數調用的工具,這需要重建代碼以重新生成新的二進制文件,但會導致額外的代碼大小和更長的執行時間。對于缺乏內存的資源受限物聯網設備,運行時函數調用跟蹤可能不是一個可行的選擇。另外,您無法保證插樁代碼的行為與未插樁代碼的行為相同。

靜態函數調用。對于基于只讀存儲器 (ROM) 的設備,檢測不是一個可行的選擇。盡管您可以簡單地使用 Eclipse 或 Source Insight 等 IDE 瀏覽源代碼以了解軟件實現,但這是一個乏味的過程。一些 IDE(通常是昂貴的商業版本)可以派生靜態函數調用圖。這些靜態函數調用瀏覽器通常范圍有限,如果源代碼中有條件編譯,則可能無法提供整個調用流程的準確畫面。

但是,可以從反映實際二進制代碼的二進制可執行和可鏈接格式 (ELF) 文件生成靜態調用流瀏覽器。

使用靜態呼叫流瀏覽器更快地修復軟件

讓我們使用設備的 ELF 二進制圖像來生成函數調用參考詳細信息。如圖 1 所示,其想法是獲取 ELF 二進制文件并將其傳遞給各種代碼生成工具,例如 TI 的目標文件顯示 (armofd) 和反匯編程序 (armdis),以生成函數列表和調用引用數據庫。生成數據庫后,在簡單的樹形瀏覽器中顯示調用層次結構和流程,以查看函數調用引用。這些靜態調用流程圖還可以通過將運行時 ROM 代碼消息日志覆蓋在靜態函數樹的頂部來幫助調試——這種組合將提供對運行時代碼流的洞察并幫助您隔離問題。

pYYBAGKxJT6AYoODAAEz7T7ZjmQ760.png

圖 1:ELF 文件格式

二進制文件 (ELF) 分析

ELF 文件包含程序頭、節頭以及代碼和數據節。工具鏈提供了各種工具來檢查和以可讀格式顯示 ELF 二進制文件內容。在 TI,我們使用 armofd 和 armdis 等實用程序名稱來獲取 Arm 反匯編中的功能詳細信息和完整的程序編碼。

pYYBAGKxJUWAVo_jAADO_dMRhsI255.png

圖2:靜態函數分析流程

解析引擎遍歷反匯編代碼并通過帶有鏈接的分支 (BL) 和帶有鏈接和交換的分支 (BLX) 指令檢查函數調用,找到每個函數的所有調用函數,并填充函數數據庫。數據庫本身排列為 Adelson-Velsky 和 Landis 自平衡搜索樹,用于快速搜索和瀏覽。

編譯器優化可能會通過直接分支到被調用函數來扭曲某些函數調用。這些函數沒有任何堆棧分配,因此解析引擎需要足夠智能以檢測這些編譯器優化。

功能瀏覽器

稱為 Java 框架 (JFrames) 的簡單圖形用戶界面 (GUI) 界面選擇感興趣的函數以進行函數調用瀏覽。選擇一個函數會顯示兩個框架,一個用于“被調用者/被調用函數”,另一個用于“調用自”函數。這些框架顯示了具有進一步節點擴展的分層樹結構,如圖 3、4、5 和 6 所示。

瀏覽器圖形用戶界面

函數列表顯示所有可用函數,使您能夠選擇感興趣的函數以瀏覽參考文獻。

poYBAGKxJUyAYFzmAAGXx-TUVYQ613.png

圖 3:功能列表顯示

可以進一步向下導航樹以查看函數調用的可能性。

pYYBAGKxJVSAJmMpAAHSvFCubkc321.png

圖 4:被調用的函數引用

pYYBAGKxJVyAaI2HAACzLirU1Uo364.png

圖 5:從引用中調用

pYYBAGKxJWOAOttZAAIXqLawwTg260.png

圖 6:功能列表 GUI

簡化軟件

通過使用這種方法從二進制圖像中導出靜態調用流程圖,您現在可以更好地了解軟件功能流程并補充您的源代碼瀏覽,從而更深入地了解軟件實現。最重要的是,這種方法可以加快流程并使故障排除軟件更簡單。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9052

    瀏覽量

    366827
  • ROM
    ROM
    +關注

    關注

    4

    文章

    562

    瀏覽量

    85676
  • 物聯網
    +關注

    關注

    2903

    文章

    44279

    瀏覽量

    371300
收藏 人收藏

    評論

    相關推薦

    AWTK 最新動態:支持瀏覽器控件

    導讀AWTK瀏覽器控件,基于webview項目實現,將瀏覽器嵌入到AWTK應用程序中,讓開發者可以方便的集成在線幫助和調用地圖等功能。awtk-widget-web-view是基于webview實現的AWTK瀏覽器控件,使得AW
    的頭像 發表于 11-20 01:05 ?101次閱讀
    AWTK 最新動態:支持<b class='flag-5'>瀏覽器</b>控件

    寫一個Chrome瀏覽器插件

    一、什么是瀏覽器插件 瀏覽器插件是依附于瀏覽器,用來拓展網頁能力的程序。插件具有監聽瀏覽器事件、獲取和修改網頁元素、攔截網絡請求、添加快捷菜單等功能。使用
    的頭像 發表于 11-18 17:12 ?202次閱讀
    寫一個Chrome<b class='flag-5'>瀏覽器</b>插件

    跨域問題是由瀏覽器的同源策略造成的

    瀏覽器
    jf_62215197
    發布于 :2024年08月27日 07:51:42

    不只是前端,后端、產品和測試也需要了解的瀏覽器知識(二)

    過程中不斷創新,推動產品性能、用戶體驗的提升,來實現業務的增長,創造可持續的價值 。 一、 業務系統呈現給用戶的節點 當用戶訪問我們的業務系統時,瀏覽器和服務之間會進行一系列復雜的交互過程。
    的頭像 發表于 08-12 14:32 ?291次閱讀
    不只是前端,后端、產品和測試也需要了解的<b class='flag-5'>瀏覽器</b>知識(二)

    不只是前端,后端、產品和測試也需要了解的瀏覽器知識

    一、我們為什么要了解瀏覽器? 1. 對于前端開發者 1.瀏覽器是用戶體驗的第一線。我們需要了解瀏覽器的工作原理,才能有效地設計和實現用戶界面,確保良好的用戶體驗。 2.好的產品需要考慮瀏覽器
    的頭像 發表于 07-01 18:03 ?433次閱讀
    不只是前端,后端、產品和測試也需要了解的<b class='flag-5'>瀏覽器</b>知識

    如何用python調用瀏覽器的視頻?

    linda 我想用python調用瀏覽器的視頻。 我使用cv2調用視頻,但是失敗了。 URL=\"http://192.168.4.1/face_stream\" cap = cv2.VideoCapture(URL) print(cap.isOpened()) 輸出了
    發表于 06-26 08:15

    Opera瀏覽器引領潮流,全球首接端側AI大模型

    昆侖萬維旗下海外平臺Opera宣布,其旗艦瀏覽器Opera One和游戲瀏覽器Opera GX將正式接入端側AI大模型,成為全球首個實現這一突破的主流瀏覽器
    的頭像 發表于 06-03 09:18 ?679次閱讀

    微軟Edge瀏覽器新增文本編輯功能:引入Compose和數字書寫功能

    除此之外,Edge 瀏覽器也對 Windows Ink 的手寫體驗進行了優化提升。現在,用戶可在瀏覽器地址欄、文本區及“contenteditable”屬性的區域內使用數字書寫功能。
    的頭像 發表于 04-24 15:26 ?633次閱讀

    Edge瀏覽器關閉Microsoft Rewards擴展原因揭曉

    據報道,近期德國等地的Microsoft Edge瀏覽器用戶發現,安裝或啟動Microsoft Rewards擴展后,會出現“右上角擴展被Edge瀏覽器禁用以保障您的瀏覽器安全”的提醒窗口。
    的頭像 發表于 04-10 09:55 ?754次閱讀

    Mozilla Firefox瀏覽器推出Text Fragments功能,提升用戶體驗

    早在2020年,谷歌即在Chrome瀏覽器中推出了“Scroll to Text Fragments”功能,而Edge、Opera、Brave、Vivaldi以及蘋果Safari等基于Chromium的瀏覽器也已支持這一便捷特性。
    的頭像 發表于 04-08 10:21 ?594次閱讀

    鴻蒙實戰開發:【瀏覽器制作】

    使用[@ohos.systemparameter]接口和[Web組件]展示了一個瀏覽器的基本功能,展示網頁,根據頁面歷史棧前進回退等。
    的頭像 發表于 03-19 17:47 ?559次閱讀
    鴻蒙實戰開發:【<b class='flag-5'>瀏覽器</b>制作】

    如何通過瀏覽器訪問Web頁面進行固件更新的方法?

    如果電腦沒有安裝 TIA PORTAL 軟件,但是 CPU 之前激活了 Web 服務功能,可以通過電腦聯網 CPU,然后打開瀏覽器瀏覽到 CPU 的方式
    的頭像 發表于 02-25 14:51 ?1406次閱讀

    昆侖萬維旗下Opera將推出全球首款非WebKit內核的iOS瀏覽器

    近日,昆侖萬維旗下的國際知名瀏覽器品牌Opera宣布,將針對歐洲的iPhone和iPad用戶推出一款全新的AI瀏覽器——Opera One。這款瀏覽器最大的亮點在于,它基于Opera自研的引擎,而非通常的WebKit內核,這在全
    的頭像 發表于 02-06 16:40 ?5672次閱讀

    js腳本怎么在瀏覽器中運行

    瀏覽器中運行JavaScript腳本是一種常見的方式,因為JavaScript是一種在Web瀏覽器中執行的腳本語言。下面是一個詳細的,最少1500字的文章,介紹如何在瀏覽器中運行
    的頭像 發表于 11-27 16:46 ?2730次閱讀

    js文件可以直接瀏覽器運行嗎

    JS文件可以直接在瀏覽器中運行。JavaScript(簡稱JS)是一種廣泛用于瀏覽器端編程的腳本語言。作為一種解釋性語言,JS不需要編譯,而是由瀏覽器逐行解釋執行。因此,JS文件可以直接在瀏覽
    的頭像 發表于 11-27 16:45 ?3884次閱讀