是否可以在没有断点的情况下调试运行中的java进程(使用Eclipse / IntelliJ)?当有这样的构造时,获取对象的状态是有用的:
double d = Math.random();
BlockingQueue<String> queue = new LinkedBlockingQueue<String>();
queue.take();“get ()”将永远阻塞,并且在调用get()之后,我希望通过调试器获得d的值。
发布于 2015-07-07 10:20:25
刚刚注意到在中有一个暂停/挂起按钮。这是工作。
发布于 2015-07-06 13:52:05
I'd like to get the value of d with the debugger after take() was called
一个简单的解决方案是打印值。那么您根本不需要调试器。调试器在由于测试某些东西、在运行时检查某些对象等原因而更改数据时非常有用。
queue.take();
System.out.println(d);发布于 2015-07-06 13:53:33
在你的情况下,这不是选择。您可以使用的一个选项是取消编译包含BlockingQueue类的jar,将它们转换为源文件,将其包含在项目中,并在take()中设置断点以查看行为。
一个最好的反编译器是:
http://jd.benow.ca/
使用它,您可以看到take()函数的源代码,并复制整个类并将其粘贴到您的包中,名称为BlockingQueue.java,并按您的意愿粘贴整个源代码和调试。
https://stackoverflow.com/questions/31247536
复制相似问题