【发布时间】: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