2014-09-01 15 views
5

Esiste un debugger di traccia come dbg disponibile per Haskell o OCaml?Esiste un debugger di traccia come `dbg` disponibile per Haskell o OCaml?

Molto informalmente, è il debug in stile printf solo migliore, completamente configurabile in fase di esecuzione. In sostanza, l'utente può registrare un gestore di traccia quando è in esecuzione un sistema, che verrà richiamato su ogni azione da un insieme di azioni supportate dal runtime (ad es. Su ogni chiamata/ritorno di funzione, su ogni messaggio inviato/ricevuto ecc.) . Tale gestore può registrare ogni operazione, che fornisce una bella sequenza di tutti i passaggi che si verificano in (parte del) sistema.

Questo meccanismo può essere utilizzato per la registrazione/debugging, profilazione di alcune parti del sistema, ma in molti casi solo per scoprire come funziona un nuovo sistema (sconosciuto al programmatore).

+0

'ocamldebug' non ha il debug di stile di traccia di cui parli, ma supporta i breakpoint e il time-travel. È inoltre disponibile il profiling del supporto da strumenti/flag aggiuntivi. – nlucaroni

+1

Sebbene non sia un debugger di per sé, il primo livello di OCaml ha '# trace' e' # install_printer', che possono fare molto. – Nikos

risposta

4

Per Haskell, GHCi fornisce un semplice debugger in stile imperativo. Guarda è documentation per trovare maggiori dettagli a riguardo. Alcuni della sua caratteristica sono

  • Possibilità di impostare un punto di interruzione
  • Varcata esecuzione
  • Controllo variabili locali
  • Trattare eccezioni come punti di interruzione
  • Digitando in qualsiasi codice per eseguire immediatamente
+0

Infatti. Per la cronaca, trovo la capacità di GHCi di eseguire qualsiasi codice che mi piace nell'ambito di scope con qualsiasi argomento che mi piace _far_ più utile di qualsiasi set di strumenti di debug tradizionali. – AndrewC

+0

(si prega di perdonare o annullare la modifica sfacciato) – AndrewC

+1

@AndrewC Va bene. :) In effetti, utilizzo 'ghci' solo per la funzione su cui hai elencato. – Sibi