-1

目前,我遇到了一个似乎是意外错误的问题。我正在使用 java 语言进行编程,使用 eclipse 作为 IDE。

有问题的名单声明如下:

private final List<Integer> resList;

使用eclipse调试程序的“Watchpoint”功能,我看到了如下过程:resListList 两次返回后,第三次返回前,List 突然变空。

如果有人有建议给我以解决该问题,我会很高兴吗?

关于代码,我发布了所有访问 resList 列表并在程序中调用的方法:

这是第一个:

public CloudInformationService(String name) throws Exception {
        super(name);
        resList = new LinkedList<Integer>();
        arList = new LinkedList<Integer>();
        gisList = new LinkedList<Integer>();
    }

第二个:

public void processEvent(SimEvent ev) {
        int id = -1;  // requester id
        switch (ev.getTag()) {
                ...
                    // A resource is requesting to register.
            case CloudSimTags.REGISTER_RESOURCE:
            resList.add((Integer) ev.getData());
            break;
                ...
            }
    }

最后,第三个:

private static CloudInformationService cis;
    public static List<Integer> getCloudResourceList() {
        if (cis == null) {
            return null;
        }

        return cis.getList();// The implementation of this method is listed below
    }

    public List<Integer> getList() {
            return resList;
    }

先感谢您。

4

1 回答 1

0

第一步:使用 ctrl+alt+H 查找对 resList 的引用,并查找调用 remove、clear、removeAll 的方法。如果使用 resList 的方法太多,请转到第 2 步。

第二步:在 CloudInformationServices 构造函数中设置断点,当命中时,在所有 remove、clear、removeAll 方法中的 LinkedList/AbstractList(在 JDK 中)设置断点。在断点视图中,右键单击 resList 并选择实例断点。选择所有删除、清除、removeAll 断点并继续执行。现在您将获得断点命中,并且可以从列表被清空的位置观察。

如果没有更多的代码,恐怕您无法获得太多帮助。

于 2013-04-14T10:29:54.100 回答