7

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

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

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

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

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

PS:我在这里看到一些帖子说 BP 没有被击中,但就我而言,我无法放置 BP!

PPS:我在尝试 1.6.0_18 之前尝试了 JDK 1.6.0_16。

感谢您的任何指示。

4

8 回答 8

4

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

于 2010-03-15T09:55:41.947 回答
2

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

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

于 2010-03-10T09:21:11.560 回答
2

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

于 2014-09-29T20:02:59.917 回答
1

Use a plugin called Jadclipse to decompile the jar in runtime, place the breakpoint at the point where the JAR method is invoked, then press F6 and you should be able to go into your JAR method.

于 2010-03-19T06:19:23.593 回答
1

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

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

于 2010-03-17T15:17:24.767 回答
1

我知道 Eclipse 中的一个错误,其中断点不适用于特定版本的 jdk 1.6.x 有关更多信息,请查看此处

于 2010-03-18T15:30:36.140 回答
0

只需简单刷新 .jar 文件就可以了。

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

刷新后,“与编辑器链接”工作,我能够放置断点。

如果有人可以解释这种行为,那将会很有帮助。

于 2016-03-17T11:39:47.467 回答
-3

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

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

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

这将在程序遇到断点时停止执行。

Step3:切换到调试视角

在 Eclipse 中,选择 Window –>Open Perspective –> Debug

Step4:在调试模式下运行

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

现在程序开始在调试模式下运行,您会看到线程的状态为“正在运行”</p>

当程序遇到断点时,线程的状态从“正在运行”变为“暂停”</p>

Step5:使用 Expressions\Watch variables\Inspect 调试代码

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

Step6:使用F6键进入方法

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

于 2013-04-20T06:10:35.307 回答