0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

静态分析揭示了传统软件中的潜在缺陷

星星科技指导员 ? 来源:嵌入式 ? 作者:PAUL ANDERSON ? 2022-11-10 16:31 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

静态分析工具可以帮助找到并发性和其他缺陷,以减少遗留的延迟。

从基于软件的旧系统迁移到新技术时,能够重用尽可能多的代码非常重要。即使这些代码已经过彻底的测试,并且在旧系统中的实践中被证明是可靠的,它仍然可能包含潜在的错误。这些错误可能从未在旧系统中触发,因为该系统非常特定的属性,例如用于编译代码的工具链、处理器体系结构或主机操作系统。当移植到这些属性不同的新系统时,潜在缺陷可能表现为有害错误。但好消息是,先进的静态分析工具可以清除这些潜在的缺陷,以帮助应对挑战。

更新系统,揭示编码缺陷

迁移遗留系统最重要的动机之一是利用自原始系统首次部署以来硬件技术的进步。由于采用了更新更快的处理器,最常见的好处可能是性能提高。从代码的角度来看,这也是一个最重要的变化。新处理器可以具有不同的位宽或字节序,并且可用内核的数量可以不同。在从旧平台移植到下一个平台的代码期间,大部分重新编码工作将用于使代码适应这些差异。

编译器、工具链和潜在错误

与实现新处理器相比,还有许多其他不太明显的差异,这些细微差别很容易被忽视。以用于编译代码的工具链为例。从表面上看,这应该不会有太大区别。毕竟,如果代码是编写为符合 ANSI C 标准,并且如果编译器声称支持 ANSI C,那么当由任一编译器编译时,代码肯定会具有相同的语义吗?不幸的是不是。C 和 C++ 标准充斥着“编译器依赖”的子句,这意味着该标准并不确切规定如何编译某些结构,选择取决于编译器编写者。其中许多对于程序员来说是显而易见和众所周知的,例如计算操作数的顺序,但其他的则非常微妙。潜在错误在旧系统上可能是无害的,因为编译器选择以特定方式编译它,但在新系统上是危险的,因为新编译器会做出不同的选择。

当然,编译器也是程序,它们本身并非没有缺陷。最近一项针对 C 编译器的研究发现,他们测试的每个编译器都有代码生成缺陷[1]。易失性关键字的处理在嵌入式安全关键型软件中至关重要,因为它经常用于读取传感器数据,特别容易出现编译器错误,从而导致传感器值的更改被静默忽略。程序的正确运行甚至可能依赖于这些缺陷。

另一个危险区域:标准库

另一个可能导致潜在缺陷变得危险的细微软件迁移差异涉及与操作系统接口的标准库。人们可能希望这样的库在各个平台上保持一致,但这种情况很少见。最显着的区别是在错误处理方面。新平台可能具有与旧平台完全不同的故障模式,可能需要更改代码才能处理这些差异。更糟糕的是,根据最近的一项研究,错误案例的记录似乎非常糟糕[2]。

静态分析胜出,补充传统测试

