Setting breaks in IEx for debugging
With the release of Elixir 1.5 comes some handy new IEx helpers, one of which is the ability to add break points throughout your code.
You can add a break to any function using break!/2
or break!/4
:
defmodule MyModule do
def hello(name) do
"hello " <> name
end
end
iex(1)> break!(MyModule.hello/ 1)
or
iex(1)> break!(MyModule, :hello, 1)
Both break/2
and break/4
accept an additional argument for how many stops you want to make. Useful for recursive functions where you may want to stop multiple times.
To see what breaks you have use breaks/0
iex(1)> breaks()
ID Module.function/arity Pending stops
---- ----------------------- ---------------
1 MyModule.hello/1 1
Now when you call the function, you'll be placed into the a debugger and you can inspect whats being passed in:
iex(4)> MyModule.hello("world")
Break reached: MyModule.hello/1 (lib/my_module.ex:2)
1: defmodule MyModule do
2: def hello(name) do
3: "hello " <> name
4: end
pry(1)> name
"world"
To exit the break and start a new shell process use respawn/0
pry(2)> respawn
Interactive Elixir (1.5.0) - press Ctrl+C to exit (type h() ENTER for help)
"hello world"
iex(1)>
Tweet