2010-09-06 2 views
16

Ho iniziato a ricercare alcune idee negli algoritmi che utilizzano VS2010 e F # interattivo.Come utilizzare i punti di interruzione in F # interattivo?

Così, ho creato un DebugScript.fsx, scrivo un po 'di codice lì e infine lo mando a F # Int per testarlo.

In qualche momento ho bisogno di catturare un bug. Ma non posso mettere un punto di interruzione, anche in una semplice for ciclo:

for i in stringarray do 
    printfn "%s" i 

Quando si preme F9 per impostare un punto di interruzione, il VS Mostra un cerchio rosso con un segnale di avvertimento. Il suggerimento è "Il punto di interruzione non verrà colpito al momento".

Sicuramente, ho aperto menu Debug -> Connetti a processo ... -> Fsi.exe precedenza

Ho provato mettendo Debugger.Break() all'interno del ciclo, ma questa è l'unica linea in cui debugger si ferma, che mi dà nessuna opzione per procedere con il debug delle linee all'interno del ciclo. Anche io non ho alcun variabili locali disponibili :(

forse mi manca qualcosa di ovvio?

+0

Debugger.Break) '' lavori (per me –

risposta

2

Per quanto ne so, non c'è modo per fare questo. Invece, ti consigliamo di utilizzare un file .fs e avviare il debugging in Visual Studio invece

1

Oltre alla risposta di kvb: si potrebbe dire che F # Interactive è già un tipo di debugger. È possibile alimentare il codice riga per riga (o regione per regione) e vedere risultati intermedi Puoi anche controllare il valore dei binding semplicemente valutandoli nella console interattiva F #

0

l'interfaccia i s per l'alimentazione di piccoli pezzi di codice e la valutazione dei risultati intermedi, pensate come test di micro-unità. Ho avuto un po 'di successo con l'utilizzo di nunit con f #, non è diverso da quello con C#, hai decorato i tuoi testfixture e test case nello stesso modo e si caricherà. Ho avuto alcuni problemi con gli assembly in modalità mista in cui nunit sarebbe un problema, ma nel complesso, è un modo migliore per provare un pezzo di codice. inoltre, non ho visto un modo per inviare un namespace a moduli interattivi, solo.

11

Non è possibile eseguire il debug del codice che fa parte degli script, ma è possibile eseguire il debug del codice esterno a cui si fa riferimento negli script associando il debugger al processo Fsi.exe come descritto. Quindi, se si vuole veramente il debug dalla finestra interattiva senza voler scrivere un programma di console, è possibile creare un file fs con la funzione di debug e:

  1. Connettere il debugger

  2. In entrambi i

    • riferimento il file fs con #load (*)
    • compilare il codice come una biblioteca e di riferimento la DLL risultante con #r
  3. Impostare un punto di interruzione

  4. Chiamare la funzione da uno script

(*) ha lavorato sulla mia installazione VS ultimo, ma non sono stato in grado di riprodurre su un'altra macchina con VS Shell installare

8

in VS2015 è ora molto più facile: in Strumenti-> Opzione> F # strumenti -> F # INTERACTIVE-> debug -> Attiva il debug di script = true

quindi reimpostare la SE interattivo fissione e quando si desidera eseguire il debug premere CTRL + ALT + D e inviare comandi come al solito

(o fare clic destro sul file di origine e scegliere "debug interattivo")