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

    文章

    9501

    浏览量

    388826
  • ROM
    ROM
    +关注

    关注

    4

    文章

    578

    浏览量

    88560
  • 物联网
    +关注

    关注

    2939

    文章

    47336

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    老电视如何安装浏览器

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

    edge浏览器识别 latex语法插件

    默认的浏览器是没有latex识别功能的,容易显示为乱码或者源码,无法正常识别。本插件需要在浏览器的扩展程序菜单下安装,能在edge下完美运行。本插件是免费插件。
    发表于 03-17 18:03 1次下载

    真空发生故障排除方法

    真空发生故障排除方法主要依赖于对故障现象的准确识别和针对性排查。以下是一些常见的真空发生故障
    的头像 发表于 02-07 10:04 4195次阅读

    模拟电路故障排除方法

    在电子工程领域,模拟电路是构成复杂电子系统的基础。随着技术的发展,模拟电路的设计和应用越来越广泛。 一、故障排除前的准备 了解电路原理 :在进行故障
    的头像 发表于 01-24 09:25 1477次阅读

    常见 CPLD 故障排除方法

    CPLD作为一种灵活的硬件解决方案,被广泛应用于各种电子系统中。然而,由于各种原因,CPLD可能会出现故障。 1. 初步检查 在开始故障排除之前,进行初步检查是非常重要的。这包括: 电
    的头像 发表于 01-23 10:01 2831次阅读

    电机控制故障排除方法

    电机控制故障排除方法 1. 故障诊断前的准备 在进行故障
    的头像 发表于 01-22 09:25 3949次阅读

    变送器故障排除指南

    变送器是工业自动化系统中的关键组件,其稳定性和准确性对于整个系统的运行至关重要。当变送器出现故障时,及时有效的故障排除是保障生产连续性和安全性的关键。 1. 初步检查 在开始故障
    的头像 发表于 01-15 09:58 1889次阅读

    E2000 Speedometer测试浏览器性能

    的东西更新到Chrome中,是经过Google进行了封闭、定制和优化的版本。 Chrome 浏览器浏览器基准测Speedometer中的得分和整体性能出色(如下图)。 (截图摘自:11款常用
    发表于 01-10 21:33

    MPU的故障排除技巧

    MPU(微处理单元)的故障排除技巧涉及多个方面,包括硬件连接、软件配置、通信协议以及系统集成等。以下是一些详细的故障排除技巧: 一、硬件连接
    的头像 发表于 01-08 09:36 1305次阅读

    三次元测量仪故障排除技巧

    排除前的准备 了解设备 :熟悉三次元测量仪的操作手册和维护指南,了解其工作原理和常见问题。 安全措施 :在进行任何故障排除工作之前,确保关闭电源,遵守安全操作规程。 工具准备 :准备必
    的头像 发表于 01-06 09:36 2067次阅读

    2024年12月浏览器市场份额报告:谷歌Chrome稳居榜首

    根据市场调查机构Statcounter最新发布的权威报告,2024年12月全球浏览器市场份额排行榜中,谷歌Chrome浏览器再次以卓越的表现稳居首位。数据显示,Chrome的市场占有率高达68.38
    的头像 发表于 01-02 14:58 3231次阅读

    讯飞星火浏览器插件全新升级

    时刻陪伴,星火插件让你的浏览器变成真正的生产力工具。
    的头像 发表于 12-25 09:48 1763次阅读

    SATA硬盘的故障排除方法

    SATA硬盘,即串行高级技术附件(Serial ATA)硬盘,是现代计算机中常用的存储设备。当SATA硬盘出现故障时,可能会影响数据的存取和计算机的正常运行。以下是一些常见的SATA硬盘故障排除方法
    的头像 发表于 12-19 14:36 4905次阅读

    Chrome浏览器优化Android性能,骁龙8至尊版表现突出

    谷歌近日对Chrome浏览器的最新版本进行了重大更新,特别针对Android设备进行了性能优化,特别是对于搭载骁龙8至尊版处理的旗舰设备而言。 自Chrome M112版本以来,An
    的头像 发表于 12-13 14:44 1726次阅读