2010-09-06 17 views
16

Comencé a investigar algunas ideas en algoritmos usando VS2010 y F # interactive.¿Cómo uso los puntos de interrupción en F # interactivo?

Así que, he creado un DebugScript.fsx, escribo un código allí y eventualmente lo envío a F # Int para probarlo.

En algún momento necesito detectar un error. Pero no puedo poner un punto de interrupción, incluso en un simple bucle for:

for i in stringarray do 
    printfn "%s" i 

Al pulsar F9 para establecer un punto de interrupción, el VS muestran un círculo rojo con una señal de advertencia. La sugerencia es "El punto de interrupción no será golpeado".

Seguramente, menú Depurar abierta Yo -> conectar con el proceso ... -> Fsi.exe previamente

He intentado colocar Debugger.Break() dentro del bucle, pero eso es la única línea en la que se detiene el depurador, y me da ninguna opción para proceder con las líneas de depuración dentro del ciclo. Asimismo, no tengo ninguna de las variables locales disponibles :(

Tal vez me estoy perdiendo algo obvio?

+0

'Debugger.Break()' obras para mi –

Respuesta

2

Por lo que yo sé, no hay manera de hacer esto. En su lugar, tendrá que utilizar una El archivo .fs y comienza a depurarlo en Visual Studio en su lugar.

1

Además de la respuesta de kvb: Uno podría decir que F # Interactive ya es un tipo de depurador. Puede alimentar código línea por línea (o región por región) y ver resultados intermedios. También puede inspeccionar el valor de los enlaces simplemente evaluándolos en la consola interactiva F #

0

el interactivo i s para alimentarlo con pequeños fragmentos de código y evaluar los resultados intermedios; piense en ello como una prueba de microunidades. He tenido cierto éxito con el uso de nunit con f #, no es diferente de C#, decora tu caso de prueba y prueba casos de la misma manera y se cargará. Tuve algunos problemas con ensamblajes de modo mixto en los que nunit podría fallar, pero en general, es una mejor manera de probar un código. Además, no vi una forma de enviar un espacio de nombres a módulos interactivos, solo.

11

No puede depurar el código que es parte de sus scripts, pero puede depurar el código externo al que se hace referencia en sus scripts adjuntando el depurador al proceso Fsi.exe como usted describe. Así que si realmente desea depurar desde la ventana interactiva sin querer escribir un programa de consola, puede crear un archivo de fs con la función de depurar y:

  1. Fije el depurador

  2. De cualquier

    • referencia el archivo fs con #load (*)
    • compilar el código como una biblioteca y hacen referencia a la DLL resultante con #r
  3. Establecer un punto de interrupción

  4. Llame a la función de un guión

(*) trabajaron en mi instalación de VS último, pero no he sido capaz de reproducir en otro equipo, con el VS Shell instalar

8

en VS2015 es ahora mucho más fácil: en Herramientas-> opción-> F # herramientas -> F # interactive-> depuración -> Habilitar la depuración de scripts = True

luego restablecer su interactiva se sión y cuando desea depurar presione CTRL + ALT + D y enviar comandos como de costumbre

(o clic derecho en el archivo de origen y elija "depuración en interactiva")

Cuestiones relacionadas