2017-07-08 57 views

回答

1

UR问题不是很清楚,我,但我猜ü意味着这样的:

  • u必须包含在集合S的对象O,它包含多个对象
  • O为在你的代码中更新(即它的内部属性发生变化)并且你想通过表达式视图来关注这些变化,同时你可以通过代码
  • 你也希望这样的代码行/方法不会发生到O的一条两岸路径

我不知道任何方式(内部eclipse goody),让你通过它的eclipse调试ID或对象哈希引用'O。

但它可以做得相当简单:只需要​​能够通过调试器中选择的当前帧的某些(冗长的)引用方式达到O来完成此操作。

最简单的方法是添加一些额外的代码来将O设置为某种静态var。 U可以在手动调试的同时分配静态var,借助于“显示”视图让您执行Java代码,该视图在当前堆栈框架的上下文中运行。

步骤:

  1. 创建/类MyWatcher添加到我们的代码基础。
  2. 步骤通乌尔代码(添加O到集时例如。在示例代码,在第五符),其中u得到乌尔手柄O对
  3. 打开显示视图并添加以下行MyWatcher.watches.put("a", o)(取代的“o '由在乌尔断点引用澳表达)
  4. 执行用Ctrl + U或直通上下文菜单
  5. 行添加这UR‘表达式’视图:MyWatcher.watches.get("a")
  6. 现在ö将保持在任何时候都可见,例如。在下面的例子:即使妳在foo(),B/C的地图持有O. AR裁判
public class MyCode { 

    public static void main(final String[] args) { 
    bar(); 
    foo(); 
    } 

    static void bar() { 
    final Set<Object> set = new HashSet<>(); 
    for (int i = 0; i < 10; i++) { 
     final List<Integer> o = Arrays.asList(i); 
     set.add(o); 
    } 

    } 

    static void foo() { 
    System.out.println("bar"); 
    } 
} 

public class MyWatcher { 
    public static final Map<String, Object> watches = new HashMap<>(); 
} 
-1

在你的MyObject类中添加一个toString()方法。 你可以通过Eclipse使用: 右键单击(在MyObject中) - > Source - > Generate toString()。 现在您将能够看到MyObject的内容而不是哈希ID。

+0

我的意思是使用散列或Eclipse的ID,以便能够看到我对象都次,甚至在超出范围时。我在代码中的大HashSet中丢失了对象,然后引用对象在代码中的某个地方得到更新,所以我希望使用其中一个ID来始终监视对象。 – user3499973

+0

OP的问题是关于调试,而不是'toString'。 –