Debugging tip! One quick way to find out which functions you're executing.

Notes

When running tests, we sometimes want to know which functions are being executed.

You could write custom dbg/1 statements in each of the functions:

def function_a do
  dbg(:function_a)
end

def function_b do
  dbg(:function_b)
end

...

def function_z do
  dbg(:function_z)
end

But that’s kind of a pain. It would be nicer if we could just call dbg/1 with the current function’s name – without us having to know the name.

How can we print the name of the function without having to know it?”

Well, it turns out there’s a nice macro helper just for that! 🥳

Use the ENV macro

The __ENV__ macro has a ton of information about the current environment. One of the things you can get is the current function.

So, you can call the function/0 function on it to get the current function being executed!

def function_a do
  dbg(__ENV__.function)
end

def function_b do
  dbg(__ENV__.function)
end

...

def function_z do
  dbg(__ENV__.function)
end

Pretty neat, huh?

Resources

Docs: https://hexdocs.pm/elixir/main/Kernel.SpecialForms.html#ENV/0

Want the latest Elixir Streams in your inbox?

    No spam. Unsubscribe any time.