我正在努力拍摄JUnit。在源代码中,我在两个地方设置了断点:1)在一行中初始化静态成员2)其中一个测试用例的第一行。
调试器在静态字段初始化行中停止。但它并没有停留在测试用例中。无论我在测试用例中设置断点,调试器都不会停在那里。我确信测试用例已经执行,因为我可以看到我添加的日志消息出现在日志中。
非常感谢任何帮助。
我正在使用Eclipse Galileo和JUnit4启动器。
答案 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)
答案 12 :(得分:0)
答案 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)
如果什么都不起作用 -
答案 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 配置中,如下所示:
注意:该地址是我在Apache .conf 文件中配置的地址。
注意:唯一正在运行的断点是“第一行中断”,之后断点不起作用。
注意:检查 php.ini 文件中的 xdebug 属性,并删除您认为不需要的任何属性。