In this Gist we will configure VSCode for Elixir debugging. Once done, we will be able to debug any function with any arguments by opening the VSCode Run (a.k.a Debug) view, selecting the "mix run" debug configuration, and entering any invocation such as Example.run(:my_args)
into a command palette prompt. This will let us step through the code as it executes and use breakpoints like normal.
This Gist expects you have the ElixirLS: Elixir Support and Debugger extension installed. This Gist is based on version 0.6.2.
Create a .vscode/launch.json file at the root of your project if one does not exist already. Modify the file to contain inputs
and configurations
like the following:
{
"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}",
}
]
}
That launch configuration will let you run any function with any arguments. Define some breakpoints in the function of interest, then use the mix run
debug configuration from the VSCode Run window to exercise it.
Enjoy!
Other option is this:
this configuration use iex for debugging