Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
eclipse-调试时始终查看对象_Eclipse_Debugging_Reference_Eclipse Neon - Fatal编程技术网

eclipse-调试时始终查看对象

eclipse-调试时始终查看对象,eclipse,debugging,reference,eclipse-neon,Eclipse,Debugging,Reference,Eclipse Neon,我有一个集合中的对象,它的内脏通过引用更新。有没有一种方法可以使用对象哈希ID(MyObject@93efa2ed)或Eclipse ID(ID=356),即使在我的表达式视图超出范围时也要始终在其中监视 我正在使用Eclipse霓虹灯 在MyObject类中添加一个toString()方法。 您可以通过Eclipse使用以下工具完成此操作: 右键单击(在MyObject中)->Source->Generate toString()。 现在,您将能够看到MyObject的内容,而不是散列id 在

我有一个集合中的对象,它的内脏通过引用更新。有没有一种方法可以使用对象哈希ID(
MyObject@93efa2ed
)或Eclipse ID(
ID=356
),即使在我的表达式视图超出范围时也要始终在其中监视

我正在使用Eclipse霓虹灯

在MyObject类中添加一个toString()方法。 您可以通过Eclipse使用以下工具完成此操作: 右键单击(在MyObject中)->Source->Generate toString()。 现在,您将能够看到MyObject的内容,而不是散列id

在MyObject类中添加一个toString()方法。 您可以通过Eclipse使用以下工具完成此操作: 右键单击(在MyObject中)->Source->Generate toString()。 现在,您将能够看到MyObject的内容,而不是散列id


你的问题我不太清楚,但我想你的意思是:

  • u有一个包含在集合S中的对象O,该集合包含更多对象
  • O在您的代码中更新(即,其内部属性发生更改),您希望在逐步执行代码时通过表达式视图关注这些更改
  • 你也希望这种情况发生在代码行/方法中,这些代码行/方法没有到O的前向路径
我不知道有什么方法(内部eclipse goody)可以让你通过eclipse调试ID或对象散列来引用O

但是它可以做得相当简单:你只需要能够通过从调试器中选择的当前帧进行某种(长时间)的引用来达到O即可

最简单的方法是添加一些额外的代码,将O设置为某种类型的静态变量。 在手动调试时,您甚至可以在“Display”视图的帮助下分配静态变量,该视图允许您执行在当前堆栈帧上下文中运行的java代码

步骤:

  • 创建/添加MyWatcher类到您的代码库
  • 逐步通过你的代码到你在O上得到你的句柄的地方(例如,在示例代码中,在向集合中添加O时的第5个断点)
  • 打开显示视图并添加此行
    MyWatcher.watchs.put(“a”,o)
    (将“o”替换为在断点处引用o的表达式)
  • 使用Ctrl+U或通过关联菜单执行该行
  • 将此添加到您的“表达式”视图:
    MyWatcher.watches.get(“a”)
  • 现在,O将始终可见,例如,在下面的示例中:即使您处于
    foo()
    ,b/c地图也会在O上保留ar ref
  • 公共类MyCode{
    公共静态void main(最终字符串[]args){
    bar();
    foo();
    }
    静态空心条(){
    最终集=新的HashSet();
    对于(int i=0;i<10;i++){
    最终列表o=Arrays.asList(i);
    设置。添加(o);
    }
    }
    静态void foo(){
    系统输出打印项次(“bar”);
    }
    }
    公共类MyWatcher{
    publicstaticfinalmap=newhashmap();
    }
    
    我不太清楚你的问题,但我想你的意思是:

    • u有一个包含在集合S中的对象O,该集合包含更多对象
    • O在您的代码中更新(即,其内部属性发生更改),您希望在逐步执行代码时通过表达式视图关注这些更改
    • 你也希望这种情况发生在代码行/方法中,这些代码行/方法没有到O的前向路径
    我不知道有什么方法(内部eclipse goody)可以让你通过eclipse调试ID或对象散列来引用O

    但是它可以做得相当简单:你只需要能够通过从调试器中选择的当前帧进行某种(长时间)的引用来达到O即可

    最简单的方法是添加一些额外的代码,将O设置为某种类型的静态变量。 在手动调试时,您甚至可以在“Display”视图的帮助下分配静态变量,该视图允许您执行在当前堆栈帧上下文中运行的java代码

    步骤:

  • 创建/添加MyWatcher类到您的代码库
  • 逐步通过你的代码到你在O上得到你的句柄的地方(例如,在示例代码中,在向集合中添加O时的第5个断点)
  • 打开显示视图并添加此行
    MyWatcher.watchs.put(“a”,o)
    (将“o”替换为在断点处引用o的表达式)
  • 使用Ctrl+U或通过关联菜单执行该行
  • 将此添加到您的“表达式”视图:
    MyWatcher.watches.get(“a”)
  • 现在,O将始终可见,例如,在下面的示例中:即使您处于
    foo()
    ,b/c地图也会在O上保留ar ref
  • 公共类MyCode{
    公共静态void main(最终字符串[]args){
    bar();
    foo();
    }
    静态空心条(){
    最终集=新的HashSet();
    对于(int i=0;i<10;i++){
    最终列表o=Arrays.asList(i);
    设置。添加(o);
    }
    }
    静态void foo(){
    系统输出打印项次(“bar”);
    }
    }
    公共类MyWatcher{
    publicstaticfinalmap=newhashmap();
    }
    
    我的意思是使用hash或Eclipse ID可以随时查看我的对象,即使在范围之外。我在代码中的一个大哈希集中丢失了对象,然后引用对象在代码中的某个地方得到更新,所以我希望使用这些ID中的一个来始终监视对象。OP问题是关于调试,而不是关于
    toString
    。我的意思是使用哈希或Eclipse ID可以随时看到我的对象,即使在范围之外。我在代码中的一个大哈希集中丢失了对象,然后引用对象在代码中的某个地方得到更新,所以我希望使用这些ID中的一个来始终监视对象。OP问题是关于调试,而不是关于
    toString