调试器仅在断点处停止,不会“跨过”执行。

8

我正在尝试调试我从源代码构建的代码。 它是使用谭牛包装器启动的。

我正在IntelliJ idea中进行调试,但我不确定那是否是问题所在。

调试器正确地停在我放置断点的所有行,但从未在其他地方停止,因此F8,“步过”无法工作。非常繁琐,因为我必须无处不在地设置断点:)

我做错了什么吗?


4
没有“abviously”这个词:) 抱歉。是的,我原来想说“step over”,现在已经更正了。通常,“step over”可以让你跳到下一行即将执行的代码,但会跳过方法调用,而“step into”则会进入方法(如果当前行有方法调用)。 - Andreas Wederbrand
可能是个愚蠢的问题,但还是问一下……你能检查一下当前使用的键映射是 IntelliJ 还是 Eclipse 吗? - Ashutosh Jindal
它是IntelliJ,一直都是。 - Andreas Wederbrand
嘿,Andreas,我遇到了同样的问题。你真的解决了吗? - eduardohl
没有。这种情况已经有一段时间没有发生了,但我从未解决过它。 - Andreas Wederbrand
显示剩余3条评论
6个回答

2

确保您的类路径上没有与项目中相同的不同jar包,其中包含相同的类。否则,您可能正在编译的类和源代码中设置"断点"。


这是一个很好的答案,对于我的症状非常准确。不知何故,我的一个项目的JAR包和项目源代码都被添加到了类路径中。 - markdsievers

2

如何构建项目?如果你使用Ant或其他工具来构建项目,请确保启用了调试信息(Ant javac任务的debug=true)。在构建过程中进行混淆和字节码插装也会影响调试的可能性。如果你在某些非标准JVM下运行,也可能导致这种问题。

在执行远程调试时,请确保目标进程使用IntelliJ IDEA远程调试配置中建议的正确JVM选项启动。你的包装器配置可能会不正确地传递它们。


如果没有使用debug=true来构建,调试器是否能够在断点处停止? - Andreas Wederbrand
是的,即使没有调试信息,断点停止也可以工作。步进也应该可以工作,但建议确保它已启用。 - CrazyCoder
我已经检查了build.xml文件并启用了调试模式。我还检查了JVM选项,它们是相同的。 - Andreas Wederbrand
尝试准备一个小的隔离项目来重现这种行为。 - CrazyCoder

0

我也遇到了同样的问题。以下方法适用于我:

删除Intellij的设置 Windows用户:C:\Users{username}.IntelliJIdea14 这将使Intellij回到初始状态。


0
这对我有用: http://devnet.jetbrains.com/thread/267022。基本上,类路径中还有另一个库与调试器冲突。只需在调试期间进入并找出是哪个库,然后在项目中找到并删除它即可。
在我的情况下,是一个自动生成的文件引起了混淆。

0

我也遇到过这个问题,在Eclipse(Mars)上。

重启Eclipse解决了它...就这么简单...


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接