visual usuario todos studio simbolo quitar puntos punto puede por pero ningun los interrupción interrupcion establecidos establecer enlazados detecto definido codigo cargado aun actualmente activará debugging f# breakpoints f#-interactive

debugging - usuario - ¿Cómo uso los puntos de interrupción en F#interactivo?



puntos de interrupcion establecidos pero no enlazados aun (5)

Comencé a investigar algunas ideas en algoritmos utilizando VS2010 y F # interactivo.

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

En algún momento necesito atrapar un error. Pero no puedo colocar un punto de interrupción ni siquiera en un bucle for simple:

for i in stringarray do printfn "%s" i

Cuando presiono F9 para establecer un punto de interrupción, los VS muestran un círculo rojo con una señal de advertencia. La pista para ello es "El punto de interrupción no será alcanzado actualmente".

Seguramente, abrí el menú Depurar -> Adjuntar al proceso ... -> Fsi.exe anteriormente

Intenté colocar Debugger.Break() dentro del bucle, pero esa es la única línea donde se detiene el depurador, sin darme ninguna opción para continuar con las líneas de depuración dentro del bucle. Tampoco tengo ninguna variable local disponible :(

Tal vez me esté perdiendo algo obvio?


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


No puede depurar el código que forma 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 que describe. Entonces, si realmente desea depurar desde la ventana interactiva sin querer escribir un programa de consola, puede crear un archivo fs con la función para depurar y:

  1. Adjuntar el depurador

  2. Ya sea

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

  4. Llama a la función desde un script

(*) trabajé en mi instalación de VS Ultimate, pero no he podido reproducir en otra máquina con la instalación de VS Shell


Que yo sepa, no hay manera de hacer esto. En su lugar, querrá usar un archivo .fs y comenzar a depurarlo en Visual Studio.


el interactivo es para alimentar pequeñas piezas de código y evaluar resultados intermedios, piense en ello como pruebas de microunidades. He tenido cierto éxito con el uso de nunit con f #, no es diferente que con c #, decoras tu solución de prueba y los casos de prueba de la misma manera y se cargará. Tuve algunos problemas con los ensamblajes de modo mixto donde la Nunit solía vomitar, 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 módulos.


en VS2015 ahora es mucho más fácil: en Herramientas-> Opción-> F # herramientas -> F # interactivo-> Depuración -> Habilitar depuración de script = Verdadero

luego reinicie su sesión interactiva y cuando desee depurar presione CTRL + ALT + D y envíe el comando como de costumbre

(o haga clic con el botón derecho en el archivo de origen y elija "depurar en interactivo")