Tag: 调试

如何使用Eclipse在Java中调试死锁

可以使用哪些技术来调试Java程序中看似死锁的内容。 我的IDE是Eclipse,我想我已经识别出两个死锁的线程。 在调试器中,右键单击任何有问题的线程并选择suspend挂起线程并显示当前正在执行的代码。 尝试步入或跳过行问题似乎没有效果 – 线程状态更改为“Stepping”,控件永远不会返回调试器,除非再次单击suspend。 谢谢

如何在没有源的情况下将断点放在课堂上?

我有一个Web应用程序,我需要找到访问http请求对象的所有类(因为其中一个导致很难找到bug)。 因此我想在ServletRequest实现的一些方法中加入断点。 然而,这个实现由Weblogic提供,我没有源代码。 如何在没有源的情况下在特定方法中的任何地方放置断点。 Eclipse IDE是首选。

如何使用eclipse调试JSP tomcat服务?

我想使用Eclipse IDE调试器调试我单独运行的JSP / Struts / Tomcat / Hibernate应用程序堆栈。 如何设置java JVM和eclipse以便我可以设置断点,监视变量值,并查看当前正在执行的代码?

Netbeans Java Debugger声称((true && false)== true)

我刚遇到的东西违背了我对逻辑的理解。 下面的情况如何发生? 我已经尝试了所有常用的方法来解决这个问题; 清理/构建,重新启动netbeans等,但问题仍然存在。 无论我做什么,变量都是真的。 我甚至分别用true和false布尔值替换了left和right ,但没有改变。 什么工作,是变量的重构重命名,但当我把它改回原来,问题重新浮出水面。 没有以相同方式命名的类成员。 这是怎么回事? 我是否最终失去理智,或者该变量的值是否为false ? 这是Windows上的Netbeans 7.3.1。 Edit01 当我在一周左右的时间内访问我的工作计算机时,我会尝试向不信的人certificate这是实际发生的事情。 同时,请接受我的话。 这不是一个恶意,也不是因为我缺乏Netbeans调试知识而发生的。 我记得在发生这种情况之前做了一堆svn switch-to-copy命令,但是对于这段代码所在的项目(依赖项)却没有。 无论如何,干净/构建应该注意任何不一致。 我也不记得清除Netbeans缓存了,我现在后悔了。 Edit02 仇恨会讨厌,但正如我担心的那样,在回到我的工作站后,我再也无法重现这个问题了。 我很生气地承认这一点,但我没有证据certificate这件事曾经发生过。 我所做的就是:从hibernate状态唤醒我的电脑,解除我的变量的重构重命名,这是我在完成工作之前做的最后一件事,一个干净/构建,然后是另一个调试运行。 一切都只是……工作。

如何设置Eclipse以阻止exception发生?

