我正在尝试使用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"
问题是如何调试这个?
答案 0 :(得分:2)
与您在评论中提到的一样,运行dialyzer
时的完整错误消息直接包含文本Killed
。这是Linux的内存不足杀手,因为VM只有大约489MiB的RAM,因此使用了太多资源(很可能是RAM /交换)。 dialyzer
的PLT创建非常占用CPU /内存,所以增加RAM(比如说1或2GB)就可以解决这个问题。
答案 1 :(得分:1)