febeling

febeling

How to debug ExUnit tests with :debugger?

I have the idea to use the (Erlang) debugger to debug my Elixir tests, using breakpoints set via the UI and stepping through code by line or expression. I also want to avoid littering the code with Pry or breakpoint statements. Is that something that’s possible?

I searched docs and more broadly, but I didn’t find a conclusive answer yet.

My understanding for now is, that the debugger needs to be started from the iex repl, but there doesn’t seem to be reliable way to run tests from there.

First Post!

idi527

idi527

Can you call :debugger.start from within the failing test / or setup block? Or before the module?

Most Liked

idi527

idi527

I meant something like

:debugger.start()
:int.ni(DebugTest)
:int.break(DebugTest, 16) # needs to be an executable line http://erlang.org/doc/apps/debugger/debugger_chapter.html#breakpoints
# or use http://erlang.org/doc/man/int.html#break_in-3
# :int.break_in(DebugTest, :hello, 0)

defmodule DebugTestTest do
  use ExUnit.Case
  doctest DebugTest

  test "greets the world" do
    result = DebugTest.hello()
    assert result == :world
  end
end

and then mix test --trace.


If you only want to “look around” in the test block, I think it’d be a bit simpler with IEx.pry

defmodule DebugTestTest do
  use ExUnit.Case
  doctest DebugTest
  require IEx

  test "greets the world" do
    result = DebugTest.hello()
    IEx.pry()
    assert result == :world
  end
end

and then iex -S mix test --trace.

idi527

idi527

Yeah, there is no way to “step through” with IEx.pry. I still use it, yes, usually right before the assert macros to have a “look around”.

Last Post!

febeling

febeling

yep, gotcha. In my case it’s about an algorithm that is recursive, so it would hit the line in code multiple times. That is a bit annoying if there isn’t any conditional break feature. That’s the reason I prefer a full debugger here.

Where Next?

Popular in Questions Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

Other popular topics Top

grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 54092 488
New
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New

We're in Beta

About us Mission Statement