Iex pry going step by step?
Asked Answered
S

4

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 ?

Spicebush answered 18/10, 2015 at 21:51 Comment(3)
Maybe you will find this useful: github.com/qhool/quaffUtas
@PatrickOscity, I usually work on a remote machine. Is there a way to run the quaff tool in command line only ?Spicebush
@VoodooChild: You can use ssh -Y when you ssh into your remote machine so any window will be redirected to your host machine.Horlacher
D
15

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

Domeniga answered 20/10, 2015 at 10:49 Comment(3)
If pry isn't the answer to setting a breakpoint and stepping through a running Elixir program, what is?Perorate
@Perorate , as Patrick pointed out, github.com/qhool/quaff is a tool which you can useSpicebush
Can't believe I did not know about quaff until now. Thansk @PerorateGob
S
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/

Spang answered 10/3, 2018 at 10:37 Comment(0)
S
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.

Sibyls answered 28/5, 2020 at 6:59 Comment(1)
continue is used to continue the execution, the question is about step functionality.Geophysics
C
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

Chintzy answered 25/8, 2023 at 17:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.