一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用靜態(tài)呼叫流瀏覽器進(jìn)行軟件故障排除

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Hari Nagalla ? 2022-06-21 09:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于具有射頻連接和微控制器內(nèi)核的低成本集成片上系統(tǒng)設(shè)備的進(jìn)步,物聯(lián)網(wǎng)IoT) 設(shè)備呈指數(shù)級(jí)增長(zhǎng)。

其中許多設(shè)備主要基于 Arm? Cortex?-M 架構(gòu)。隨著硬件的進(jìn)步,嵌入式軟件在跟上新的連接協(xié)議、協(xié)議棧和框架方面發(fā)揮著重要作用。

然而,連接設(shè)備的激增給嵌入式軟件工程師帶來(lái)了挑戰(zhàn),尤其是同時(shí)在多個(gè)設(shè)備和框架上工作的應(yīng)用和維護(hù)工程師。

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

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

在本文中,我將介紹一種使用現(xiàn)有工具鏈實(shí)用程序來(lái)生成軟件的靜態(tài)函數(shù)調(diào)用層次結(jié)構(gòu)并更快更好地理解軟件流程的新穎方法。

常見的函數(shù)調(diào)用跟蹤類型

您可以使用函數(shù)調(diào)用跟蹤來(lái)了解代碼流或識(shí)別錯(cuò)誤。比較成功和失敗場(chǎng)景之間的程序流程(通過(guò)函數(shù)調(diào)用跟蹤)可以幫助您快速識(shí)別有問(wèn)題的代碼區(qū)域以進(jìn)行進(jìn)一步檢查。

函數(shù)調(diào)用跟蹤補(bǔ)充了基于 IDE 的源代碼瀏覽,以更好地了解整個(gè)軟件實(shí)現(xiàn),并且可以分為兩種常見的類別:

運(yùn)行時(shí)函數(shù)調(diào)用跟蹤。這是一個(gè)侵入性過(guò)程,需要檢測(cè)源代碼。像 GNU Compiler Collection 這樣的工具鏈提供了放置函數(shù)調(diào)用的工具,這需要重建代碼以重新生成新的二進(jìn)制文件,但會(huì)導(dǎo)致額外的代碼大小和更長(zhǎng)的執(zhí)行時(shí)間。對(duì)于缺乏內(nèi)存的資源受限物聯(lián)網(wǎng)設(shè)備,運(yùn)行時(shí)函數(shù)調(diào)用跟蹤可能不是一個(gè)可行的選擇。另外,您無(wú)法保證插樁代碼的行為與未插樁代碼的行為相同。

靜態(tài)函數(shù)調(diào)用。對(duì)于基于只讀存儲(chǔ)器 (ROM) 的設(shè)備,檢測(cè)不是一個(gè)可行的選擇。盡管您可以簡(jiǎn)單地使用 Eclipse 或 Source Insight 等 IDE 瀏覽源代碼以了解軟件實(shí)現(xiàn),但這是一個(gè)乏味的過(guò)程。一些 IDE(通常是昂貴的商業(yè)版本)可以派生靜態(tài)函數(shù)調(diào)用圖。這些靜態(tài)函數(shù)調(diào)用瀏覽器通常范圍有限,如果源代碼中有條件編譯,則可能無(wú)法提供整個(gè)調(diào)用流程的準(zhǔn)確畫面。

但是,可以從反映實(shí)際二進(jìn)制代碼的二進(jìn)制可執(zhí)行和可鏈接格式 (ELF) 文件生成靜態(tài)調(diào)用流瀏覽器。

使用靜態(tài)呼叫流瀏覽器更快地修復(fù)軟件

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

pYYBAGKxJT6AYoODAAEz7T7ZjmQ760.png

圖 1:ELF 文件格式

二進(jìn)制文件 (ELF) 分析

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

pYYBAGKxJUWAVo_jAADO_dMRhsI255.png

圖2:靜態(tài)函數(shù)分析流程

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

編譯器優(yōu)化可能會(huì)通過(guò)直接分支到被調(diào)用函數(shù)來(lái)扭曲某些函數(shù)調(diào)用。這些函數(shù)沒(méi)有任何堆棧分配,因此解析引擎需要足夠智能以檢測(cè)這些編譯器優(yōu)化。

功能瀏覽器

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

