考虑一下:
let hank = "hank"
let bill = "bill"
printfn "%A" hank // for breakpoint
现在,如果我在VS2015中设置条件断点,条件为“hank = bill”(假设F#表达式),我收到以下错误:
断点的条件无法执行。条件是 'hank = bill'。返回的错误是'断点条件必须 求值为布尔运算'。
当条件是“hank == bill”(也许尝试C#表达式?)时,错误是:
断点的条件无法执行。条件是 'hank == bill'。返回的错误是'运行时已拒绝 此时评估表达式。'。
答案 0 :(得分:4)
调试器对断点中的条件使用C#语法(据我所知,在Visual Studio的所有F#版本中),因此要使用的表达式是hank == bill
。我确实在F#和VS 2015中使用了条件断点 - 对可能有用的东西有各种各样的想法:
我认为当你做太多事情时,调试器有时会开始表现得很奇怪。您是否尝试在重新启动调试器后以第二种方式设置断点?
有时,在let
上立即设置断点有点奇怪(编译后的代码首先将变量初始化为defaultof<'T>
)。您可以尝试添加一些像printfn "test"
这样的无操作语句并在其上设置条件断点吗?