Elixir Language
Tipps zum Debuggen
Suche…
Debuggen mit IEX.pry / 0
Das Debuggen mit IEx.pry/0
ist recht einfach.
-
require IEx
in Ihrem Modul - Suchen Sie die Codezeile, die Sie untersuchen möchten
- Fügen
IEx.pry
nach der ZeileIEx.pry
hinzu
Starten Sie nun Ihr Projekt (zB iex -S mix
).
Wenn die Zeile mit IEx.pry/0
erreicht ist, wird das Programm IEx.pry/0
und Sie haben die Möglichkeit zu prüfen. Es ist wie ein Haltepunkt in einem traditionellen Debugger.
Wenn Sie fertig sind, tippen Sie einfach respawn
in die Konsole.
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
Debuggen mit IO.inspect / 1
Es ist möglich, IO.inspect / 1 als Werkzeug zum Debuggen eines Elixierprogramms zu verwenden.
defmodule MyModule do
def myfunction(argument_1, argument_2) do
IO.inspect(argument_1)
IO.inspect(argument_2)
end
end
Es werden Argumente_1 und Argumente_2 an die Konsole ausgegeben. Da IO.inspect/1
sein Argument zurückgibt, ist es sehr einfach, es in Funktionsaufrufe oder Pipelines aufzunehmen, ohne den Fluss zu IO.inspect/1
:
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))
In Rohrleitung debuggen
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]
In Pfeife hebeln
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow