Tag: 调试

在Eclipse调试器中,哪些更改可以“热代码替换”到正在运行的JVM中?

在Eclipse中,如果在“Debug”下运行程序,则可以对代码进行更改,并且大多数时候它会立即生效。 但有时,它不会 – 在这种情况下会弹出消息,或者在“调试”窗格中的线程旁边显示“(可能不同步)”。 是什么决定了可以热插拔的变化? 我注意到这些变化通常会失败: 引入新的匿名内部类 在实例化类时更改类(重命名/添加/删除字段和方法) 添加try-catch块 但有时似乎几乎是随机的。 确定代码是否可以替换的逻辑是什么?

如何从Hibernate获取更多调试消息?

尽管在hibernate.cfg.xml文件中设置了一些属性,但我还是无法从Hibernate获得更多的控制台输出(以帮助调试)。 例如,添加行true实际上并未在控制台中显示SQL语句。 我也尝试过使用log4j.properties文件的内容 – 比如设置log4j.logger.org.hibernate=debug – 没有运气。 我错过了什么? 编辑: hibernate-service.xml文件的内容是 java:/SMS_DS org.hibernate.dialect.HSQLDialect java:/hibernate/SessionFactory org.hibernate.cache.HashtableCacheProvider true 不过,我不是百分百确定这是否真的有任何影响。 该XML文件位于Eclipse项目中,用于处理我的数据库内容,但似乎不在JBoss部署目录中。 编辑2:这肯定是作为HAR部署的。 也就是说,我很确定我需要hibernate.cfg.xml – 我记得当映射文档作为该文件中的条目被省略时会出现问题。 我认为HAR是使用ant生成的 – 在build.xml文件中有一个目标: 但是当我在hibernate-service.xml文件中使用格式错误的xml进行ant构建时,它不会失败。 更新即使完全删除文件也不会导致构建失败。 这里有什么想法? 结束更新 听起来像Hibernate输出SQL语句应该(如果一切正确设置)完全处理它 – 这是否意味着log4j.properties中的设置在这里不会产生影响? – 因为在运行ant时实际上会改变输出。 编辑3:在har我的数据har其他奇怪问题后,我完全删除了har文件,并使用har ant build target重建了它。 突然间一切正常! 感谢国际象棋,因为他非常乐于助人。 不能说我到底知道到底是做了什么,但我更愿意承认他的努力,而不是写下并接受我自己的答案; 如果你不是“他”,我道歉。

当Java对象的状态发生变化时,是否有一种方法可以通知Eclipse调试器?

我正在调试一些遗留代码,我们有一个看似在外部更改的缓存对象。 如果我知道它的对象标识符(在调试时),是否有某种方法可以“监视”它,以便如果同一线程或另一个线程中的某些其他代码尝试修改其状态,它将触发我的调试? 我不能只使用表达式监视它,因为在其他地方可能有对该对象的引用,并且因为有许多同一类的实例。

为什么VisualVM Profiler不会配置我的应用程序?

我创建了一个简单的1文件java应用程序,它循环遍历循环,调用一些函数,分配一些内存,添加一些数字等。我通过eclipse的Run As->Java Application运行该应用Run As->Java Application 。 正在运行的应用程序显示在Local Visual Basic下的Java VisualVM中。 我双击该应用程序并转到Profiler选项卡。 默认设置为: Start profiling from classes: my.main.package.** Do not profile classes: java.*, javax.*, sun.*, sunw.*, com.sun.* 我点击CPU 。 CPU和Memory按钮变灰。 什么都没发生。 Status表示profiling inactive 。 当我的应用程序终止时, Status表示application terminated 。 我在这做错了什么? 我需要调整一些设置吗? 启动应用程序时是否需要设置VM标志?

如何在调试模式下运行时修改java代码?

