Scala:以编程方式设置断点以供 IntelliJ 识别
Scala: Setting programatically a break-point to be recognized by IntelliJ
在 Visual Studio / C# 中,我可以轻松地以编程方式设置断点。 IntelliJ/Scala-Plugin 和 Scala 语言是否有类似的功能?
澄清一下:在 C# 中,您可以调用 API 函数
System.Diagnostics.Debugger.Break();
然后 VS 中的调试器像在 IDE 中设置的任何断点一样停止。
我不知道有这样的功能,但在任何编程环境中,您都可以使用临时解决方案:只需定义一个方法 debugBreak
,向其添加断点,然后使用它。例如:
def debugBreak() {
println("Breakpoint hit!") // Manually set a breakpoint here
}
//.... then somwhere in your code base
if (<<some condition>>) {
debugBreak
}
就是这样。每次满足条件时,调试器将停止,您只需要向上堆栈一帧。
顺便说一句,大多数时候更好更简单的解决方案是在 IntelliJ 中设置一个条件断点(本质上是将您的条件表达式粘贴到 "condition" 字段中)。参见 https://www.jetbrains.com/idea/help/configuring-breakpoints.html。
然而,有时 IntelliJ 无法评估您的表达式,因此在这些情况下,上述临时解决方案是一个有用的替代方案。
在 Visual Studio / C# 中,我可以轻松地以编程方式设置断点。 IntelliJ/Scala-Plugin 和 Scala 语言是否有类似的功能?
澄清一下:在 C# 中,您可以调用 API 函数
System.Diagnostics.Debugger.Break();
然后 VS 中的调试器像在 IDE 中设置的任何断点一样停止。
我不知道有这样的功能,但在任何编程环境中,您都可以使用临时解决方案:只需定义一个方法 debugBreak
,向其添加断点,然后使用它。例如:
def debugBreak() {
println("Breakpoint hit!") // Manually set a breakpoint here
}
//.... then somwhere in your code base
if (<<some condition>>) {
debugBreak
}
就是这样。每次满足条件时,调试器将停止,您只需要向上堆栈一帧。
顺便说一句,大多数时候更好更简单的解决方案是在 IntelliJ 中设置一个条件断点(本质上是将您的条件表达式粘贴到 "condition" 字段中)。参见 https://www.jetbrains.com/idea/help/configuring-breakpoints.html。
然而,有时 IntelliJ 无法评估您的表达式,因此在这些情况下,上述临时解决方案是一个有用的替代方案。