【问题标题】:Problems with F# callstack in Visual StudioVisual Studio 中的 F# 调用堆栈问题
【发布时间】:2017-01-08 17:54:56
【问题描述】:

在 VS 2015 中 F# 调试器似乎无法正常工作。让我在简单的控制台程序上进行说明:

let f1 =
    printf "hello 1" 
    printf "hello 2" //1

[<EntryPoint>]
let main argv = 
    f1 //2
    0

我在 //1 和 //2 行设置断点并启动调试器。

第一个被击中的 BP 是 //1 而它应该是 //2。这是为什么呢?

此时我也无法导航到调用堆栈的最顶层。 IE。当我双击调用堆栈条目时,它应该导航到第 //2 行 VS 告诉我“源不可用”。这是为什么呢?

这两个问题并没有阻止我调试,但还是让我很不开心。

【问题讨论】:

标签: f# visual-studio-debugging


【解决方案1】:

第一个被击中的 BP 是 //1 而它应该是 //2。这是为什么呢?

f1 不是一个函数,它是一个单位类型的值。所以它的值将在main 被调用之前被构造。您会注意到,如果您多次调用f1,它只会打印一次,因为该值已被初始化。如果您将f1 更改为:

let f1() = //etc

然后它会按照你的预期运行。

我怀疑您的调用堆栈问题是因为您希望在 f1 的初始化程序之前调用 main,这是不正确的。

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 2010-11-09
    • 2012-05-15
    • 2012-07-24
    • 2016-10-06
    • 2011-09-16
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多