显然,任何遗留迁移项目都必须包括大量时间来测试软件的新版本。但是,测试结果仅与测试输入一样好。如果测试用例未能执行发生错误的路径,则该缺陷可能无法检测到。生成新的测试用例也很昂贵。因此,清除这些潜在缺陷的明智策略是使用高级静态分析工具作为遗留转换工作的一部分。此类工具能够发现本文所述的缺陷,包括那些依赖于平台微妙之处的缺陷。他们特别擅长发现并发缺陷,例如使用传统测试方法极难发现的数据争用。他们还擅长查找代码实例,这些代码虽然不是绝对错误的,但与错误高度相关,或者在移植到不同环境时特别危险。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19953

    浏览量

    237469
  • 编译器
    +关注

    关注

    1

    文章

    1663

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析(Perforce QAC)实现高效合规。
    的头像 发表于 08-07 17:33 ?267次阅读
    汽车<b class='flag-5'>软件</b>团队必看:基于<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>工具Perforce QAC的ISO 26262合规实践

    协议分析仪能检测蓝牙设备的哪些潜在问题?

    协议分析仪能够检测蓝牙设备从物理层到应用层的全链路潜在问题,具体涵盖以下方面:一、物理层(PHY Layer)问题 信号衰减与遮挡 RSSI(接收信号强度)异常:识别设备距离过远、金属障碍物阻挡或
    发表于 07-21 14:27

    CMP工艺缺陷类型

    CMP是半导体制造关键的平坦化工艺,它通过机械磨削和化学腐蚀相结合的方式,去除材料以实现平坦化。然而,由于其复杂性,CMP工艺可能会出现多种缺陷。这些缺陷通常可以分为机械、化学和表
    的头像 发表于 07-18 15:14 ?1230次阅读

    揭秘ABAQUS强大到超乎想象的分析功能有哪些?

    和研究人员解决复杂工程问题的得力助手。本文将深入探讨ABAQUS那些强大到超乎想象的分析功能,揭示它如何在不同领域发挥关键作用。 一、静态与动态分析的双剑合璧 ABAQUS的核心功能之
    的头像 发表于 05-21 16:15 ?277次阅读
    揭秘ABAQUS强大到超乎想象的<b class='flag-5'>分析</b>功能有哪些?

    高光谱相机在生物医学的应用:病理分析、智慧中医与成分分析

    企业,深圳市达瑞和科技有限公司依托自主研发的高光谱相机与光谱云平台,在生物医学领域实现多项突破性应用。本文聚焦其在病理分析、病毒检测及成分分析
    的头像 发表于 04-24 11:25 ?283次阅读

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描代码以发现潜在问题。IntelliJ IDEA
    的头像 发表于 03-13 10:34 ?528次阅读
    【JVM开发者必看】IntelliJ IDEA代码<b class='flag-5'>分析</b>实践指南:实时纠错、冗余检测、自动修复等

    从“被动检测”到“主动预防”,上海控安TestGrid推出动态缺陷检测功能模块

    在嵌入式系统与安全关键领域,如航空航天、轨道交通、自动驾驶、医疗设备,代码缺陷可能引发灾难性后果。传统静态分析仅能通过源代码语法、结构和编码规范发现问题,而复杂的系统级交互、多线程并发
    的头像 发表于 03-04 14:43 ?484次阅读

    集成电路设计静态时序分析介绍

    本文介绍集成电路设计静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析
    的头像 发表于 02-19 09:46 ?720次阅读

    ADC的静态指标有专用的分析工具吗?

    请问:ADC的静态指标有专用的分析工具吗?该指标很少在评估ADC指标时使用,是否该指标不重要,应用什么情况下需要评估该指标? 另外ADC的SNR = 6.02*N + 1.76 +10*log10(fs/2BW)
    发表于 02-08 08:13

    eda与传统数据分析的区别

    进行初步的探索和理解,发现数据潜在的模式、关系、异常值等,为后续的分析和建模提供线索和基础。 方法论 :EDA强调数据的真实分布和可视化,使用多种图表和可视化工具来展示数据的特征和趋势。分析
    的头像 发表于 11-13 10:52 ?995次阅读

    主线科技荣登中国潜在独角兽企业榜单

    独角兽企业榜单是长城咨询依据《高成长企业分类导引》潜在独角兽企业标准评选,旨在揭示中国潜在独角兽企业群体最新发展态势的专业榜单。此榜单基于严谨的评选标准和专业的评审机制,在行业内赢得
    的头像 发表于 11-12 17:17 ?1162次阅读

    万协通亮相2024潜在独角兽企业发展大会

    近日,2024潜在独角兽企业发展大会成功举办,会上重磅发布《GEI中国潜在独角兽企业研究报告2024》揭示中国
    的头像 发表于 11-04 11:20 ?901次阅读

    汽车异构硬件平台开发如何进行静态代码分析

    先进的静态代码分析工具,其新版本引入的多CCT功能为开发人员提供强大的支持,该功能不仅简化了多编译器环境下的代码分析过程,还可以极大增强
    的头像 发表于 10-09 16:15 ?938次阅读
    汽车异构硬件平台开发如何进行<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>

    Lint静态验证工具如何助力IC设计

    静态验证方法实现将原本在仿真、综合、布局布线阶段出现的问题移动到RTL阶段进行检测和分析,帮助IC设计者在早期发现和诊断设计缺陷,缩短芯片整体开发周期,降低成本。
    的头像 发表于 09-03 10:15 ?1969次阅读
    Lint<b class='flag-5'>静态</b>验证工具如何助力IC设计

    黑盘缺陷分析-Black-Pad-Defect PPT

    黑盘缺陷分析-Black-Pad-Defect PPT
    的头像 发表于 08-22 16:24 ?702次阅读
    黑盘<b class='flag-5'>缺陷</b><b class='flag-5'>分析</b>-Black-Pad-Defect PPT