瀏覽器圖形用戶界面

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

poYBAGKxJUyAYFzmAAGXx-TUVYQ613.png

圖 3:功能列表顯示

可以進(jìn)一步向下導(dǎo)航樹以查看函數(shù)調(diào)用的可能性。

pYYBAGKxJVSAJmMpAAHSvFCubkc321.png

圖 4:被調(diào)用的函數(shù)引用

pYYBAGKxJVyAaI2HAACzLirU1Uo364.png

圖 5:從引用中調(diào)用

pYYBAGKxJWOAOttZAAIXqLawwTg260.png

圖 6:功能列表 GUI

簡(jiǎn)化軟件

通過(guò)使用這種方法從二進(jìn)制圖像中導(dǎo)出靜態(tài)調(diào)用流程圖,您現(xiàn)在可以更好地了解軟件功能流程并補(bǔ)充您的源代碼瀏覽,從而更深入地了解軟件實(shí)現(xiàn)。最重要的是,這種方法可以加快流程并使故障排除軟件更簡(jiǎn)單。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9353

    瀏覽量

    377576
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    578

    瀏覽量

    87361
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2931

    文章

    46251

    瀏覽量

    392599
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    老電視如何安裝瀏覽器?

    2017年購(gòu)買的夏普老電視,1.5G+8G存儲(chǔ),網(wǎng)上下的瀏覽器APK文件在電視內(nèi)打開就彈出“解析程序包出現(xiàn)問(wèn)題”。 未知來(lái)源選項(xiàng)已打開,存儲(chǔ)空間清空到只剩下三個(gè)應(yīng)用(只占用300M左右),基本可
    發(fā)表于 06-01 18:57

    edge瀏覽器識(shí)別 latex語(yǔ)法插件

    默認(rèn)的瀏覽器是沒(méi)有l(wèi)atex識(shí)別功能的,容易顯示為亂碼或者源碼,無(wú)法正常識(shí)別。本插件需要在瀏覽器的擴(kuò)展程序菜單下安裝,能在edge下完美運(yùn)行。本插件是免費(fèi)插件。
    發(fā)表于 03-17 18:03 ?1次下載

    電機(jī)控制故障排除方法

    電機(jī)控制故障排除方法 1. 故障診斷前的準(zhǔn)備 在進(jìn)行故障
    的頭像 發(fā)表于 01-22 09:25 ?1710次閱讀

    E2000 Speedometer測(cè)試瀏覽器性能

    的東西更新到Chrome中,是經(jīng)過(guò)Google進(jìn)行了封閉、定制和優(yōu)化的版本。 Chrome 瀏覽器瀏覽器基準(zhǔn)測(cè)Speedometer中的得分和整體性能出色(如下圖)。 (截圖摘自:11款常用
    發(fā)表于 01-10 21:33

    2024年12月瀏覽器市場(chǎng)份額報(bào)告:谷歌Chrome穩(wěn)居榜首

    根據(jù)市場(chǎng)調(diào)查機(jī)構(gòu)Statcounter最新發(fā)布的權(quán)威報(bào)告,2024年12月全球瀏覽器市場(chǎng)份額排行榜中,谷歌Chrome瀏覽器再次以卓越的表現(xiàn)穩(wěn)居首位。數(shù)據(jù)顯示,Chrome的市場(chǎng)占有率高達(dá)68.38
    的頭像 發(fā)表于 01-02 14:58 ?1605次閱讀

    訊飛星火瀏覽器插件全新升級(jí)

    時(shí)刻陪伴,星火插件讓你的瀏覽器變成真正的生產(chǎn)力工具。
    的頭像 發(fā)表于 12-25 09:48 ?1097次閱讀

    Chrome瀏覽器優(yōu)化Android性能,驍龍8至尊版表現(xiàn)突出

    谷歌近日對(duì)Chrome瀏覽器的最新版本進(jìn)行了重大更新,特別針對(duì)Android設(shè)備進(jìn)行了性能優(yōu)化,特別是對(duì)于搭載驍龍8至尊版處理的旗艦設(shè)備而言。 自Chrome M112版本以來(lái),An
    的頭像 發(fā)表于 12-13 14:44 ?1126次閱讀

    OpenAI醞釀創(chuàng)新:計(jì)劃開發(fā)集成聊天機(jī)器人的瀏覽器

    ,如Conde Nast、Redfin、Eventbrite和Priceline等,進(jìn)行了深入討論或達(dá)成了初步合作意向。這一舉措預(yù)示著OpenAI正積極布局,意圖在瀏覽器市場(chǎng)中占據(jù)一席之地。 若此計(jì)劃得以實(shí)施,OpenAI將直接與當(dāng)前
    的頭像 發(fā)表于 11-22 11:06 ?738次閱讀

    AWTK 最新動(dòng)態(tài):支持瀏覽器控件

    導(dǎo)讀AWTK瀏覽器控件,基于webview項(xiàng)目實(shí)現(xiàn),將瀏覽器嵌入到AWTK應(yīng)用程序中,讓開發(fā)者可以方便的集成在線幫助和調(diào)用地圖等功能。awtk-widget-web-view是基于webview實(shí)現(xiàn)的AWTK瀏覽器控件,使得AW
    的頭像 發(fā)表于 11-20 01:05 ?655次閱讀
    AWTK 最新動(dòng)態(tài):支持<b class='flag-5'>瀏覽器</b>控件

    VLAN 故障排除方法

    監(jiān)控工具或進(jìn)行Ping測(cè)試、Traceroute追蹤等方法來(lái)實(shí)現(xiàn)。 分析故障 一旦定位到故障位置,就需要對(duì)故障進(jìn)行深入分析。這可能包括檢查網(wǎng)
    的頭像 發(fā)表于 11-19 09:38 ?2016次閱讀

    寫一個(gè)Chrome瀏覽器插件

    一、什么是瀏覽器插件 瀏覽器插件是依附于瀏覽器,用來(lái)拓展網(wǎng)頁(yè)能力的程序。插件具有監(jiān)聽瀏覽器事件、獲取和修改網(wǎng)頁(yè)元素、攔截網(wǎng)絡(luò)請(qǐng)求、添加快捷菜單等功能。使用
    的頭像 發(fā)表于 11-18 17:12 ?1054次閱讀
    寫一個(gè)Chrome<b class='flag-5'>瀏覽器</b>插件

    跨域問(wèn)題是由瀏覽器的同源策略造成的

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

    不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的瀏覽器知識(shí)(二)

    過(guò)程中不斷創(chuàng)新,推動(dòng)產(chǎn)品性能、用戶體驗(yàn)的提升,來(lái)實(shí)現(xiàn)業(yè)務(wù)的增長(zhǎng),創(chuàng)造可持續(xù)的價(jià)值 。 一、 業(yè)務(wù)系統(tǒng)呈現(xiàn)給用戶的節(jié)點(diǎn) 當(dāng)用戶訪問(wèn)我們的業(yè)務(wù)系統(tǒng)時(shí),瀏覽器和服務(wù)之間會(huì)進(jìn)行一系列復(fù)雜的交互過(guò)程。
    的頭像 發(fā)表于 08-12 14:32 ?664次閱讀
    不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的<b class='flag-5'>瀏覽器</b>知識(shí)(二)

    對(duì)元件顯示模式下發(fā)現(xiàn)的驗(yàn)證錯(cuò)誤進(jìn)行故障排除

    對(duì)原理圖進(jìn)行電氣規(guī)則檢查時(shí)的驗(yàn)證錯(cuò)誤進(jìn)行故障排除,例如,“Missing pin found in component display mode”或“Extra pin found i
    的頭像 發(fā)表于 08-05 16:40 ?903次閱讀
    對(duì)元件顯示模式下發(fā)現(xiàn)的驗(yàn)證錯(cuò)誤<b class='flag-5'>進(jìn)行</b><b class='flag-5'>故障</b><b class='flag-5'>排除</b>

    谷歌Chrome瀏覽器新增三大AI功能,提升用戶體驗(yàn)

    谷歌近日宣布,在其廣受歡迎的Chrome瀏覽器中引入了三項(xiàng)前沿的AI技術(shù)功能,旨在為用戶提供更加智能、便捷的瀏覽體驗(yàn)。這些新功能由Gemini技術(shù)強(qiáng)力驅(qū)動(dòng),目前已在Chrome桌面版上線,標(biāo)志著谷歌在AI與瀏覽器融合方面的又一重
    的頭像 發(fā)表于 08-05 11:26 ?1146次閱讀