【问题标题】:dialyxir mix task to create PLT exits without error or creating tabledialyxir mix 任务创建 PLT 退出时没有错误或创建表
【发布时间】:2017-02-12 18:28:07
【问题描述】:

我正在尝试使用 dialyxir 通过它提供的混合任务对我的项目运行透析器分析。

我已将它添加到我的依赖项中并按照自述文件进行编译。

当我运行mix dialyxir.plt 时,它没有报告任何错误,但在没有创建表的情况下退出。

$ mix dialyzer.plt
Starting PLT Core Build ... this will take awhile
dialyzer --build_plt --output_plt /home/vagrant/.dialyxir_core_19_1.3.2.plt --apps erts kernel stdlib crypto public_key -r /usr/local/lib/elixir/bin/../lib/elixir/../eex/ebin /usr/local/lib/elixir/bin/../lib/elixir/../elixir/ebin /usr/local/lib/elixir/bin/../lib/elixir/../ex_unit/ebin /usr/local/lib/elixir/bin/../lib/elixir/../iex/ebin /usr/local/lib/elixir/bin/../lib/elixir/../logger/ebin /usr/local/lib/elixir/bin/../lib/elixir/../mix/ebin
Creating PLT /home/vagrant/.dialyxir_core_19_1.3.2.plt ...

# later

$ ll /home/vagrant
# No file called /home/vagrant/.dialyxir_core_19_1.3.2.plt

# running the mix task errors as expected with no plt

$ mix dialyzer
dialyzer --no_check_plt --plt /home/vagrant/.dialyxir_core_19_1.3.2.plt -Wunmatched_returns -Werror_handling -Wrace_conditions -Wunderspecs /vagrant/_build/dev/lib/ace/ebin

dialyzer: No such file, directory or application: "/home/vagrant/.dialyxir_core_19_1.3.2.plt"

问题是我该如何调试?

【问题讨论】:

  • 如果您手动运行打印在 sn-p 的第 3 行的dialyzer 命令会发生什么?
  • 打印Creating PLT /home/vagrant/.dialyxir_core_19_1.3.2.plt ...Killed,但没有更多信息
  • 啊,“Killed”.. 你运行它的系统是否有有限的 RAM?这看起来像是 Linux 的 OOM 杀手因为使用过多的 RAM 而杀死了进程。
  • @OnorioCatenacci 权限没有问题。它在 RAM 上非常低。机器报告它可以看到 489MiB
  • 尝试给它 1 或 2GB。 IIRC 透析器 PLT 创建非常占用内存。

标签: elixir elixir-mix dialyzer


【解决方案1】:

正如您在 cmets 中提到的,运行 dialyzer 时的完整错误消息直接在末尾包含文本 Killed。这是 Linux 的内存不足杀手,因为 VM 只有 ~489MiB 的 RAM,所以会因为使用过多的资源(很可能是 RAM/swap)而杀死进程。 dialyzer 的 PLT 创建非常占用 CPU/内存,因此增加 RAM(例如 1 或 2GB)应该可以解决此问题。

【讨论】:

    【解决方案2】:
    mix dialyzer --plt
    

    命令行选项mix dialyxir.plt 返回dialyxir 0.4.3 的错误。点语法被上面添加的标志替换。

    参考资料:

    【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2017-05-17
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多