IntelliJ调试器捕捉到了同名文件的错误文件

30

我在同一Maven项目的两个不同包package1package2中有两个同名文件。我在位于package1中的文件的i行添加了一个调试断点。但是在调试时,IntelliJ IDEA调试器会停在位于package2中的文件的第i行处。我和一些同事也遇到了这个问题。是否有关于IntelliJ的这种bug报告?是否有任何修复或解决方法?


1
很难相信。正如务实的程序员所说:“选择没有出错的代码”。在操作系统、编译器甚至第三方产品或库中很少发现错误,错误很可能存在于应用程序中。 - Tobias Otto
@Puneet Chaurasia,如果您正在调试的代码涉及包A和B中的两个文件,那么在这种情况下,您应该运行这两个文件。当您单击“查看断点”(两个红色灯泡)或在调试工具窗口上按Ctrl+Shift+F8时,会显示什么?您是否可以在这两个文件上看到断点? - Supun Wijerathne
@SupunWijerathne:调试器在B文件中的同一行号停止,而我已经在A文件中放了断点。即使该行上没有可执行代码,它仍会在那里停止。因此,我非常确定它正在执行正确的代码(正如应该的那样),但显示的调试控制点是错误的。 - Puneet Chaurasia
@PuneetChaurasia 非常奇怪。它怎么会在不执行代码的情况下停止?要么你误解了什么,要么出了大问题。顺便问一下,“查看断点”上有什么? - Supun Wijerathne
1
@SupunWijerathne 看起来在不同的模块中有一个相同名称的文件(具有相同的包名),调试器有时无法确定当前正在执行的文件。这似乎已经在后来更新的IntelliJIdea 2016中得到了修复。 - Puneet Chaurasia
现在是2023年,IntelliJ的bug依然存在。幸运的是我们可以选择另一个相似的源代码,但值得奇怪的是它无法在第一时间找到正确的文件。 - Piyush Soni
2个回答

57

您可以在设置 >> 构建、执行和部署 >> 调试器下开启显示备选源切换器标志。

勾选显示备选源切换器复选框,IntelliJ IDEA将允许您更改所需的文件。

现在,在调试时,IntelliJ IDEA应该提供其他选项以选择源文件。


嗨,我在eclipse中遇到了同样的问题,如果您也有答案,请提供。 - Suryaprakash Pisay
6
勾选了复选框,但找不到切换文件的地方 :-( - flyrain

2

补充一下已接受的答案,如果您已经勾选了该设置但是备选源切换器没有显示出来,我发现将该设置切换关闭再重新打开即可让切换器出现。在IDEA 2022.1版本中。


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