无法在日食中放置断点

时间:2010-03-10 09:15:02

标签: java eclipse debugging breakpoints jdk1.6

我使用JDK 1.6.0_18(32 BIT)在windows vista home premium 64位上使用eclipse europa(3.5)。

通常情况下,我可以把断点放得很好;但是,对于不属于项目的特定类(此类在.JAR文件中(.JAR文件是项目的一部分)),虽然我已将源目录附加到此.JAR文件,但我无法在这个班级中放置一个断点。

如果我双击断点窗格(左边框),我会注意到放置了一个类断点。我想知道是否没有调试信息;但是,发现这个特定类是使用debug =“true”和debuglevel =“lines,vars,source”使用ant / javac任务编译的。我甚至在这个类上运行jad以确认它确实包含调试信息。

那么,为什么eclipse阻止我放置断点?

编辑:只是让每个人都了解上下文,这是一个在tomcat 6.0下运行的webapp。我在外面启动tomcat后从eclipse远程调试应用程序。该应用程序工作正常。我试图理解上面这个类的行为,因为eclipse不让我设置BP,所以我无法做到。

P.S:我在这里看到一些线索谈论BP没有被击中但在我的情况下,我无法放置BP!

P.P.S:在尝试1.6.0_18之前我尝试过JDK 1.6.0_16。

感谢您的任何指示。

8 个答案:

答案 0 :(得分:4)

尝试查看您的配置Java-> debug->步骤过滤 有时它已启用,您无法在已过滤的包中停止

答案 1 :(得分:2)

听起来Eclipse无法在类路径中找到jar文件,尽管你确实说jar文件是项目的一部分。如果正常运行应用程序会发生什么?你得到ClassDefNotFoundException或类似的东西吗?

如果检查运行/调试配置上的选项卡,您应该能够在运行时查看类路径上的路径和jar文件。您还可以添加构建应用程序但不需要运行它的jar文件。

答案 2 :(得分:2)

当尝试为.jsp页面添加断点时,结果发现该页面未使用JSP编辑器打开,这阻止了断点的设置。

答案 3 :(得分:1)

  

虽然我已将源目录附加到此.JAR文件,但我无法在此类中放置断点。

你说“源目录”。你确定,它与用于编译jar的版本相同吗?如果您附加了不同的源代码版本,则行号可能不匹配,并且您的断点不会被击中。

答案 4 :(得分:1)

我知道eclipse中的一个错误,其中断点不适用于特定版本的jdk 1.6.x. 有关详细信息,请查看here

答案 5 :(得分:1)

使用一个名为Jadclipse的插件在运行时反编译jar,将断点放在调用JAR方法的位置,然后按F6,你应该可以进入你的JAR方法。

答案 6 :(得分:0)

只需简单刷新.jar文件就可以解决这个问题。

我能够在同一个包的所有其他类文件中放置断点,除了一个。我观察到的是,当我在编辑器中打开这个类文件并选择“Link with Editor”时,eclipse没有把我带到这个类文件本身,而只是带到这个类文件的包。

刷新后,“Link with Editor”工作,我可以放置断点。

如果有人能解释这种行为,那将会有所帮助。

答案 7 :(得分:-3)

步骤1:切换/启用断点 将断点设置在您希望开始调试代码的代码行或方法入口点。右键单击代码行旁边编辑器的左边距,弹出上下文菜单。在上下文菜单中选择切换断点

步骤2:配置断点以停止执行 要开始调试,执行应该在指定的断点处停止。为此,单击断点属性并执行以下操作:

1. Check Hit count
2. Specify value as 1
3. Select “Suspend thread” option

当程序到达断点时,这将停止执行。

第3步:切换到调试视角

在Eclipse中,选择Window - > Open Perspective - >调试

步骤4:以调试模式运行

现在以调试模式运行程序。选择运行 - >调试

现在程序开始以调试模式运行,你会看到线程的状态为“正在运行”

当程序到达断点时,线程的状态从“正在运行”变为“暂停”

步骤5:使用Expressions \ Watch variables \ Inspect

调试代码

现在代码在断点处停止。您可以使用监视变量/表达式来监视调试变量的当前值。 假设您在名为“counter”的变量处设置断点,并且程序在计数器变量处停止 添加变量名称为“counter”的表达式,允许您在执行程序时监视变量的值 您也可以右键单击计数器变量,然后从上下文菜单中选择“检查” 如果是方法,则选择方法名称并单击“Step Into Selection”。这将允许您逐行监视或调试方法执行。

步骤6:使用F6键进入方法

要“进入”当前方法中的下一个可执行代码行,请按“F6键”。这会将程序控制从当前行传递到下一个可执行代码行。