はじめに
IO.inspect()にはお世話になってます。
エラーがでたら、その都度、IO.inspectを仕込んで、値確認こんなデバックよくやってます。
でも、デバッカーを使って、サクッと動作を見たい時もあります。
VSCodeでデバッカーを使う方法についての情報が見当たらなかったので、書いてみます。
Pythonのプログラムの場合、デバッカーを起動すると、選択中のPythonファイルが自動的に実行されてデバッカーが起動します。
しかし、Elixirの場合は、このような機能はありません。
ここに良い方法があったのでこの設定例を使って説明します。
環境設定
- VSCodeにElixirLS をインストール
- デバッカーの設定を開く(①を選択して、②の設定ボタンを押す)
launch.jsonがエディター画面に表示されます。その内容を、以下の内容に書き換えます。
configurationsに残したい設定がある場合は、適宜残してください。よくわからない場合は、丸ごと入れ替えで大丈夫です。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"inputs": [
// This input allows us to prompt the VSCode user for arguments when we run a debug configuration.
{
"id": "runArgs",
"type": "promptString",
"description": "Enter arguments for `mix run -e`"
}
],
"configurations": [
// This configuration runs `mix run -e ...` with arguments supplied by the user.
{
"type": "mix_task",
"name": "mix run",
"request": "launch",
"task": "run",
// Prompt the VSCode user for arguments with `"${input:runArgs}` and pass those along to `mix run -e ...`
"taskArgs": [
"-e", "${input:runArgs}"
],
"startApps": true,
"projectDir": "${workspaceRoot}",
}
]
}
使い方
③の三角ボタンを押して、デバッカーを起動
入力欄に実行する関数を入力する(mix run -eの引数になります)
後は、VSCodeのデバッカーの操作方法で操作できます
変数の値を見てみる
PythonやJS、Cなどのデバッカー画面と比べると、変数名の表示がちょっと変わってます。
変数名@1のように@1が付加されてます。これは、拘束されると、この番号が増えていくようになってます。
次の例は、31行目で停止して、agentの値を表示した場合です。
左上のVARIABLES欄を見ると、agent@1と、agent@2があります。
agent@1は、この関数が呼び出された直後のagentです。
agent@2は、30行目を実行して拘束したagentです。
30行目のset_model()は、agent.modelを更新する処理をしています。
agent@1、agent@2比べてみると、modelの値がセットされている事を確認できます。
参考
https://gist.github.com/Tomboyo/ef8db1ed6beb2a88a8d5fb1d7ff3d76b