2011-09-12 51 views
4

我最近發現了Nemerle和F#,但我找不到任何方式來調試我的應用程序。 由於安裝了更新的gnome-sharp lib(我正在運行最新的Arch Linux kernel-3.0 64位),MonoDevelop 2.6缺乏對Nemerle和F#,2.4.2以及更早的崩潰的支持。命令行單調試器拒絕開始說「平臺不支持」。所以很少有關於這種情況的問題:如何在Linux下調試F#/ Nemerle單聲道應用程序?

可以使用gdb調試單聲道應用程序,而無需進入低級別(在vm內部)? 使用F#REPL在沒有調試器的情況下進行交互式開發有多舒服(與Common Lisp或Haskell的GHCi相比)?

回答

4

我大部分時間都使用F#交互式環境編寫F#代碼。即使在Visual Studio中,F#交互式環境也沒有(合理)支持調試器,所以我主要依賴於交互式地輕鬆運行某些東西並查看它是否有效的功能 - 如果不行,通常很容易將其分解爲子也可以交互式地嘗試組件。與GHCi相比,F#Interactive的優點在於您可以使用它來評估幾乎任何東西 - 包括類型聲明。

MonoDevelop 2.4的F#插件目前不支持調試已編譯的F#應用程序。我能夠使用命令行Mono調試器(我認爲是mdb),但那是在32位系統上。

我不確定爲什麼MonoDevelop沒有正確選擇F#調試符號,所以這很可能是一些基本的錯誤。有一些人在爲MD 2.6的F#插件工作,所以應該很快就會有效。如果有人想調查爲什麼調試不起作用,那將是很好的...

+0

「F#交互式環境」 - 你的意思是fsi.exe嗎? –

+0

@argos - 是的,我的意思是'fsi.exe'。在像Visual Studio或帶F#插件的MonoDevelop這樣的IDE中,它也可作爲工具窗口使用,因此您可以在IDE中的文件中編寫代碼,並將其中的一部分發送到IDE中可見的'fsi.exe'進程。這就是我通常所說的「F#交互式環境」,但您也可以將'fsi.exe'作爲獨立進程運行。 –

+0

對於它的價值,永遠不要低估一個精心安排的'prinfn'聲明的價值。另外,fseye(http://code.google.com/p/fseye)可能是一個選項,但我沒有用Mono試過。 – pblasucci

3

Nemerle在Windows下使用Visual Studio和#Develop具有很好的IDE支持,優於F#,但Linux沒有任何功能,據我所知。

2

關於Linux和Nemerle: Nemerle得到了Vim綁定,Kwrite/Kate和其他一些編輯得到了Nemerle的支持。您也可以將編譯器選項添加到Linux中的任何編輯器。 Nemerle編譯器只是工作!

Nemerle MonoDevelop支持開發,但真的很慢。 F#已經過時了MonodeVelop的支持,因爲@Tomas說,但是新的MonoDevelop呢?動力單元 ? F#3?我認爲這是一項複雜的任務。

Nemerle是OpenSource項目。我不確定F#3.我喜歡F#,但總是落後於微軟。你可以自由地嘗試兩種。

3

您可以在MonoDevelop中輕鬆調試Nemerle。 只需使用pdb2mdb工具將pdb轉換爲單聲道格式:http://www.mono-project.com/Guide:Debugger 不僅僅是調試您的應用程序,並且您可以獲得正確的位置。

我甚至設法使用這個技巧來調試Nemerle編譯器。

+0

這是一個很棒的技巧。在閱讀您的答案之前,我從來沒有聽說過pdb2mdb工具。 –

相關問題