草庐IT

DEBUGGING

全部标签

java - 无法在 Eclipse 中断点代码块的最后一条语句

if(true){Stringa="foo";Stringb="bar";}如果我在Stringa="foo";处设置断点,eclipse将停止,我可以跳过并在变量窗口中查看a的值。但我无法跨过第二条语句,它只是离开了代码块,而且我从未看到b的值。这迫使我在Stringb="bar";之后添加一个noop语句,以便我可以看到b包含的内容。我也无法在结束}上添加断点,我认为这可能是相关问题。我知道VisualStudio允许这样做,那么有没有办法在Eclipse中做到这一点? 最佳答案 在任意block的末尾设置断点是不可能的(没有字

java - 是否有可能中断 Eclipse 调试器中的每个对象引用?

假设我有一个类publicclassMyClass{privateSetset=newHashSet();//andmanymethodshere}是否有可能使eclipse调试器在使用set成员的每一行停止? 最佳答案 我有一段时间没有使用Eclipse,但据我所知,至少在Callisto版本中这是可能的。如果您在包含声明的行上设置断点,然后进入该断点的高级属性,我相信您可以设置该变量的修改和访问选项.编辑:我刚刚检查了EclipseEuropa。它确实像我想的那样广泛工作;当您将断点设置在变量上时,该断点称为观察点;在“断点属性

java - 在 Eclipse Debugger (for Java) 中,有没有办法检查任意值?

我想知道是否有一种方法可以在将未声明的变量传递给函数时查看它们的值,在该函数执行后。例如,如果我正在调试并且行foo.setBar(baz.getBar());已经传递(但仍在范围内),我如何查看传递给setBar()的值?我知道我可以通过许多其他方式看到这一点,例如通过进入setBar()调用,或通过将baz.getBar()分配给临时变量-但是这不是我要问的。编辑:基本上,我在调试时感觉受到了惩罚(失去了查看某些信息的能力),只是因为我没有声明每个变量。而且,我知道我可以在事后检查bar(如果我知道它没有改变)但在这种情况下它不是那么简单,因为我正在处理没有改变的对象只是POJO或

java - 打印一个 List<String> 到 logcat

我可以看到log.d需要Log.d(StringTAG,String).我如何向android调试logcat打印一个列表字符串而不是一个字符串? 最佳答案 利用toString()适用于大多数常见数据结构的方法:Log.d("list",list.toString());如果您使用Generictype声明您的List/Collection,以上语句将为您提供预期的结果在Java中定义。比如String,Integer,Long等。因为,它们都实现了toString()方法。客户通用类型:但是,如果您使用自己的自定义类型声明Lis

java - 使用 JUnit 运行测试用例时,在 Eclipse 调试中禁用拖放到框架功能

环境:Linux、EclipseJuno、Java7、JUnit当一个简单的应用程序(一个带有main方法的java类)在Debug模式下运行时,“DroptoFrame”功能在Eclipse中运行良好。但是,如果从junit测试用例调用相同的方法,则Eclipse中的“DroptoFrame”功能将被禁用。来自文档NotethiscommandisonlyavailableifthecurrentVMsupportsdroptoframeandtheselectedstackframeisnotthetopframeoraframeinanativemethod.正如我们在运行jun

没有堆栈的 Java "Thread-2"会阻止终止

我有一个非常复杂的Java程序,它不会终止。Eclipse调试器显示一个可以暂停的线程,但没有堆栈跟踪。它被称为“Thread-2”。此线程的jstack-l输出是:"Thread-2"#17prio=5os_prio=0tid=0x00007f1268002800nid=0x3342runnable[0x0000000000000000]java.lang.Thread.State:RUNNABLELockedownablesynchronizers:-None我在Thread.start()中添加了断点,但找不到名为“Thread-2”的线程。该线程仅在创建两个“AWT-Event

java - 是否有可能追踪到哪个表达式导致了 NPE?

当我得到一个NPE时,我会得到一个带有行号的堆栈跟踪。这很有用,但如果行非常密集和/或包含嵌套表达式,仍然不可能找出哪个引用为空。当然,此信息一定在某处可用。有办法解决这个问题吗?(如果不是java表达式,那么至少导致NPE的字节码指令也会有帮助)编辑#1:我看到一些评论建议打破这条线等等,这没有冒犯,实际上是非建设性和无关紧要的。如果我能那样做,我会的!只是说这种修改源代码是不可能的。编辑#2:apangin在下面发布了一个很好的答案,我接受了。但是对于不想自己尝试的人来说,我不得不在这里包含输出太酷了!;)假设我有这个驱动程序TestNPE.java1publicclassTest

java - 检查 Eclipse 调试器中的当前异常?

如果Java应用程序抛出未处理的异常,它会导致Eclipse在该点中断。有没有办法检查当前异常?基本上,来自MSVS的$exception? 最佳答案 我认为当使用Exceptionbreakpoint时会出现所描述的问题,在这种情况下您无权访问异常变量并且无法在变量View中检查它。我在以下帖子中找到了这个问题的“解决方案”:BreakpointatexceptioninEclipse-howtoexamineExceptionobject?它是:ThereisanoptionintheEclipsePreferencesthat

java - 远程调试 : No connection to Wildfly 14 on OpenJDK 11 at port 8787

我正在尝试将我的调试器连接到在OpenJDK11上运行的Wildlfy。尽管Wildfly说:Listeningfortransportdt_socketataddress:8787我的IDE(IntelliJIDEACE2018.1)声称它没有任何连接:Unabletoopendebuggerport(localhost:8787):java.io.IOException"handshakefailed-connectionprematurallyclosed".我通过standalone.sh--debug启动Wildfly,导致以下JAVA_OPTS:-server-Xms64m

java - 在 Exception 上转储变量状态

我想知道是否有一种方法可以在出现异常时转储所有局部变量的状态,以便更好地了解导致异常的环境状态。下面的变量idsToDump在运行时是未知的,我想找出集合中的值导致NPE的状态。例子:publicstaticvoidmain(String[]args){HashMapemployees=newHashMap();employees.put(1,"James");Integer[]idsToDump=newInteger[]{1,2,3};for(IntegeremployeeId:idsToDump){Stringname=employees.get(employeeId).toLow