Eclipse - 调试器不会在断点处停止

时间:2009-09-03 00:30:36

标签: java eclipse debugging junit

我正在努力拍摄JUnit。在源代码中,我在两个地方设置了断点:1)在一行中初始化静态成员2)其中一个测试用例的第一行。

调试器在静态字段初始化行中停止。但它并没有停留在测试用例中。无论我在测试用例中设置断点,调试器都不会停在那里。我确信测试用例已经执行,因为我可以看到我添加的日志消息出现在日志中。

非常感谢任何帮助。

我正在使用Eclipse Galileo和JUnit4启动器。

22 个答案:

答案 0 :(得分:90)

修复可以像点击运行/跳过所有断点一样简单。为我工作。

答案 1 :(得分:50)

确保在“运行”>下如果适用于您的情况,则选择“在主要位置停止”的调试配置。

答案 2 :(得分:39)

这可能与JDK 6 Update 14, as indicated in the release notes for JDK 6 update 15中的一个错误有关。

如果这确实是问题所在,那么你应该转移到更高版本的JDK(但不能保证,因为fixes have been released against 6u16, 6u18 and 7b1)。最好的办法是使用-XX:+ UseParallelGC标志。增加最小和最大堆大小的大小,以延迟第一个GC,带来暂时的缓解。

顺便说一下,使用this bug report in Eclipse来跟踪其他人的表现。

答案 3 :(得分:19)

通常当我遇到这种情况时(很少见,但它确实)意味着正在执行的代码与编辑器中的代码不同。 Eclipse不时会发生内置类和编辑器中的代码不同步。当发生这种情况时,我会得到各种奇怪的调试器行为(调试空行,跳过代码行等)。

重新启动Eclipse,清理所有项目并重建所有项目通常可以解决问题。我还有Maven插件(旧版本......现在还没有用过一段时间),它也有这样做的倾向。

否则它可能是一个bug,也许是Vineet所说的,

希望这有帮助

答案 4 :(得分:17)

您可能不小心跳过了Eclipse工具栏中的所有断点。要解决这个问题,请访问Eclipse - >运行 - >跳过所有断点。

答案 5 :(得分:3)

项目 - >在JRE 8上,Clean似乎对我有用

答案 6 :(得分:2)

删除所有断点并重新添加它们。

答案 7 :(得分:1)

确保将包裹声明在顶部。 在我的groovy代码中,它在断点处停止:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

这不会在断点处停止:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

答案 8 :(得分:1)

发生在我身上的一次,当我取消选中“自动运行>自动生成”并忘记重新检查时。

答案 9 :(得分:1)

为了使用remote调试工作,必须将java .class文件与调试信息一起编译。如果将“ -g:none ”选项传递给编译器,则类文件将没有必要的信息,因此调试器将无法将源代码上的断点与远程中的该类匹配。同时,如果jar / class文件模糊,那么它们也没有任何调试信息。根据您的回复,很可能这不是您的情况,但这些信息可能对面临同样问题的其他人有用。

答案 10 :(得分:1)

对于JDK7,运行 - >调试配置,请选中“在调试时运行测试后保持JUnit运行”。

答案 11 :(得分:1)

就我而言,问题是我没有在Debug透视图中打开Debug视图,所以:

1 - 确保已打开调试透视图:

eclipse debugger not working 1

2 - 确保已打开调试视图:

eclipse debugger not working 2

答案 12 :(得分:0)

To remove the breakpoints

  1. 将您的课程调试为junit考试
  2. 当调试器停止时,单击“变量”和“表达式”旁边的“断点”选项卡
  3. 在断点选项卡的右上角,单击带有两个“X”
  4. 的按钮
  5. 停止测试,更换断点并再次运行调试器

答案 13 :(得分:0)

有关Vineet Reynolds回答的另外一条评论。

我发现我必须在-XX:+UseParallelGC

中设置eclipse.ini

我按如下方式设置虚拟机(vm)参数

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

解决了这个问题。

答案 14 :(得分:0)

如果什么都不起作用 -

  1. 删除远程/本地调试配置,并创建一个新配置。
  2. 在调试配置中添加源。

答案 15 :(得分:0)

同时验证其他行上的断点是否有效,这可能是调试器中的错误。我在Eclipse调试器上遇到了一个问题,其中在一个布尔赋值中放置一个断点,其代码在下一行不起作用I reported this here,但将它放在上一行或下一行上。

答案 16 :(得分:0)

另一个可能的问题是防火墙可能阻止调试器端口。例如,我正在使用mule anypoint studio(v 5.4.3)。默认调试器端口为6666.执行流时,它不会在断点处停止。当我将端口更改为另一个端口(例如8099)时,它工作正常。

答案 17 :(得分:0)

转到Right click->Debug Configuration并检查是否创建了太多调试实例。 当我从配置中删除多个调试实例并重新开始调试时,我的问题得到了解决。

答案 18 :(得分:0)

如果你在Eclipse上,

右键单击“Package Explorer”下的项目文件夹。

转到来源 - >清理并选择您的项目。

这将清除任何混乱,你的断点现在应该有效。

答案 19 :(得分:0)

创建一个新工作区对我有用。

答案 20 :(得分:0)

在我的情况下,我在同一工作区中有多个项目。我试图调试的java文件存在于多个具有相同包的项目中。

我不需要另一个项目,所以只需关闭不相关的项目(或从不相关的项目中删除文件)。

答案 21 :(得分:-2)

这对我有用:

我必须将我的本地服务器地址放在 PHP Server 配置中,如下所示:

enter image description here

注意:该地址是我在Apache .conf 文件中配置的地址。

注意:唯一正在运行的断点是“第一行中断”,之后断点不起作用。

注意:检查 php.ini 文件中的 xdebug 属性,并删除您认为不需要的任何属性。