【问题标题】:How to debug a Erlang project with Intellij idea?如何使用 Intellij idea 调试 Erlang 项目?
【发布时间】:2017-11-15 23:23:36
【问题描述】:

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

【问题讨论】:

    标签: intellij-idea erlang


    【解决方案1】:

    Intellij 使用钢筋作为项目经理。 rebar 已被弃用,rebar3(新版本的 rebar)具有高级功能。

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

    EMQTT 支持 travis !
    你可以 fork 它并在你的项目中启用 travis。 travis 是一个测试平台,每次更改后都会测试您的项目。
    欲了解更多信息,请参阅travis docs

    【讨论】:

    • Intellij 的 Erlang 插件从 2017 年初开始支持 rebar3。但是注意 rebar 和 Erlang 调试器没有关系,所以 Intellij 是否支持 rebar3 对这个问题没有影响。 Travis 不属于 github。
    【解决方案2】:

    经过几天的尝试,我找到了一种可以使用 Intellij Idea 进行调试的方法,它不如我想找到的方法那么完美,但它在一定程度上有所帮助,只需在此处发布即可有需要的可以参考一下。

    1. cd 到 *.erl 文件所在的目录。
    2. 用 c("your erl file", debug_info) 编译。编译时必须有debug_info,否则调试会报错:"no debug info in beam file"。

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-07
        • 1970-01-01
        • 2014-03-31
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        相关资源
        最近更新 更多