Elixir dialyxir mix任务创建PLT出口,无错误或创建表
我正在尝试使用dialyxir通过它提供的混合任务对我的项目运行透析器分析 我已经将它添加到我的依赖项中,并按照自述文件进行编译 当我运行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.
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的RAMdialyzer
的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
返回截至的错误。点语法替换为上面添加的标志
参考文献:
透析器
命令会发生什么?它打印创建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。