加快Erlang编辑,编译,运行/调试周期

时间:2011-04-27 19:33:19

标签: debugging erlang erl

编辑Erlang应用程序,编译代码并查看运行结果的最快方法是什么?最好在最后一步跳进Erlang shell。

我目前的新手设置:

  • 编译应用程序并启动erl shell的脚本。
  • 然后我输入应用程序:start(foo)。
  • 当我修复拼写错误时,我使用c('module')重新编译模块并重新启动应用程序。

有更快的方法吗? BTW。我选择的编辑是Emacs。

4 个答案:

答案 0 :(得分:12)

这是我的设置:

  • 在开发过程中,我将Erlang shell保持在一个单独的终端窗口中打开。
  • 我从编辑器开始编译(使用组合键),或者只是在源目录中键入make
  • 编译完成后,我在Erlang shell中输入l(),一次加载所有已更改的模块。你可以在这里找到这个和其他一些有用的宏:http://www.snookles.com/erlang/user_default.erl

很少需要重启整个Erlang应用程序。重新加载更改的模块是一种更常见的用例,通常足以应用您的更改。

关于应用程序启动:如果您的应用程序依赖于其他应用程序,则应用程序:start()将失败,直到您启动所有依赖项。因此,编写辅助函数<your-app-name>:start()是很常见的。这是一个example。另一个有用的功能是<your-app-name>:stop()

应用所有这些技术后,工作流程将如下所示:

  • 启动Erlang shell并保持打开;类型<your-app-name>:start().
  • 进行更改;运行编译;在Erlang shell中输入l()
  • 当更改需要重新启动应用程序时,请键入<your-app-name>:stop(), <your-app-name>:start().

答案 1 :(得分:2)

您可以将rebar视为构建工具。 make:all/0和整个make模块也可以提供帮助。要从shell显式重新加载模块,您可以使用l(Module)。最后,您可能还有兴趣创建一个Erlang release来“包装”所有Erlang应用程序。

答案 2 :(得分:2)

编辑和编译由我使用的IDE(带有erlide的Eclispe)完成。

我还创建了一个脚本,它启动了我的应用程序和有用的工具。该脚本仅用于开发时间。

为了重新加载已更改的源然后编译的bin,我使用mochiweb中的重新加载器。重新加载器观察bin目录,如果有变化,它会加载模块并运行eunit测试,如果你有一些内部。

示例:

erl + A 5 + K true -name @ 127.0.0.1 -pa $ PWD / ebin $ PWD / test $ PWD / deps / * / ebin -boot start_sasl -s reloader -s toolbar -s

答案 3 :(得分:1)

你还可以尝试的是erlbuild。 Erlbuild是一个简单的应用程序,它在src目录中查找已更改的源文件,如果找到某些文件,则会再次编译并加载模块。加载模块后,erlbuild运行模块的测试。

您可以在https://github.com/ulfa/erlbuild

下找到该项目

〜乌尔夫