views:

92

answers:

3

I've started researching some ideas in algorithms using VS2010 and F# interactive.

So, I've created a DebugScript.fsx, I write some code there and eventually send it to F#Int to test it.

At some some moment I need to catch a bug. But I can't place a breakpoint even in a simple for loop:

for i in stringarray do
    printfn "%s" i

When I press F9 to set a breakpoint, the VS show a red circle with a warning sign. The hint for it is "The breakpoint will not currently be hit".

Surely, I did open Debug menu -> Attach to process ... -> Fsi.exe previously

I tried placing Debugger.Break() inside the loop, but that's the only line where debugger stops, giving me no option to proceed with debugging lines inside the loop. I also don't have any local variables available :(

Maybe I'm missing something obvious?

+1  A: 

As far as I know, there's no way to do this. Instead, you'll want to use a .fs file and start debugging it in Visual Studio instead.

kvb
+2  A: 

In addition to kvb's answer: One could say that F# Interactive is already a type of debugger. You can feed code line by line (or region by region) and see intermediate results. You can also inspect the value of bindings just by evaluating them in the F# Interactive console.

wmeyer
A: 

the interactive is for feeding it small pieces of code and evaluating intermediate results, think of it as micro-unit testing. i've had some success with using nunit with f#, it's no different than with c#, you decorate your testfixture and test cases in the same way and it will load up. i did have some issues with mixed-mode assemblies where nunit would barf, but overall, it's a better way imho to test a piece of code. also, i did not see a way to send a namespace to interactive, only modules.

Alex