Slide 1

Slide 1 text

Debugging elixir efficiently

Slide 2

Slide 2 text

Guillaume Cauchon @gcauchon @Mirego @alagarderie

Slide 3

Slide 3 text

Debugging techniques in Elixir Solid Ground // Saša Jurić Empex 2017

Slide 4

Slide 4 text

> IO.puts/2 IO.inspect/2 Apex.ap/2

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

IEx.pry

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

:debugger

Slide 9

Slide 9 text

iex(1)> :debugger.start() {:ok, #PID<0.156.0>} iex(2)> :int.ni(Demo) {:module, Demo} iex(3)> :int.break(Demo, 14) :ok iex(4)>

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

iex(1)> Demo.fibonacci(10) 55 iex(2)> Demo.fibonacci(50) 12586269025 iex(3)> Demo.fibonacci(99) 218922995834555169026 iex(4)> Demo.fibonacci(-10)

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

:observer

Slide 15

Slide 15 text

iex(1)> Demo.fibonacci(-10) …

Slide 16

Slide 16 text

> iex --erl "+S 1" -S mix * iex(1)> :observer.start() :ok iex(2)> Demo.fibonacci(20) 6765 iex(3)> Demo.fibonacci(99) 218922995834555169026 iex(4)> Demo.fibonacci(-1) … * Start the Erlang VM with a single process scheduler to demonstrate the infinite loop more explicitly.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content