2011-09-12 50 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工具。 –

相关问题