共查询到17条相似文献,搜索用时 62 毫秒
1.
2.
在设计大规模的并行应用程序时,如何使多处理器的利用率达到最优,这对程序设计人员来讲是一个很大的挑战。一般说来,由于应用程序在运行时性能上的缺陷,计算资源得不到充分利用。因此,迫切需要对应用程序进行“性能调试”,即在正确性的基础上,通过揭示这些缺陷,对程序进行细调而提高程序性能。在这篇文章里,介绍了一个软件工具包—自动插桩和监测系统(theAutomatedInstrumentationandMonitoringSystem),它集程序插桩、运行监测和性能分析为一体,支持在多处理器上对并行应用程序进行性能评估。文章首先论述了一些建立性能调试工具的基本问题;然后,详细描述AIMS系统的体系结构以及在利用AIMS工具包进行性能调试工具的开发中的经验;最后,使用两个例子详细地描述使用AIMS系统进行性能调试的过程。 相似文献
3.
4.
插桩技术作为一种有效理解程序动态行为的手段,已经被广泛应用于程序分析、测试和验证中。然而,由于缺少通用的插桩工具,各种具体的应用往往需要从头开发特定的插桩程序,存在着大量的重复性工作。此外,由于在原始程序中插入了大量额外代码,致使调试过程变得更加复杂和困难。针对这些问题,提出了一个基于Eclipse的通用Java代码插桩工具,即通过规则定义匹配程序的执行点,从而定制针对各种分析、测试和验证插桩需求的支持。通过对插桩代码片段的显式/隐式切换实现其可见性管理,从而确保程序的理解和调试过程不受插桩代码影响。通过使用该工具,可以更好地将插桩技术应用于Java程序开发中。 相似文献
5.
模糊测试是一种行之有效的软件缺陷检测方法. 其基本思想是生成大量随机输入,从而广泛探索程序行为,并以此发现程序崩溃和崩溃背后的软件缺陷. 显然,纯随机的输入无法高效探索程序行为,大量程序缺陷也难以导致崩溃. 为了进一步提升模糊测试的有效性,模糊测试往往引入静态插桩技术,用于加快探索程序状态空间速度,提升发现缺陷的能力.因此,引入静态插桩已经成为当下模糊测试的经典实践. 聚焦于模糊测试场景下的插桩需求,除了介绍静态插桩技术的基本原理外,从安全特性强化和导向信息收集两个视角出发,系统性地分析了当下静态插桩的典型方法. 同时,针对插桩的额外开销问题,全面地测量了不同插桩方案下的程序的执行速度,并与基线的未插桩程序进行比对. 最后基于上述分析和测量,初步展望了静态插桩的优化方向.
相似文献6.
施冬梅 《计算机工程与设计》2010,31(13)
为实现C语言开发的嵌入式软件自动路径覆盖测试,提出了基本路径覆盖(Z路径优化)测试探针插桩技术.初始化时确定探针算法、分配内存空间,插桩策略解决了插桩位置及方法,采用消息队列机制完成测试数据采集,使用模式匹配删除探针恢复现场.通过模拟测试XSBase 255嵌入式系统上的C语言计算器模块(callbacks.c),从覆盖率看出取得了一定的效果,为测试和维护工作提供了底层数据支持. 相似文献
7.
基于程序插装的动态测试技术实现 总被引:21,自引:0,他引:21
动态测试是检测程序的动态行为的一种有效手段,本文介绍了Safepro白盒软件测试工具系列中基于程序插装的动脉测试技术实现,具体讨论了动态测试的模型、数据流模型和动态跟踪数据的编码和解码技术,插装库设计与插装策略等内容。 相似文献
8.
9.
10.
11.
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.
15.
软件测试是保证软件质量的重要手段,软件测试工具可以使测试过程变得自动化,覆盖分析为测试提供了可信度测量。该文研究了Java多线程动态测试中的覆盖率分析和线程分析一些度量标准,实现覆盖分析自动化和线程分析自动化的关键技术是程序插装。文章给出了实现此测试所需要的插装。 相似文献
16.
Supaporn Kansomkeat Wanchai Rivepiboon 《Software Testing, Verification and Reliability》2008,18(4):193-219
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)迭代扩展并比较简化图,并将差别信息定位到代码中. 相似文献