2010-03-10 83 views
7

我正在使用JDK 1.6.0_18(32位)在Windows Vista Home Premium 64位上使用eclipse europa(3.5)。无法在eclipse中放置断点

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

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

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

编辑:大家都理解上下文,这是一个在tomcat 6.0下运行的webapp。在远程启动tomcat之后,我正在远程调试eclipse的应用程序。该应用程序工作得很好。我试图理解上述类的行为,因为eclipse不让我设置BP,所以我无法做到这一点。 P:我在这里看到一些线程,谈到BP没有被击中,但在我的情况下,我无法放置BP!

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

感谢您的指点。

+0

您是否尝试从调用类中加入类?它显示了附带的源代码吗?不是一种解决方案,但可能有所帮 – josefx 2010-03-19 09:59:42

+0

josefx:这个类是使用Reflection调用的,在实际方法被击中之前需要很多HOP,我没有进入方法。 – anjanb 2010-03-19 13:41:25

回答

2

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

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

+0

hi richj, 感谢您的留言。当我尝试使用CTRL + SHIFT + T(打开类型)查找类时,我可以打开该特定类,并且Eclipse会显示我附加到.JAR的源。 尽管我可以将BP放在作为项目一部分的类上,但我无法将BP放在上面的类上。 – anjanb 2010-03-10 09:48:08

+0

这意味着该jar文件位于构建类路径上。运行时类路径不一定与构建类路径相同,但我承认这是一个漫长的过程,因为您通常需要主动将其更改为强制两个类路径不同。如果应用程序在不使用调试器时通过代码运行,那么问题必定有所不同。 – richj 2010-03-10 11:47:37

+0

在这种情况下,我会试图建立一个小型测试项目来尝试解决正在发生的事情。它只需要包含问题jar文件和一个包含一个或多个测试方法的小类。 – richj 2010-03-10 11:50:39

4

尝试看看你的配置基于Java>调试 - >步骤过滤 的某个时候启用,你不能停止过滤包

+0

未启用步骤过滤。 – anjanb 2010-03-19 08:18:40

1

里面虽然我已经连接源目录到这个.jar文件,我无法在这堂课中设置一个断点。

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

+0

嗨克里斯, 是的,我从源头编译了自己的jar。所以,我知道源目录和.JAR是同步的。 否则,这个.JAR是从多个项目准备的。它源目录具有下列结构 sourceDir 甲 有机 fcitmuk 分贝 乙 有机 fcitmuk epihandy Ç 有机 fcitmuk epihandy 的XForm d 有机 fcitmuk epihandy 任何线索? – anjanb 2010-03-19 08:14:32

1

我为了解在Eclipse中的错误,其中破发点,在不here

+1

谢谢。这是JDK 1.6.0_14中的一个问题,但在1.6.0_16中得到修复。我目前正在使用1.6.0_18,我有这个问题。有些东西告诉我,我已经忘记了一些东西,但不能放置它! :-( – anjanb 2010-03-19 13:46:54

1

使用一个名为Jadclipse插件与JDK 1.6.x的 特定版本的更多信息看工作,以反编译运行系统中的罐子,地点在调用JAR方法的地方的断点,然后按F6,你应该能够进入你的JAR方法。

+0

我有.JAR的源代码,所以在运行时不需要做JAD – anjanb 2010-03-19 08:21:43

+0

JAR是否从你已经连接的同一个源代码编译?这很关键,因为否则行号不匹配, – 2010-03-19 09:02:16

+1

当source和.JAR不同步时,eclipse的断点会变得很疯狂,而且我已经看到了这样的事情发生的更早,但是这次我不能在类中的任何地方设置一个BP,甚至没有一个BP。 – anjanb 2010-03-19 13:43:04

-1

第1步:切换/启用断点 在您要开始调试代码的位置的代码行或方法条目处设置断点。右键单击编辑器的左边距旁边的代码行和上下文菜单弹出。在上下文菜单中选择切换断点

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

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

这将停止执行时程序命中断点。

第三步:切换到调试透视

在Eclipse中,选择窗口 - >打开透视图 - >调试

第四步:在调试模式下运行

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

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

当程序到达断点的线程的状态发生变化,从“运行”为“暂停”

第五步:调试使用表达式\观察变量的代码\检查

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

第六步:使用F6键步入方法

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

+0

这个评论并没有回答OP问的一个问题。 – snowe 2014-07-09 21:42:33

2

当试图为.jsp页面添加断点时,事实证明该页面未使用JSP编辑器打开,从而导致无法设置断点。

0

只是.jar文件的一个简单的刷新奏效了我。

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

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

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