Elixir dialyxir mix任务创建PLT出口,无错误或创建表

Elixir dialyxir mix任务创建PLT出口,无错误或创建表,elixir,elixir-mix,dialyzer,Elixir,Elixir Mix,Dialyzer,我正在尝试使用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.

我正在尝试使用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"

问题是如何调试它?

正如您在评论中提到的,运行
透析器时的完整错误消息直接包括末尾的文本
Killed
。这就是Linux的内存不足杀手,因为它使用了太多的资源(最有可能是RAM/swap),所以进程会被杀死,因为VM只有约489MiB的RAM
dialyzer
的PLT创建非常占用CPU/内存,因此增加RAM(比如1或2GB)应该可以解决这一问题。

正如您在评论中提到的,运行
dialyzer
时的完整错误消息在结尾直接包含文本
Killed
。这就是Linux的内存不足杀手,因为它使用了太多的资源(最有可能是RAM/swap),所以进程会被杀死,因为VM只有约489MiB的RAM<代码>透析器
的PLT创建非常占用CPU/内存,因此增加RAM(比如1或2GB)应该可以解决这一问题

mix dialyzer --plt
命令行选项
mix dialyxir.plt
返回截至的错误。点语法替换为上面添加的标志

参考文献:

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

参考文献:


如果手动运行代码片段第3行中打印的
透析器
命令会发生什么?它打印
创建PLT/home/vagrant/.dialyxir\u core\u 19\u 1.3.2.PLT…Killed
但没有进一步的信息啊,“Killed”。。运行此操作的系统的RAM是否有限?这看起来像是Linux的OOM杀手因为使用了太多RAM而杀死了进程。@Onriocatenacci权限没有问题。内存不足。机器报告它可以看到489MiBTry给它1或2GB。IIRC透析器PLT创建占用大量内存。如果手动运行代码段第3行中打印的
dialyzer
命令,会发生什么情况?它打印
创建PLT/home/vagrant/.dialyxir\u core\u 19\u 1.3.2.PLT…Killed
但没有进一步的信息啊,“Killed”。。运行此操作的系统的RAM是否有限?这看起来像是Linux的OOM杀手因为使用了太多RAM而杀死了进程。@Onriocatenacci权限没有问题。内存不足。机器报告它可以看到489MiBTry给它1或2GB。IIRC透析器PLT的创建非常占用内存。
dialyxir
可以。谢谢的noobrinja。
dialyxir
可以。谢谢的noobrinja。