Elixir:
デバッガーの使い方
方法:
Elixirには:debuggerというビルトインのグラフィカルデバッガが付属しています。これを使用するには、それを起動して実行中のプロセスにアタッチする必要があります。
まず、iexセッション内で:debuggerが起動していることを確認してください:
iex> :debugger.start()
{:ok, #PID<0.108.0>}次に、デバッグしたいコードモジュールを解釈します:
iex> :int.ni(MyApp.MyModule)
{:module, MyApp.MyModule}ブレークポイントを設定できます:
iex> :int.break(MyApp.MyModule, line_number)
:okそして、関数を実行してブレークポイントをヒットし、コードをステップ実行します:
iex> MyApp.MyModule.my_function(arg1, arg2)
# デバッガはブレークポイントのある行で実行を一時停止します深掘り
Elixirの:debuggerの前に、Elixirが使用しているデバッガを提供したのはErlangです。これは頑丈であり、Erlang VM (BEAM)の強みである並行プロセスを扱うのに適しています。他の一部のデバッガとは異なり、:debuggerはElixirのデータが不変であるため、flyで変数を変更することはできません。代替手段として、コードの任意のポイントで実行を一時停止してREPLにジャンプすることができるIEx.pryがあり、これは非常に便利です。
:debuggerはグラフィカルインターフェースに適していますが、コードをステップ実行することを特に目的としていないものの、プロセス検査とシステムメトリックスを提供するビルトインの:observerツールを好む人もいるでしょう。Elixirのコミュニティも、デフォルトのデバッグツールを超えてvisualixirやrexbugのようなツールを提供し、デバッグツールのエコシステムを拡大しています。
参照
- 公式Elixirデバッグに関する入門ガイド:https://elixir-lang.org/getting-started/debugging.html
- Erlangの
:debuggerドキュメント:http://erlang.org/doc/apps/debugger/debugger_chapter.html - デバッグ技術に関するElixir Forumの議論:https://elixirforum.com/c/elixir-questions/elixir-questions-questions-help/15