我使用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。
感谢您的任何指示。
答案 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键”。这会将程序控制从当前行传递到下一个可执行代码行。