18

I want to use IEx.pry to go step by step in my elixir code, like byebug in ruby or debug point in Java. I tried looking into the documentation here : https://github.com/elixir-lang/elixir/blob/4f68c4f10502e0f54a21093bb9a33957e63a9ac4/lib/iex/lib/iex.ex but did not find anything. Could anyone suggest a way to do this ?

VoodooChild
  • 400
  • 1
  • 6
  • 18

4 Answers4

15

It is not possible as pry is not a debugger. Pry simply allows you to interact with a particular context.

José Valim
  • 50,409
  • 12
  • 130
  • 115
1

I was hoping for a way to step through Elixir code via IEx.pry as well, but that's not possible. Erlang does have a debugger that you can use for Elixir code.

You can start the debugger by running: :debugger.start()

I learned about it here: http://blog.plataformatec.com.br/2016/04/debugging-techniques-in-elixir-lang/

Catharz
  • 1,105
  • 10
  • 18
1

As the other answers pointed out, pry does not offer this functionality.

As a workaround you could add multiple IEx.pry instructions, inspect and use continue to go to the next one.

mit
  • 11,083
  • 11
  • 50
  • 74
samidarko
  • 590
  • 7
  • 20
  • 2
    `continue` is used to continue the execution, the question is about `step` functionality. – Daniel May 28 '20 at 07:42
0

After elixir 1.14, you can use the next/0 function after setting a breakpoint on the function you wanna debug.

To se a breakpoint you need to enter your iex terminal and use the function break!/2 and pass the function and the arity, so said function receives a breakpoint. Like this:

break! MyModule.function_to_be_debugged/2

And then, when you call said function, you will be able to debug it, line by line with the next/0

ogabriel
  • 111
  • 2
  • 6