我如何启用这个“在运行时调试”Notch在Eclipse中的这个video中谈到了什么? 作为测试,我希望能够编辑以下代码的输出,并在运行时将其更改为“Hello Runtime Debugging”。 public class HelloWorld { public static void main(String[] args) throws InterruptedException { doIt(); } private static void doIt() throws InterruptedException { for (int i = 0; i < 1000; ++i) { System.out.println("Hello World " + i); Thread.currentThread().sleep(100); } } } 编辑:我修改了代码,现在我得到了我正在寻找的结果。 Suraj Chandran的回答解释了这一点。 private static void doIt() throws InterruptedException { for […]

如何使用Intellij Idea的exception断点

这似乎是一个愚蠢的问题,但我无法弄清楚如何在Intellij Idea中调试exception。 谷歌搜索也没有帮助。 我尝试创建exception断点。 当IDEA中断时,我希望它给我一个调用堆栈,显示导致抛出exception的方法以及自动监视窗口,就像Visual Studio的调试工具一样。 相反,它显示了有关Launcher或ClassLoader各种乱码消息,但在运行时没有显示实际exception的迹象。 那么IDEA的exception断点究竟应该如何使用呢?

eclipse beakpoint:在离开Java方法之前停止

有没有办法告诉调试器在返回之前停止,无论从该方法退出哪个语句,返回,exception还是掉到底部? 我受到以下事实的启发:Java编辑器向我显示了我的方法可以退出的所有位置 – 当您单击方法声明的返回类型(启用Mark Occurrences)时,它会突出显示它们。 [eclipse 3.4]

Java应用程序是否会因为-Xdebug的存在而减慢或仅在单步执行代码时减速?

我意识到在调试器中运行时Java代码会变慢 。 问题是,通过使用以下选项启动Java,代码是否会变慢: Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n ?? 或者只有当您连接到“调试端口”并使用IDE实际执行代码时才会发生减速?

Jstack和Jstat停止了升级到JDK6u23的工作

我们最近从JDK6u20(Linux,32位和64位)升级到JDK6u23。 从那时起,我们不能再使用工具jstack和jstat从运行进程中获取监控信息。 如果我们切换回JDK6u20,一切正常。 我们正在运行Tomcat 6.根据此论坛post,其他人也有同样的问题: http : //forums.oracle.com/forums/thread.jspa?threadID = 2151967&tstart = 0 运行简单的普通Java进程并使用这些工具。 Jstack说:无法打开套接字文件:目标进程没有响应或未加载HotSpot VM当目标进程没有响应时,可以使用-F选项。 Jstat说:找不到19799 使用Jps根本不显示正在运行的进程,所以我猜这个问题更多是JDK6u23和JDK6u24的一般性质。 它有一个新的热点引擎。 也许某些东西不能与Tomcat和Hotspot v19一起使用。 任何想法? 感谢帮助。 PS当然,我们以同一个用户身份运行它,我们没有改变任何其他内容。 只有JDK。

如何解释Java线程堆栈?

符合这个问题: 如何获得线程的堆栈跟踪 我想知道是否有人可以指出有关解释用jstack提取的Java线程堆栈的信息。 我的情况是我在GlassFish v2.1.1上运行的Java EE 5应用程序定期挂起(每天至少2-3次)。为了让它再次运行,我必须杀死Glassfish进程并再次启动域。 应用程序通常会变得越来越慢,直到它最终完全挂起。 一旦挂起,我就无法获得线程堆栈。 我已经能够获得一个线程堆栈,因为它越来越慢,但我看不到找到问题或挂起的线程。 这是最新的线程转储: http : //issues.i2m.dk/attachments/66/threadstack.201103211046.txt 线程转储片段: “p: thread-pool-1; w: 20” daemon prio=10 tid=0x00007efd18843800 nid=0x5f89 in Object.wait() [0x00007efd03381000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) – waiting on (a com.sun.corba.ee.impl.orbutil.threadpool.WorkQueueImpl) at com.sun.corba.ee.impl.orbutil.threadpool.WorkQueueImpl.requestWork(WorkQueueImpl.java:171) – locked (a com.sun.corba.ee.impl.orbutil.threadpool.WorkQueueImpl) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528) “TP-Processor83” daemon prio=10 tid=0x0000000043179000 nid=0x5f87 runnable [0x00007efd03583000] java.lang.Thread.State: […]