2

私は、dialyxir を使用して、それが提供する混合タスクを通じてプロジェクトでダイアライザー分析を実行しようとしています。

依存関係に追加し、README に従ってコンパイルしました。

を実行する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"

問題は、これをどのようにデバッグするかです。

4

2 に答える 2

4

コメントで述べたように、実行時の完全なエラー メッセージには、最後dialyzerにテキストが含まれていKilledました。VM の RAM は最大 489MiB しかないため、これは Linux のメモリ不足キラーであり、大量のリソース (おそらく RAM/スワップ) を使用してプロセスを強制終了します。dialyzerの PLT 作成はかなり CPU/メモリを集中的に使用するため、RAM を増やす (つまり 1 または 2GB) ことでこれを修正できます。

于 2016-10-06T10:40:50.093 に答える