OHHI Blog

Insights & Updates

Elixir Tricks & Tips for debugging
Author: Manh Vu
Published: 2024-06-20

Table of Contents

Intro

I will continue add tips & tricks for develop/debugging with Elixir in this topic for sharing my experiences about Elixir.

Add .iex.exs file for easy develop & debug

Add .iex.exs file to root folder of Elixir app then:

1. Add alias to avoid type much

example add

alias MyApp.Background.Worker, as: W
defmodule FillData do
def add_sample() do
Cache.add_room(:hello, "Hello room", nil)
Cache.add_room_members(:hello, ["user_1", "user_2", "user_3"], nil)
end
end

to your .iex.exs and run with iex -S mix or iex -S mix phx.server then in Elixir shell you can type like:

W.run()
# For add sample data for developing
FillData.add_sample() # Or add directly to .iex.exs

2. Add function/script support for debugging. You can add a script or function needed for debugging then run in Elixir shell.

rescue in body function

when define a function you can directly use rescue in body without try keyword.

Example:

def server_info(endpoint, scheme) do
address =
endpoint
|> make_ref(scheme)
|> :ranch.get_addr()
{:ok, address}
rescue
e -> {:error, Exception.message(e)}
end

(code from :swarm library)

Add support :observer

:observer is interesting tool for view system statistics, app structure like supervisor, process, ets table,...

We can add to dev mode like:

defmodule MyApp.MixProject do
# ...
def application do
dev_app =
case Mix.env() do
:dev -> [:observer, :wx]
_ -> []
end
required_app = [:logger, :runtime_tools]
[
mod: {EmbeddedChat.Application, []},
extra_applications: required_app ++ dev_app
]
end
end

Now, when you start dev mode you can start :observer by simple command :observer.start()