自动检测并行Java程序中的错误 - 编程入门网
自动检测并行Java程序中的错误时间:2011-06-19 IBM / 齐 尧 甘 志 罗 志达 戴 晓君当 CPU 进入多核时代之后,并行编程将更加流行,但是编写并行程序更容易 出错。在开发过程中,工程师能注意到同一个程序在单线程运行时是正确的,但 是在多线程时,它会有可能出错。和并行相关的错误的产生原因通常都非常隐晦 ,而且在一次测试中,它们的出现与否具有很强的随机性。由于程序中多个线程 之间可能以任意的方式交错执行,即使一个并行程序正确的运行了成百上千次, 下一次运行仍然可能出现新的错误。 Multi-Thread Run-time Analysis Tool 是由 IBM 为多线程 Java 程序开发 的运行时分析工具,它可用于分析并查找 Java 代码中的一些不容易发现的潜在 并行程序错误,比如数据竞争 (Data Race) 和死锁 (Deadlock),从而提高并行 程序的代码质量。本文将介绍检测 Java 程序中随机并行错误的一种新工具 (http://alphaworks.ibm.com/tech/mtrat),检查 Java 代码中的潜在的并行程 序错误,从而提高代码的安全性和稳定性,并演示其对于潜在而并未发生的错误 的发掘能力。 概述 Java 编程语言为编写多线程应用程序提供强大的语言支持。但是,编写有用 的、没有错误的多线程程序仍然比较困难。编程语言中线程面临很多挑战。在这 些挑战中,最主要的就是编程复杂度的提高。这些编程复杂度是由同步共享变量 的访问,潜在的依赖于时序的错误和调试和优化并行程序的复杂性造成的。 MTRAT 只所以把不同的技术集成到了一个单一的开发工具中,是为了掩盖工 具内部的复杂性,并使得 MTRAT 方便使用。 MTRAT 主要由以下部分组成, 简单的命令行界面和 Eclipse 插件。输出 MTRAT 检查到的并行错误。 动态的 Java 字节码修改引擎。可以在 Java 类文件被 Java 虚拟机加载的 时候,修改 Java 类。 程序运行时信息收集器。收集程序的动态信息,比如内存访问,线程同步, 创建和结束。 高效的运行时分析引擎。收集到的运行时信息会被在线分析,如果发现潜在 的并行错误,将会通过界面报告给用户。 检测数据竞争 在并行程序中,当两个并行的线程,在没有任何约束的情况下,访问一个共 享变量或者共享对象的一个域,而且至少要有一个操作是写操作,就会发生数据 竞争错误。MTRAT 最强大的功能就是发现并行程序中潜在的数据竞争错误。在下 边的 Java 程序就隐藏了一个潜在的数据竞争错误。
自动检测并行Java程序中的错误(2)时间:2011-06-19 IBM / 齐 尧 甘 志 罗 志达 戴 晓君类Value声明一个整形域x,一个同步方法add修改这个域,和一个方法get返 回域x的值。类Task以两个类Value的实例来构造。 以 MTRAT 运行类sample.DataRace,可以在运行时刻检查程序中的潜在的数 据竞争错误
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |