खोज…


IEX.pry / 0 के साथ डिबगिंग

IEx.pry/0 साथ डिबगिंग काफी सरल है।

  1. अपने मॉड्यूल में require IEx
  2. आप जिस कोड का निरीक्षण करना चाहते हैं, उसकी लाइन का पता लगाएं
  3. लाइन के बाद IEx.pry जोड़ें

अब अपना प्रोजेक्ट शुरू करें (जैसे कि iex -S mix )।

जब IEx.pry/0 साथ लाइन प्रोग्राम तक पहुंच जाती है तो आप रुक जाएंगे और आपके पास निरीक्षण करने का मौका होगा। यह एक पारंपरिक डिबगर में एक ब्रेकपॉइंट की तरह है।

जब आप समाप्त कर सिर्फ टाइप respawn कंसोल में।

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

IO.inspect / 1 के साथ डिबगिंग

एक अमृत कार्यक्रम को डिबग करने के लिए एक उपकरण के रूप में IO.inspect / 1 का उपयोग करना संभव है।

defmodule MyModule do
  def myfunction(argument_1, argument_2) do
    IO.inspect(argument_1)
    IO.inspect(argument_2)
  end
end

यह तर्क 1 और तर्क 2 को कंसोल पर प्रिंट करेगा। चूंकि 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))

पाइप में डिबग

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]

पाइप में डालें

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
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow