Elixir Language
Conseils de débogage
Recherche…
Déboguer avec IEX.pry / 0
IEx.pry/0
avec IEx.pry/0
est assez simple.
-
require IEx
dans votre module - Trouvez la ligne de code que vous voulez inspecter
- Ajouter
IEx.pry
après la ligne
Maintenant, lancez votre projet (par exemple, le iex -S mix
).
Lorsque la ligne avec IEx.pry/0
est atteinte, le programme s'arrête et vous avez la possibilité d'inspecter. C'est comme un point d'arrêt dans un débogueur traditionnel.
Lorsque vous avez terminé, tapez simplement respawn
dans la console.
require IEx;
defmodule Example do
def double_sum(x, y) do
IEx.pry
hard_work(x, y)
end
defp hard_work(x, y) do
2 * (x + y)
end
end
Déboguer avec IO.inspect / 1
Il est possible d'utiliser IO.inspect / 1 comme outil pour déboguer un programme d'élixir.
defmodule MyModule do
def myfunction(argument_1, argument_2) do
IO.inspect(argument_1)
IO.inspect(argument_2)
end
end
Il imprimera argument_1 et argument_2 sur la console. Comme IO.inspect/1
renvoie son argument, il est très facile de l’inclure dans les appels de fonctions ou les pipelines sans casser le flux:
do_something(a, b)
|> do_something_else(c)
# can be adorned with IO.inspect, with no change in functionality:
do_something(IO.inspect(a), IO.inspect(b))
|> IO.inspect
do_something(IO.inspect(c))
Debug dans pipe
defmodule Demo do
def foo do
1..10
|> Enum.map(&(&1 * &1)) |> p
|> Enum.filter(&rem(&1, 2) == 0) |> p
|> Enum.take(3) |> p
end
defp p(e) do
require Logger
Logger.debug inspect e, limit: :infinity
e
end
end
iex(1)> Demo.foo
23:23:55.171 [debug] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
23:23:55.171 [debug] [4, 16, 36, 64, 100]
23:23:55.171 [debug] [4, 16, 36]
[4, 16, 36]
Pry en pipe
defmodule Demo do
def foo do
1..10
|> Enum.map(&(&1 * &1))
|> Enum.filter(&rem(&1, 2) == 0) |> pry
|> Enum.take(3)
end
defp pry(e) do
require IEx
IEx.pry
e
end
end
iex(1)> Demo.foo
Request to pry #PID<0.117.0> at lib/demo.ex:11
def pry(e) do
require IEx
IEx.pry
e
end
Allow? [Yn] Y
Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
pry(1)> e
[4, 16, 36, 64, 100]
pry(2)> respawn
Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
[4, 16, 36]
iex(1)>
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow