首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到17条相似文献,搜索用时 62 毫秒
1.
软件二进制插桩是软件性能分析、漏洞挖掘、质量评价领域的关键技术.在嵌入式环境下,传统动态插桩算法受到无操作系统、CPU架构复杂、内存资源紧张等局限,难以展开工作.文章以软件动态二进制插桩算法为研究目的,通过静态特征分析和动态跟踪算法,引入图论算法对固件中的二进制进行分析,提出了嵌入式设备远程调试协议,实现了对软件运行时...  相似文献   

2.
在设计大规模的并行应用程序时,如何使多处理器的利用率达到最优,这对程序设计人员来讲是一个很大的挑战。一般说来,由于应用程序在运行时性能上的缺陷,计算资源得不到充分利用。因此,迫切需要对应用程序进行“性能调试”,即在正确性的基础上,通过揭示这些缺陷,对程序进行细调而提高程序性能。在这篇文章里,介绍了一个软件工具包—自动插桩和监测系统(theAutomatedInstrumentationandMonitoringSystem),它集程序插桩、运行监测和性能分析为一体,支持在多处理器上对并行应用程序进行性能评估。文章首先论述了一些建立性能调试工具的基本问题;然后,详细描述AIMS系统的体系结构以及在利用AIMS工具包进行性能调试工具的开发中的经验;最后,使用两个例子详细地描述使用AIMS系统进行性能调试的过程。  相似文献   

3.
基于动态插桩的工具被广泛应用于程序分析中, 但该类工具都面临着严重的性能问题。这类工具的性能开销主要由两部分组成, 即插桩引擎的开销和用户定义的分析程序的开销。为降低用户定义的分析工具的开销, 首先分析了基于动态插桩的工具的性能开销的组成, 并通过实验分析了造成性能开销的几点原因及其对工具的性能影响; 根据分析结论提出了使用离线分析方式来优化工具性能, 最后通过并行数据收集来进一步提升工具性能。使用该方法能减少分析程序5%~15%的CPU占用时间。  相似文献   

4.
郑晓梅 《计算机科学》2011,38(7):139-143,169
插桩技术作为一种有效理解程序动态行为的手段,已经被广泛应用于程序分析、测试和验证中。然而,由于缺少通用的插桩工具,各种具体的应用往往需要从头开发特定的插桩程序,存在着大量的重复性工作。此外,由于在原始程序中插入了大量额外代码,致使调试过程变得更加复杂和困难。针对这些问题,提出了一个基于Eclipse的通用Java代码插桩工具,即通过规则定义匹配程序的执行点,从而定制针对各种分析、测试和验证插桩需求的支持。通过对插桩代码片段的显式/隐式切换实现其可见性管理,从而确保程序的理解和调试过程不受插桩代码影响。通过使用该工具,可以更好地将插桩技术应用于Java程序开发中。  相似文献   

5.

模糊测试是一种行之有效的软件缺陷检测方法. 其基本思想是生成大量随机输入,从而广泛探索程序行为,并以此发现程序崩溃和崩溃背后的软件缺陷. 显然,纯随机的输入无法高效探索程序行为,大量程序缺陷也难以导致崩溃. 为了进一步提升模糊测试的有效性,模糊测试往往引入静态插桩技术,用于加快探索程序状态空间速度,提升发现缺陷的能力.因此,引入静态插桩已经成为当下模糊测试的经典实践. 聚焦于模糊测试场景下的插桩需求,除了介绍静态插桩技术的基本原理外,从安全特性强化和导向信息收集两个视角出发,系统性地分析了当下静态插桩的典型方法. 同时,针对插桩的额外开销问题,全面地测量了不同插桩方案下的程序的执行速度,并与基线的未插桩程序进行比对. 最后基于上述分析和测量,初步展望了静态插桩的优化方向.

  相似文献   

6.
为实现C语言开发的嵌入式软件自动路径覆盖测试,提出了基本路径覆盖(Z路径优化)测试探针插桩技术.初始化时确定探针算法、分配内存空间,插桩策略解决了插桩位置及方法,采用消息队列机制完成测试数据采集,使用模式匹配删除探针恢复现场.通过模拟测试XSBase 255嵌入式系统上的C语言计算器模块(callbacks.c),从覆盖率看出取得了一定的效果,为测试和维护工作提供了底层数据支持.  相似文献   

7.
基于程序插装的动态测试技术实现   总被引:21,自引:0,他引:21  
动态测试是检测程序的动态行为的一种有效手段,本文介绍了Safepro白盒软件测试工具系列中基于程序插装的动脉测试技术实现,具体讨论了动态测试的模型、数据流模型和动态跟踪数据的编码和解码技术,插装库设计与插装策略等内容。  相似文献   

8.
嵌入式软件语句覆盖率测试插桩技术   总被引:1,自引:0,他引:1  
孙红利  王忠民  王文浪 《计算机应用》2010,30(10):2738-2740
针对基于宿主机的嵌入式软件测试,提出一种单元测试中通用的语句覆盖率测试方法,通过插桩技术,采用向源代码插桩实现语句覆盖率测试。设计了测试代码的实现算法,通过测试代码可以自动完成向被测代码插桩。这些方法被成功地应用到笔者所在项目组开发的嵌入式软件仿真测试平台ARMtest上。利用这些方法,在嵌入式硬件系统未完成开发之前,可通过宿主机环境和仿真环境及时发现嵌入式软件开发初期的一些不足并加以完善。  相似文献   

9.
介绍了一种异构环境下的并行调试及性能分析工具ParaVT的设计方法和实现.通过对并行程序源代码的分析处理,利用自动插桩模板插入用于调试和性能分析的用户代码,从而对并行程序进行断点调试和性能参数收集,达到进一步优化程序设计的目的.  相似文献   

10.
基于路径覆盖插桩的可执行代码测试工具实现   总被引:1,自引:0,他引:1       下载免费PDF全文
王轶  蒋同海  董军  周喜 《计算机工程》2012,38(5):35-37,40
为解决传统程序插桩技术存在代码膨胀和运行时间较长的问题,提出对可执行代码进行控制流路径覆盖消除冗余的插桩策略。依据该策略设计一种针对Java可执行代码的单元测试工具,完成程序执行路径跟踪和覆盖率分析。对测试工具进行功能验证和性能分析,结果表明,该策略能够有效减少插桩点数量,降低插桩对被测程序时间特性的影响。  相似文献   

11.
Jie Yin  Chao Ma  Shi‐Min Hu 《Software》2016,46(3):341-360
Instrumentation is a powerful technique for monitoring, profiling, debugging, logging and tracing the software. In order to determine the instrumentation location, the user needs to know where the current executed location is in the source code. Previous instrumentation approaches rely on debugging information to find the location in the source code. For fully optimized programs, debugging information is not complete, which limits the application of those approaches. In this paper, we present pattern‐based abstract syntax tree (PAST) instrumentation, an ideal instrumentation methodology that accurately instruments the fully optimized program. The instrumentation location is specified in an intuitive way that matches the source code at the abstract syntax tree level. The program can be instrumented either at the compile time using the ordinary compiling or when it is running using the just‐in‐time compiling. Experimental results show that PAST can accurately instrument the target program. There is negligible run time overhead when the running program is instrumented without any operation. We have implemented PAST on both x86‐32 and x86‐64 to show that PAST is easily portable across different architecture. Copyright © 2015 John Wiley & Sons, Ltd.  相似文献   

12.
动态分析是程序理解的重要方法,而插装技术是其中常用的关键技术之一.介绍了QESat/C 中动态分析子系统的插装策略,在其基础上提出并实现了新的插装器并改进了插装探针库的效率.实验表明,改进后的动态分析子系统具有插装速度快、动态结果文件小、动态信息合并效率高的优点.展望了现有系统如何支持新的动态分析技术,最后对全文进行了总结.  相似文献   

13.
缺陷定位是软件质量保证中关键且困难的一项工作,随着软件规模的增大,人工进行缺陷定位的成本越来越高,自动化缺陷定位技术成为研究热点。现有的基于程序频谱的缺陷定位技术可以将缺陷定位到程序语句,但对于大型复杂的软件系统,这种定位方法将带来较大的时间花销。针对此问题,提出一种基于程序频谱的两阶段缺陷定位方法,第一阶段为粗粒度定位,将缺陷定位到程序模块;第二阶段为细粒度定位,在定位的程序模块中再将缺陷定位到语句;最后输出可疑语句推荐列表,辅助开发人员的调试工作。实验结果表明,相比于传统的方法,该方案在保证定位效果的前提下平均减少了10.24%的定位时间。  相似文献   

14.
姜佳君  陈俊洁  熊英飞 《软件学报》2021,32(9):2665-2690
软件缺陷是软件开发和维护过程中不可避免的.随着现代软件规模的不断变大,软件缺陷的数量以及修复难度随之增加,为企业带来了巨大的经济损失.修复软件缺陷,成为了开发人员维护软件质量的重大负担.软件缺陷自动修复技术有希望将开发者从繁重的调试中解脱出来,近年来成为热门的研究领域之一.搜集了 94篇该领域最新的高水平论文,进行了详...  相似文献   

15.
软件测试是保证软件质量的重要手段,软件测试工具可以使测试过程变得自动化,覆盖分析为测试提供了可信度测量。该文研究了Java多线程动态测试中的覆盖率分析和线程分析一些度量标准,实现覆盖分析自动化和线程分析自动化的关键技术是程序插装。文章给出了实现此测试所需要的插装。  相似文献   

16.
Object‐oriented component engineering is increasingly used for system development, partly because it emphasizes portability and reusability. Each time a component is used, it must be retested in the new environment. Unfortunately, the data abstraction that components usually use results in low testability. First, internal variables cannot be directly set. Second, even though a test input may trigger a fault, the failure does not propagate to the output. This paper presents a technique to increase object‐oriented component testability, thereby making it easier to detect faults. Components are often sealed so that source code is not available. The program analysis is performed at the Java component bytecode level. A component's bytecode is analysed to create a control and data flow graph, which is then used to increase component testability by increasing both controllability and observability. We have implemented this technique and applied it to several components. Experimental results reveal that fault detection can be increased by using our increasing testability process. Copyright © 2008 John Wiley & Sons, Ltd.  相似文献   

17.
程序差别分析是程序调试的常见手段,其主要用于分析程序不同版本之间的差异信息.然而,将现有程序差别分析算法扩展到并行程序语言还面临众多挑战.其主要原因在于并行程序复杂性较高,且存在支持并行活动的特殊机制,如地址(或线程)、活动、同步等,从而为有效进行程序差别分析设置了障碍.文中研究基于PGAS模型的X10并行程序的程序差别分析方法,并设计了一种语句级的、针对X10程序的程序差别分析算法X10Diff.X10Diff包括下列步骤:(1)匹配原程序和修改后程序中的类、接口、方法及地址;(2)为待分析程序片段构建基于地址的程序流图,并建立相应简化图;(3)迭代扩展并比较简化图,并将差别信息定位到代码中.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号