Ho esaminato lo SMLNJ User Guide e non riesco a trovare nulla sulle funzionalità di debug. Mi piacerebbe solo vedere una traccia dello stack, o passare attraverso una funzione. È possibile. Esistono altre implementazioni per varianti simili di SML che do forniscono questa funzionalità?SMLNJ ha qualche tipo di debugger?
16
A
risposta
8
Dalla sezione 3.3 del SMLNJ faq:
D: C'è un debugger per SML/NJ? Che cosa è successo al debugger di Tolmach per SML/NJ 0.93?
A: la risposta breve è no.
Debugging SML * For years, no one had an SML debugger * Why? o No one had any bugs? o It is hard to write a debugger for SML o The user community wasn’t large enough * Likely all three are true
C'è a .NET compiler, però, che sostiene di avere un po 'di supporto per il debugging ..
10
Non ci sono ancora debugger step-based.
È possibile ottenere backtrace dello stack nel modo seguente:
- CM.make "$smlnj-tdp/back-trace.cm";
[library $smlnj-tdp/back-trace.cm is stable]
[library $smlnj-tdp/plugins.cm is stable]
[library $SMLNJ-LIB/Util/smlnj-lib.cm is stable]
[library $smlnj/compiler/current.cm is stable]
[library $smlnj/compiler/x86.cm is stable]
[library $smlnj/viscomp/core.cm is stable]
[library $smlnj/viscomp/parser.cm is stable]
[library $smlnj/viscomp/basics.cm is stable]
[library $smlnj/viscomp/elaborate.cm is stable]
[library $smlnj/viscomp/elabdata.cm is stable]
[library $smlnj/MLRISC/MLRISC.cm is stable]
[library $SMLNJ-MLRISC/MLRISC.cm is stable]
[library $Lib.cm(=$SMLNJ-MLRISC)/Lib.cm is stable]
[library $Control.cm(=$SMLNJ-MLRISC)/Control.cm is stable]
[library $Graphs.cm(=$SMLNJ-MLRISC)/Graphs.cm is stable]
[library $smlnj/MLRISC/Control.cm is stable]
[library $smlnj/viscomp/debugprof.cm is stable]
[library $smlnj/viscomp/execute.cm is stable]
[library $smlnj/internal/smlnj-version.cm is stable]
[library $smlnj/viscomp/x86.cm is stable]
[New bindings added.]
val it = true : bool
- SMLofNJ.Internals.TDP.mode := true;
[autoloading]
[autoloading done]
val it =() : unit
-
Quindi, è possibile caricare un codice e invece di stampare l'eccezione, si otterrà uno stack backtrace simulato. Devi ricompilare il codice dopo aver seguito i passaggi precedenti, altrimenti non funzionerà!
- exception Foo;
exception Foo
- fun otherFun() = raise Foo;
val otherFun = fn : unit -> 'a
- fun raiseAtZero(n) = if (n > 0) then raiseAtZero(n-1) else otherFun();
val raiseAtZero = fn : int -> 'a
- raiseAtZero 10;
stdIn:9.1-9.15 Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
*** BACK-TRACE ***
GOTO stdIn:7.5-7.27: otherFun[2]
(from: stdIn:8.60-8.70: raiseAtZero[2])
CALL-(stdIn:8.5-8.70: raiseAtZero[2]
(from: stdIn:9.1-9.15: it)
GOTO stdIn:5.5-5.27: otherFun[2]
(from: stdIn:6.60-6.70: raiseAtZero[2])
CALL-(stdIn:6.5-6.70: raiseAtZero[2]
(from: stdIn:6.71-6.86: it)
uncaught exception Foo
raised at: stdIn:7.24-7.27
-
7
v'è ora un debugger a livello sorgente in PolyML: http://www.polyml.org/documentation/Tutorials/Debugging.html
2
Problemi correlati
- 1. Esiste qualche tipo di CacheDependency in System.Runtime.Caching?
- 2. Esiste qualche tipo di API Grooveshark?
- 3. L'origine ha qualche significato speciale?
- 4. Scalatest ha qualche supporto per le ipotesi?
- 5. Esiste qualche tipo di "ReferenceComparer" in .NET?
- 6. JAVAFX/WebView/WebEngine FireBugLite o qualche altro debugger?
- 7. elemento div nella cella della tabella ha un qualche tipo di spaziatura
- 8. Qualcuno ha qualche esperienza con Hobo?
- 9. Ha qualche vantaggio reale su PLINQ?
- 10. L'ordine degli attributi ha qualche garanzia?
- 11. Un typedef per sé ha qualche effetto?
- 12. se qualche div ha Classe attraverso l'avviso
- 13. Il debugger non ha colpito il punto di interruzione
- 14. L'operatore unario + ha qualche utilità pratica?
- 15. C'è qualche differenza tra tipo e classe?
- 16. super allocWithZone ha qualche dubbio nel concetto di classe singleton
- 17. Scala ha qualche equivalenza con quella indefinita di Haskell?
- 18. Scopri quanti millisecondi ha eseguito un programma C# nel debugger
- 19. Debugger di scrittura
- 20. Il convertitore dovrebbe lanciare qualche tipo di eccezione?
- 21. c'è qualche tipo di tristate in C++ stl?
- 22. ha ricevuto l'attività non registrata di tipo
- 23. C ha un tipo di stringa?
- 24. Il null ha il tipo di oggetto?
- 25. NULL ha un tipo di dati?
- 26. Classe base ha errore di tipo incompleto
- 27. la classe A ha un parametro di tipo, ma il tipo B ha uno
- 28. non ha classe tipo C++
- 29. Visualizzatore debugger e "Tipo non contrassegnato come serializzabile"
- 30. Connessione di debugger multipli a un debugger (Java, JPDA)