如何在Visual Studio中调试F#时设置条件断点

dud*_*er4 6 f# visual-studio-2015

考虑一下:

let hank = "hank"
let bill = "bill"
printfn "%A" hank  // for breakpoint
Run Code Online (Sandbox Code Playgroud)

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

断点的条件无法执行.条件是'hank = bill'.返回的错误是'断点条件必须求值为布尔运算'.

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

断点的条件无法执行.条件是'hank == bill'.返回的错误是'运行时此时拒绝评估表达式.'.

Tom*_*cek 4

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

  • 我认为当你做太多事情时,调试器有时会开始表现奇怪。重启调试器后是否尝试用第二种方式设置断点?

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