※Erlang始めたばかりなのでベストプラクティスではないかもしれません
このページに書いてあることはErlang -- Debuggerにも書いてあるので、詳しくはドキュメントを参照してみてください。こちらには超基本的なことを簡単に書いています。
起動と設定
erl shellでdebugger:start()
コマンドを実行すると起動します。
$ erl shell
> debugger:start().
デバッグ対象モジュールの追加
このままだと何もできないので、デバッグ対象のソースコードをデバッガに追加します。
Module -> Interpret... を選択します。
ファイル一覧のウィンドウが表示されるので、erlファイルを追加していきます。
デバッガの左側のメニューに追加したモジュールが表示されます。
ブレークポイントの追加
ブレークポイントを追加したいモジュールをダブルクリックします。モジュールのコードが別ウィンドウで開くので、この状態でグローバルメニューのBreakから、追加したいブレークポイントのタイプを選んでいきます。
コードの対象行をダブルクリックすると行のブレークポイントを追加することができます。
デバッグしてみる
対象モジュールを動かしてみます。
例で使っているモジュールはcowboyのhandlerなので、対象handlerに紐付いているpathにリクエストを送ってみます。
ブレークポイントをつけた箇所での変数の内容を見ることもできます。
この画面の左下のEvaluator
というインプットに好きな式を書いて動かすことができるようです。(が、recordに関してはundefined_record
と表示されてしまいうまく評価できませんでした。どうやれば評価できるかわかったら記事にも追記したいと思います)
デバッガの設定の保存と読み込み
debugger:start
した後に毎回デバッグ対象のモジュールを追加するのは面倒です。
グローバルメニューのFile -> Save Settings
から、デバッガの設定をファイルに書き出すことができます。
また、debugger:start(<settings path>)
でこの設定ファイルを読み込んでデバッガを起動することができます。(Erlang -- debugger)
開発中は
- プロジェクトの主要なソースコードを予めデバッガ上に追加しておく
- settingsを書き出し
debugger:start(<settings path>)
でデバッガを起動しながら実装を進めていくのがいいのかなーと思いました。