【问题标题】:How to set conditional breakpoint while debugging F# in Visual Studio如何在 Visual Studio 中调试 F# 时设置条件断点
【发布时间】:2016-12-12 21:35:19
【问题描述】:

考虑一下:

let hank = "hank"
let bill = "bill"
printfn "%A" hank  // for breakpoint

现在,如果我在 VS2015 中设置条件断点,条件为“hank = bill”(假设 F# 表达式),我会收到以下错误:

断点的条件未能执行。条件是 '汉克 = 比尔'。返回的错误是'断点条件必须 评估为布尔运算'。

当条件是“hank == bill”时(也许试试 C# 表达式?)错误是:

断点的条件未能执行。条件是 '汉克 == 比尔'。返回的错误是“运行时拒绝 此时计算表达式。'。

【问题讨论】:

  • 没用过VS2015,但在早期版本中你会使用C#语法。
  • 在 VS 2015 中同样有效。监视和断点条件使用 C# 语法

标签: visual-studio-2015 f#


【解决方案1】:

调试器对断点中的条件使用 C# 语法(据我所知,在 Visual Studio 中的所有 F# 版本中),因此要使用的表达式是 hank == bill。我当然在 VS 2015 中使用了 F# 中的条件断点 - 关于可能有帮助的一些想法:

  • 我认为当您执行太多操作时,调试器有时会开始表现异常。重新启动调试器后是否尝试以第二种方式设置断点?

  • 有时,在let 上立即设置断点有点奇怪(编译后的代码首先将变量初始化为defaultof<'T>)。你可以尝试添加一些像printfn "test" 这样的无操作语句并在其上设置条件断点吗?

【讨论】:

  • 没什么奇怪的;使用这个作为孤立的例子,是一致的,已经重新启动了 VS 等。已经在 let 语句之后的 printfn 行上设置断点(澄清了我的示例)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2020-11-22
  • 2011-01-16
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多