我已經通過SMLNJ User Guide看,並不能找到有關調試能力什麼。我很想看到一個堆棧跟蹤,或通過一個函數。這可能嗎。是否還有其他的實現爲SML的類似的變種,做提供這個功能嗎?SMLNJ有任何類型的調試器嗎?
16
A
回答
8
從SMLNJ faq的第3.3節:
問:是否有SML/NJ調試器? 發生過什麼Tolmach的 調試器SML/NJ 0.93?
答:簡短的回答是否定的。
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
有a .NET compiler,雖然號稱有一些調試的支持..
10
目前還沒有任何基於STEP的調試器。
您可以通過以下操作獲得堆棧回溯:
- 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
-
然後,您可以加載一些代碼,而不是隻打印例外,你會得到一個模擬棧回溯。按照上述步驟進行操作後,您必須重新編譯代碼,否則這將不起作用!
- 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
中現在PolyML源代碼級調試:http://www.polyml.org/documentation/Tutorials/Debugging.html
2
相關問題
- 1. SMLNJ - 與聲明類型Typcon不匹配
- 2. Netbeans調試器無法調試具有特定類名稱的任何項目
- 3. glsl中是否有任何調試器?
- 4. Perl有一個可以有任何類型鍵的關聯數組類型嗎?
- 5. 調試器類型之間的區別
- 6. 有人知道任何支持調試的優秀USB PHP服務器嗎?
- 7. Android的任何類或對象持有任何類型的widget
- 8. VS2005中缺少調試器類型
- 9. 我可以在SMLNJ中擴展typedef嗎?
- 10. 如何調試[Function]類型的變量?
- 11. SAS sql有任何PERIOD數據類型嗎?
- 12. 是否有任何visualJ IDEA的可視化調試器
- 13. 是否有任何獨立的C#/ .NET調試器?
- 14. QT - 未知調試器類型 「沒有引擎」
- 15. boost ::任何有限類型的支持
- 16. 類型的任何具有SWIFT 3
- 17. 如何從VisualStudio調試器的Datatip中告訴類型?
- 18. 模擬/測試超類調用的子類..有可能嗎?
- 19. 在調試器中查看C#泛型的類型
- 20. 如何發佈.NET應用程序沒有調試信息,一鍵式或無任何調試文件的任何其他類型的安裝
- 21. 通過調用lambda來關閉打開的任何類型的泛型類型
- 22. Typescript調試 - 顯示類型
- 23. Ruby中是否有任何類型的日曆選取器?
- 24. 如何調試protobuf-net缺失類型?
- 25. 你可以在xcode調試器的任何地方看到NSUserDefaults的值嗎?
- 26. 調試有幫助嗎?
- 27. highcharts.js有調試模式嗎?
- 28. 如何在Java中調用任何具有任意數量的參數和任何數據類型的方法
- 29. Visual Studio 2010調試器沒有爲WCF項目做任何事
- 30. Eclipse調試器凍結,但沒有提供任何錯誤