您的位置:首页 > 运维架构

optorsim自带例子调试总结

2012-08-13 23:01 141 查看
  Optorsim网格模拟软件是欧洲粒子物理研究中心于 2002 年开始用 Java 编写的软件,是模拟真实的数据网格结构而开发的,目的是研究在某一特定环境下副本优化算法的有效性。OptorSim 是一种可扩展、易配置和编程的网格模拟工具,而且是一个源代码公开的、免费的软件模拟平台,具有开放的结构和良好的可扩充性。

  在运行optorsim自带例子的过程中,出现以下报错:

============= O P T O R S I M =============

OptorSimMain> using default parameters file examples/parameters.conf

GridConfFileReader> reading file examples/simple_grid.conf

JobConfFileReader> reading file examples/simple_job.conf

Assigning master files to specified sites

Exception in thread "main" java.lang.NullPointerException at org.edg.data.replication.optorsim.infrastructure.JobConfFileReader.assignFilesToSites(JobConfFileReader.java:391)

at org.edg.data.replication.optorsim.OptorSimMain.initStorageElements(OptorSimMain.java:110)

at org.edg.data.replication.optorsim.OptorSimMain.init(OptorSimMain.java:67)

at org.edg.data.replication.optorsim.OptorSimMain.main(OptorSimMain.java:51)

在这个问题上纠结了好久,下午经过刘老师的亲自调试,终于有一些突破,现把调试的过程总结如下:

从报错上可知,这是一个空指针造成的问题,对应到JobConfFileReader.java:391。

在391上设置断点(run-toggle breakpoint),进行调试(debug(F11)),从Variables表中发现gsite的值为null。查看gsite的声明和引用(右键-Reference/Declarations-workspace),对应到gsite的声明行390。

在390上增加断点,重新进行调试(Terminate-Debug),查看代码和变量表可以知道findGridSiteByID( siteIndex)中的siteIndex的值为14导致了gsite的值为空。

进入findGridSiteByID函数进行调试(F5),可以看出if(gsite.iAm( id))这个语句没有执行,看了iAm的代码知道14并不是在所设置的节点范围内的值。从id的值是14知道,findGridSiteByID( siteIndex)中siteIndex的传递值为14。再看389行中的stite[i]是14,找到358行stites的声明,查看getFileDisribution函数。

进入getFileDisribution函数的声明,由String distribution = _table.getProperty("initial.file.distribution"),在配置文件parameters.conf中找到initial.file.distribution的赋值为14,从此项的说明可知是设置初始文件在各节点上的分布情况,现设置为0,1,3,4,5,6,8,9,则程序可以正常运行,显示图形化界面。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: