如何使用Intellij想法调试Erlang项目?

时间:2017-06-14 01:41:28

标签: intellij-idea erlang

我想学习一个用作消息代理的开源软件(EMQTT https://github.com/emqtt/emqttd),但是当我尝试更改某些代码并跟踪消息如何在其中流动时,会出现Intellij的问题。想法似乎只能一次调试一个Erlang函数或一个模块。有没有什么方法可以调试整个项目并使用断点跟踪它而不是逐个调试它们? enter image description here

3 个答案:

答案 0 :(得分:0)

Intellij将螺纹钢用作项目经理。 螺纹钢已被弃用,rebar3(螺纹钢的新版本)具有高级功能。

您可以使用rebar3及其高级功能来运行测试&透析器。

EMQTT支持travis!
您可以将其分叉并在项目中启用travis。 travis是一个测试平台,将在每次更改后测试您的项目 有关详细信息,请参阅travis docs

答案 1 :(得分:0)

经过几天的尝试,我找到了一个可以用Intellij Idea调试的方法,它不像我想要的方法那样完美,但它在某种程度上有所帮助,只需在此处发布有人需要参考。

  1. 进入* .erl文件所在的目录。
  2. 用c编译(“你的erl文件”,debug_info)。在编译时必须有一个debug_info,否则,调试将引发错误:“梁文件中没有调试信息”。

  3. 根据您的模块配置参数,下图为供参考。如果您的函数需要args

  4. ,则可能需要提供函数args

    ps:这是用shell编译的相对冗余,但它是我发现的唯一方法可行,如果没有提供波束文件,它总是会引发错误:“没有波束文件”。

    如果有人有更好的方法,请通过回答这个问题或评论给我一个帮助,非常感谢!

    enter image description here

答案 2 :(得分:0)

您在一个目录中拥有源文件和假象的解决方案似乎是使用Intellij调试器的唯一方法。由于源文件和人工制品通常不在同一目录中,因此这种行为似乎很奇怪。因此我打开了一个问题(https://github.com/ignatov/intellij-erlang/issues/811)。

How to debug erlang code during rebar3 eunit?中描述了与rebar3和eunit一起使用的解决方案。您可以使用对运行erlang插件提供的rebar3命令的支持,在Intellij中将rebar3作为测试shell启动。