如何在F#interactive中使用断点?

boh*_*nko 18 debugging f# breakpoints f#-interactive

我已经开始使用VS2010和F#interactive研究算法中的一些想法.

所以,我创建了一个DebugScript.fsx,我在那里写了一些代码并最终将它发送给F#Int进行测试.

在某些时候我需要抓住一个bug.但即使在一个简单的for循环中,我也无法设置断点:

for i in stringarray do
    printfn "%s" i
Run Code Online (Sandbox Code Playgroud)

当我按F9设置断点时,VS会显示一个带有警告标志的红色圆圈.它的提示是"断点当前不会被击中".

当然,我确实打开了Debug菜单 - > Attach to process ... - > Fsi.exe

我尝试Debugger.Break()在循环内部放置,但这是调试器停止的唯一行,这使我无法继续在循环内部调试行.我也没有任何局部变量:(

也许我错过了一些明显的东西?

Mos*_*ini 13

在VS2015中现在要简单得多:在工具 - >选项 - > F#工具 - > F#interactive-> Debugging - > Enable script debugging = True

然后重置您的交互式会话,当您想要调试按CTRL + ALT + D并像往常一样发送命令

(或右键单击源文件并选择"在交互式调试")


Dir*_*irk 12

您无法调试作为脚本一部分的代码,但您可以通过将调试器附加到Fsi.exe进程来调试脚本中引用的外部代码.因此,如果您真的想从交互式窗口进行调试而不想编写控制台程序,则可以使用要调试的函数创建一个fs文件,并且:

  1. 附加调试器

    • 用#load(*)引用fs文件
    • 将代码编译为库并使用#r引用生成的DLL
  2. 设置断点

  3. 从脚本调用该函数

(*)在我的VS Ultimate安装上工作,但我无法在VS Shell安装的另一台机器上重现


kvb*_*kvb 2

据我所知,没有办法做到这一点。相反,您需要使用 .fs 文件并开始在 Visual Studio 中调试它。