【问题标题】:Scala: Setting programatically a break-point to be recognized by IntelliJScala:以编程方式设置断点以供 IntelliJ 识别
【发布时间】:2015-06-08 16:35:54
【问题描述】:

在 Visual Studio / C# 中,我可以轻松地以编程方式设置断点。 IntelliJ/Scala-Plugin 和 Scala 语言是否有任何类似的功能可用?

澄清一下:在 C# 中,您可以调用 API 函数

System.Diagnostics.Debugger.Break();

然后 VS 中的调试器像在 IDE 中设置的任何断点一样停止。

【问题讨论】:

  • Scala 使用与 java 使用 Intellij 相同的调试工具。 “以编程方式”是什么意思?
  • 我已将我的问题编辑得更具体

标签: scala debugging intellij-idea


【解决方案1】:

我不知道有这样的功能,但在任何编程环境中,您都可以使用临时解决方案:只需定义一个方法 debugBreak,为其添加一个断点,然后使用它。举例:

def debugBreak() {
  println("Breakpoint hit!") // Manually set a breakpoint here
}

//.... then somwhere in your code base
if (<<some condition>>) {
  debugBreak
}

就是这样。每次满足条件时,调试器都会停止,您只需上栈一帧即可。

顺便说一句,大多数情况下,更好、更简单的解决方案是在 IntelliJ 中设置一个条件断点(本质上是将条件表达式粘贴到“条件”字段中)。见https://www.jetbrains.com/idea/help/configuring-breakpoints.html

但有时 IntelliJ 无法评估您的表达式,因此在这些情况下,上述临时解决方案是一个有用的替代方案。

【讨论】:

  • 好的,我已经使用了那个解决方案,我认为可能有一个独特的 API 调用,比如 VS 可用。
  • 在带有Debugger.Break() 的VS 中,如果还没有附加调试器,则可以附加到进程。这是主要优势。 msdn.microsoft.com/en-us/library/…:“如果没有附加调试器,则会询问用户是否要附加调试器。如果用户说是,则启动调试器。如果附加了调试器,则使用用户断点事件向调试器发出信号,并且调试器暂停进程的执行,就像遇到了调试器断点一样。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
相关资源
最近更新 更多