如何设置Eclipse以在发生exception时停止。 我有一个Eclipse断点设置来打破exception。 在下面的代码示例中,我遇到的问题是Eclipse尝试打开Integer源代码。 有没有办法让我的代码示例中显示的调试器中断? 如果我向下移动堆栈跟踪,我将到达这一行,如果有一种方法可以在没有“Source not found”窗口的情况下执行此操作,那就太好了。 这可以在Visual Studio中完成,所以它让我疯狂,无法在Eclipse中找到这样做的方法。 package com.test; public class QuickTest { public static void main(String[] args) { try { test(); } catch(NumberFormatException e) { System.out.println(e.getMessage()); } } private static void test() { String str = “notAnumber”; Integer.parseInt(str);//<—-I want debugger to stop here } }

对于流行的Java库,“附加源”是否更容易?

当我的调试器进入某个没有相应源的类文件时,我遇到了这个障碍。 找到它通常很困难: 您必须搜索托管相应项目的站点,并找到其“下载源”页面(例如,上次我搜索JPA API时,我花了几个小时来获取源代码)。 或者,您可能需要从版本控制中检出。 您需要知道您使用的确切版本。 否则调试器可能会进入注释和空行:) 包装源代码没有惯例 – 有些项目将它包含在jar本身中; 一些提供单独的zip文件; 其他人把它放在zip中的src/子文件夹中。 我知道Maven有能力从其存储库下载源代码,并在生成IDE配置文件时将其包含在src路径中。 但Maven的回购在内容方面很差 – 很少有lib实际上已经上传了他们的源代码。 为什么它可以直截了当地变得如此复杂? 我们可以有一些中央存储库,它将类文件(或其散列)与从中编译的源文件(或其链接)相关联。 也许是一个相当庞大的回购,但结构简单。 IDE插件可以查询它以自动获取所需内容。 你们,伙计们,经历过同样的经历吗? 你如何获得附加的来源?

IntelliJ调试:暂停整个VM然后单步执行

我正在调试一个有很multithreading的应用程序。 我的断点设置为暂停整个VM。 当一个线程遇到其中一个断点时,我想要使用Step Over。 但这似乎恢复了整个VM,直到该步骤完成。 如果我可以仅仅执行到达断点的单个线程,那将非常有用。 有没有办法在IntelliJ 11.1 / Java 6中执行此操作? (希望我不会错过任何明显的东西……)

通过在eclipse中设置断点来调试ServletContextListener.contextDestroyed()

我实现了一个自定义的ServletContextListener ,并将断点放在contextInitialized()和contextDestroyed() 。 使用WTP启动Web应用程序时,调试器可以停止contextInitialized() 。 但是当我关闭Web应用程序时, contextDestroyed()的断点不起作用,Web应用程序就会关闭。 是否有可能以及如何使用调试器来调试eclipse中的contextDestroyed() ? 我想检查在关闭Web应用程序期间是否可以正确释放所使用的资源。

在Java调试器中,如何忽略从不通过我的代码的exception

我目前正在使用IntelliJ IDEA进行Java开发,但我也对针对其他IDE或调试Java代码的一般概念的答案感兴趣。 因为这是我在许多IDE中遗漏的function,所以我不确定在从其他语言转移调试习惯时是否错过了工作流程概念。 假设我在myapp.*编写了一些代码myapp.*使用somelib.*框架类somelib.* 。 典型的堆栈跟踪可以从任一包开始,并且可以在它们之间切换多次。 我们也说我在假设我的代码中存在错误并且库代码中没有任何错误的情况下进行调试。 示例堆栈跟踪(仅显示类名称): somelib.D (current stack frame) somelib.C myapp.Y myapp.X somelib.B somelib.A 通常,我对以下类型的exception不感兴趣,并且不希望调试器打破它们: 在somelib.B抛出并在somelib.B捕获。 库代码抛出exception以处理库内的有问题状态或停止应用程序。 在后一种情况下,我只对exception消息感兴趣,希望告诉我什么是错的。 在somelib.D抛出并在somelib.D捕获。 库代码可以使用exception作为逻辑forms,其中尝试某个动作,并且在出现问题时采用替代路径,或者通过其他方式通过问题通知我的代码(例如,在适当的情况下返回空引用) 。 我感兴趣的例外类型: 在somelib.C或somelib.D抛出,而不是在somelib.C或somelib.D 。 在这里,我希望调试器在myapp.Y中断行,我从somelib.C调用代码。 在myapp.X或myapp.Y抛出,无论是捕获还是未捕获。 在这里,我希望调试器在引发exception的行中断。 IntelliJ IDEA为我提供了选择我想要在捕获或未捕获的exception或两者上中断的选项,并限制将exception抛出到一组类的位置。 这些选项并没有多大帮助,因为我通常想要打破任何exception,无论是抓住还是未捕获,只要我写的代码介于它被抛出的位置和它最终被捕获的位置之间 。

如何将控制台输入传递给正在运行的Java程序而不是jdb?

使用Java的jdb调试我的代码。 我停留在我的程序期望命令行输入的位置,但是jdb将其作为jdb命令拦截。 如何告诉jdb将文本传递给正在运行的程序? 版: C:\Documents and Settings\*snip*>java -showversion java version “1.6.0_17” Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing) 编译: javac -g LZWDecompress.java jdb.ini: stop in LZWDecompress.decompress run monitor list 这是发生的事情: Initializing jdb … *** Reading commands from C:\Documents and Settings\*snip*\jdb.ini Deferring breakpoint LZWDecompress.decompress. It will be set […]