【发布时间】:2017-03-21 17:58:57
【问题描述】:
我正在使用 IntelliJ IDEA Ultimate 16.1.2 和 Scala 12。在 foreach 循环中设置断点时,它们不会被命中。
foreach 上方的断点工作并在断点(有效断点)中获取刻度,但 foreach 中的断点没有得到刻度,程序也不会在那里中断。
我尝试使 IntelliJ Cash 无效,重新启动我的 PC 和 IntelliJ,重建 maven - 没有任何效果。
这是我正在使用的 VM 参数,但我也尝试过没有任何参数,但没有帮助:
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Dcom.sun.management.jmxremote
-XX:StartFlightRecording=filename=recording.jfr
-server
-Xms1G
-Xmx4G
-XX:+UseG1GC
-XX:+UseStringDeduplication
感谢您的帮助!
这是我的代码:
class RunTestCasesAction extends AbstractAction {
def actionPerformed(e: ActionEvent) = {
val parent = methodToGetParentComponent() //breakpoint works
getFileName(parent).foreach { testFileName =>
val dialog = new SomeDialog() // breakpoint doesn't work
}
}
private def getFileName(parent: Component): Option[String] = {
val baseDir = getExportDir
val fc = new JFileChooser(baseDir)
val rc = fc.showDialog(null, "Select test file")
if (rc == JFileChooser.APPROVE_OPTION) Some(fc.getSelectedFile.toString) else None
}
【问题讨论】:
-
您确定,您没有在空集合上执行
foreach? -
你能举个例子吗?我在 Scala 2.12.1 的 main 方法中尝试了一个带有 for 循环的简单应用程序,它工作正常。
-
通过“将它们设置在 foreach 循环中”,您是指在
for { a<-b }部分内,还是在yield {...}部分内? -
@Rumid 是的,代码已执行但我无法中断
-
@JustinKaeser 我像这样在 aOption[String] 上执行 foreach
val foo:Option[String] = Some("bar")foo.foreach { s => ... }
标签: scala debugging intellij-idea foreach breakpoints