Tag: 调试

Java Hotswap的局限性

java hotswapfunction为我节省了大量时间。 但是,它有许多限制(不支持模式更改)。 是否有人会更快地解决这个限制? 根据这个论坛条目 ,似乎被忽略了。 我知道像JRebel这样的产品有帮助。 但有没有人知道任何开源工具呢?

禁用Eclipse Java调试器的热代码替换

可能重复: 如何在Eclipse中禁用热代码替换 在调试会话中更改Java代码时,Eclipse会将更新的类文件上载到正在运行的JVM中(热代码替换)。 这甚至适用于远程应用程序。 有没有办法关闭热代码替换(在Eclipse中,而不是在远程JVM)? 我们希望能够远程调试我们的测试和登台服务器,但是防止对它们正在运行的构建进行无意的更新。

追踪int 的分配

通过JMX在JVisualVM中查看我的远程应用程序时,我发现在空闲时看到了内存使用情况: 使用堆转储并使用JVisualVM对其进行分析,我看到一大块内存位于几个没有引用的大型int[]数组中,通过比较堆转储,我可以看到它们似乎正在占用内存和由GC定期收回。 我很想跟踪这些,因为它引起了我的兴趣,我自己的代码永远不会故意分配任何int[]数组。 我确实使用了很多像netty这样的库,所以罪魁祸首可能在其他地方。 我确实有其他服务器具有相同的框架组合,但在那里看不到这个锯齿。 我怎样才能发现谁在分配它们?

如何在Eclipse中的Variables View中展开所有节点?

我正在尝试使用Eclipse来调试JSP页面。 设置断点并想知道几个变量的当前值,例如: 但是, 鼠标hover不起作用所以我试图使用变量视图,它看起来像: 其中每一个都有一个复杂的树结构,因此找到我需要的东西并不明显。 有没有快速的方法来扩展树中的所有节点而无需点击鼠标? 还是搜索整棵树?

如何分析由忽略的ExceptionInInitializerError引起的NoClassDefFoundError?

今天我花了我的下午分析一个NoClassDefFoundError。 在一次又一次地validation类路径之后,结果发现有一个类的静态成员抛出了第一次被忽略的exception。 之后,每次使用该类都会抛出一个没有有意义的堆栈跟踪的NoClassDefFoundError: Exception in thread “main” java.lang.NoClassDefFoundError: Could not initialize class InitializationProblem$A at InitializationProblem.main(InitializationProblem.java:19) 就这样。 没有更多的线条。 减少到这一点,这是问题: public class InitializationProblem { public static class A { static int foo = 1 / 0; static String getId() { return “42”; } } public static void main( String[] args ) { try { new A(); } […]

Java进程的转储文件分析?

如果我使用Windbg转储在Windows上运行的Java进程 我可以(简单地)分析Java堆,对象和线程吗? 就像我可以用SOS进行.Net过程一样? 否则 – 我如何离线调试生产系统上发生的问题? 谢谢!

使用JUnit运行测试用例时,Eclipse Debug中禁用了Drop to framefunction

环境:Linux,Eclipse Juno,Java 7,JUnit 当一个简单的应用程序(带有main方法的java类)在调试模式下运行时,“Drop to Frame”function在Eclipse中运行良好。 但是,如果从junit测试用例调用相同的方法,则在Eclipse中禁用“Drop to Frame”function。 从文档中 请注意,此命令仅在当前VM支持逐帧且所选堆栈帧不是顶部帧或本机方法中的帧时可用。 正如我们在调试窗口中的堆栈帧中看到的,当运行junit测试用例时,有一个本机的“NativeMethodAccessorImpl.invoke”框架。 我假设这是“Drop to Frame”被禁用的原因。 如果这个推理是正确的,请告诉我,如果是,可以使用任何解决方法来解决这个问题。

System.Diagnostics.Debugger.Break()喜欢用java吗?

有没有一种方法可以在Java中发出断点信号,如C#中的System.Diagnostics.Debugger.Break()?

如何在Eclipse中设置一个断点而不是一行?

一旦在一组特定的类中调用任何函数,我只想开始调试。 是否有可能在Eclipse中实现这一目标? 或者我是否必须在我要调试的每个类中的每个函数上设置断点? 更新: 我没有问过如何在eclipse中设置断点。 我想调试一个类,而不知道将调用哪个函数。 更新2: (我会更清楚地解决我的问题) 我被要求修复应用程序中的错误(我没有实现)。 我设法将相关类缩小到这个bug。 每个class级有30多个function的问题。 而且我不确切地知道调用了哪些函数。 所以我在考虑是否有可能在类本身上以某种方式设置断点,以便在调用此类中的函数时开始调试。 我将不胜感激任何帮助, 特发

在Exception上转储变量的状态

我想知道是否有一种方法可以在出现exception时转储所有局部变量的状态,以便更好地了解导致exception的环境状态。 变量idsToDump下面在运行时是未知的,我想找出集合中的值导致NPE的状态。 例: public static void main(String[] args) { HashMap employees = new HashMap(); employees.put(1, “James”); Integer[] idsToDump = new Integer[] { 1, 2, 3 }; for (Integer employeeId : idsToDump) { String name = employees.get(employeeId).toLowerCase(); System.out.println(name + ” is employee number: ” + employeeId); } } 输出: james is employee number: 1 Exception in […]