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
    +关注

    关注

    135

    文章

    9588

    浏览量

    393585
  • ROM
    ROM
    +关注

    关注

    4

    文章

    579

    浏览量

    89372
  • 物联网
    +关注

    关注

    2950

    文章

    48122

    浏览量

    418285
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    通过变频静态测试结果及显示来判断故障

    通过变频静态测试 (即断电状态下,使用万用表对主电路进行测量)结合 上电后的显示与报警信息 ,是判断变频故障点的最核心、最安全的手段
    的头像 发表于 04-02 07:12 339次阅读
    通过变频<b class='flag-5'>器</b>的<b class='flag-5'>静态</b>测试结果及显示来判断<b class='flag-5'>故障</b>点

    变频故障排除及维修

    变频故障排除及维修
    发表于 03-30 16:34 0次下载

    VF2 Debian image 69 Web 浏览器失败,怎么修复?

    只需启动并运行图像 69。 $ ip 一个 显示互联网连接已建立良好。 单击以运行默认的Web浏览器时,会弹出一条错误消息。 “无法执行默认 Web 浏览器。” 输入/输出错误。 有什么提示需要修复吗?
    发表于 03-24 06:54

    无需安装!在浏览器里就能玩转ESP32/ESP8266,这个神器绝了!

    使用教程)ESP32-运行网页服务(WebServer)-实用篇介绍扔掉繁琐的桌面软件,一个浏览器搞定所有ESP开发调试需求温馨提示私信:ESPConnect即可获取
    的头像 发表于 01-10 10:01 1377次阅读
    无需安装!在<b class='flag-5'>浏览器</b>里就能玩转ESP32/ESP8266,这个神器绝了!

    变频无规律过故障问题

    变频作为现代工业驱动的核心设备,其过故障的随机性往往导致产线停机、设备损耗等连锁反应。本文基于厂商技术文档及行业案例分析,系统梳理无规律过故障
    的头像 发表于 01-02 07:40 375次阅读
    变频<b class='flag-5'>器</b>无规律过<b class='flag-5'>流</b><b class='flag-5'>故障</b>问题

    电路故障排除的方法有哪些

    牢靠,并使用万用表检查通断。 4、开路法 在并联电路中,对于电路中短路型故障,可以有选择性的断开分支电路,然后再逐级查找故障点。 5、代换法 对电路中损坏的电气元件、电路板等进行更换。
    发表于 12-26 08:35

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置?

    鸿蒙手机系统6.0用浏览器看视频,视频显示不能横屏。怎么设置? 如何掂让这个竖屏切换为横屏?
    发表于 12-20 20:10

    Microsoft Edge浏览器iOS端插件功能上线

    在最新发布的 139 版本中,Microsoft Edge 浏览器 iOS 端正式支持插件功能!与此同时,Microsoft Edge 安卓端的插件数量已跃升至近 30 款。广告拦截、双语翻译、资源下载……你的手机浏览器,也能拥有自定义的「超能力」。
    的头像 发表于 08-19 14:29 2016次阅读

    亚马逊云科技推出Amazon Nova Act SDK预览版,加速浏览器自动化Agent落地

    北京2025年8月5日 /美通社/ -- 亚马逊云科技日前宣布,推出Amazon Nova Act SDK有限预览版,可快速帮助客户将基于浏览器的Agent从原型部署至生产环境。该SDK可与亚马逊云
    的头像 发表于 08-06 08:42 965次阅读

    微软Microsoft Edge浏览器构筑立体式安全防线

    在信息爆炸的今天,钓鱼网站、诈骗广告、隐私追踪层出不穷。Microsoft Edge 浏览器为桌面与移动端用户构筑了立体式安全防线。用七大安全护盾,保护你的上网安全。
    的头像 发表于 08-04 15:39 1524次阅读

    连接气密性检测仪的故障排除与维护技巧

    连接气密性检测仪在电子、汽车、航空等多个领域发挥着关键作用,保障着连接的密封性能。为保证其正常运行和检测精度,掌握故障排除与维护技巧至关重要。(一)常见
    的头像 发表于 06-16 14:00 747次阅读
    连接<b class='flag-5'>器</b>气密性检测仪的<b class='flag-5'>故障</b><b class='flag-5'>排除</b>与维护技巧

    ATS失效请求报文问题的故障排除步骤

    本篇文章提供了解决 ATS 失效请求报文问题的故障排除步骤,主要聚焦在 CQ 接口上未显示主机发送的报文的情况。
    的头像 发表于 06-09 15:17 1921次阅读
    ATS失效请求报文问题的<b class='flag-5'>故障</b><b class='flag-5'>排除</b>步骤

    老电视如何安装浏览器

    2017年购买的夏普老电视,1.5G+8G存储,网上下的浏览器APK文件在电视内打开就弹出“解析程序包出现问题”。 未知来源选项已打开,存储空间清空到只剩下三个应用(只占用300M左右),基本可
    发表于 06-01 18:57

    虹科免拆案例 | 车辆行驶中急加速车身抖动故障排除 2 例

    车辆行驶中急加速车身抖动故障排除2例余姚东江名车专修厂叶正祥案例12017款丰田卡罗拉车行驶中急加速车身偶尔抖动故障现象故障诊断故障
    的头像 发表于 05-07 11:32 727次阅读
    虹科免拆案例 | 车辆行驶中急加速车身抖动<b class='flag-5'>故障</b><b class='flag-5'>排除</b> 2 例

    LCR测试仪故障指示灯含义解读及故障排除指南

    能提高故障处理效率,还能避免因误操作导致的二次损伤。本文将结合常见故障现象与维修经验,系统解析LCR测试仪各故障指示灯的含义及对应的故障排除
    的头像 发表于 04-30 15:16 1734次阅读
    LCR测试仪<b class='flag-5'>故障</b>指示灯含义解读及<b class='flag-5'>故障</b><b class='flag-5'>排除</b>指南