View Source IEx.Pry (IEx v1.19.0-dev)

The low-level API for prying sessions and setting up breakpoints.

Summary

Functions

Annotate quoted expression with line-by-line IEx.Pry debugging steps.

Sets up a breakpoint on the given module/function/arity.

Sets up a breakpoint on the given module/function/args with the given guard.

Returns all breakpoints.

Removes all breakpoints on all modules.

Removes breakpoints in the given module.

Resets the breaks on a given breakpoint ID.

Resets the breaks for the given module, function and arity.

Formats the location for whereami/3 prying.

Types

break()

@type break() :: {id(), module(), {function(), arity()}, pending :: non_neg_integer()}

break_error()

@type break_error() ::
  :recompilation_failed
  | :no_beam_file
  | :unknown_function_arity
  | :missing_debug_info
  | :outdated_debug_info
  | :non_elixir_module

id()

@type id() :: integer()

Functions

annotate_quoted(quoted, condition, caller)

(since 1.17.0)
@spec annotate_quoted(Macro.t(), Macro.t(), Macro.Env.t()) :: Macro.t()

Annotate quoted expression with line-by-line IEx.Pry debugging steps.

It expects the quoted expression to annotate, a boolean condition that controls if pry should run or not (usually is simply the boolean true), and the caller macro environment.

break(module, function, arity, breaks \\ 1)

@spec break(module(), atom(), arity(), non_neg_integer()) ::
  {:ok, id()} | {:error, break_error()}

Sets up a breakpoint on the given module/function/arity.

break(module, function, args, guard, env, breaks \\ 1)

@spec break(
  module(),
  atom(),
  [Macro.t()],
  Macro.t(),
  Macro.Env.t(),
  non_neg_integer()
) ::
  {:ok, id()} | {:error, break_error()}

Sets up a breakpoint on the given module/function/args with the given guard.

It requires an env to be given to make the expansion of the guards.

break!(module, function, arity, breaks \\ 1)

@spec break!(module(), atom(), arity(), non_neg_integer()) :: id()

Raising variant of break/4.

break!(module, function, args, guard, env, breaks \\ 1)

@spec break!(
  module(),
  atom(),
  [Macro.t()],
  Macro.t(),
  Macro.Env.t(),
  non_neg_integer()
) :: id()

Raising variant of break/6.

breaks()

@spec breaks() :: [break()]

Returns all breakpoints.

pry(binding, env)

Callback for IEx.pry/0.

You can invoke this function directly when you are not able to invoke IEx.pry/0 as a macro. This function expects the binding (from binding/0) and the environment (from __ENV__/0).

remove_breaks()

@spec remove_breaks() :: :ok

Removes all breakpoints on all modules.

This effectively loads the non-instrumented version of currently instrumented modules into memory.

remove_breaks(module)

@spec remove_breaks(module()) :: :ok | {:error, :no_beam_file}

Removes breakpoints in the given module.

This effectively loads the non-instrumented version of the module into memory.

reset_break(id)

@spec reset_break(id()) :: :ok | :not_found

Resets the breaks on a given breakpoint ID.

reset_break(module, function, arity)

@spec reset_break(module(), atom(), arity()) :: :ok | :not_found

Resets the breaks for the given module, function and arity.

If the module is not instrumented or if the given function does not have a breakpoint, it is a no-op and it returns :not_found. Otherwise it returns :ok.

whereami(file, line, radius)

@spec whereami(String.t(), non_neg_integer(), pos_integer()) ::
  {:ok, IO.chardata()} | :error

Formats the location for whereami/3 prying.

It receives the file, line and the snippet radius and returns {:ok, lines}, where lines is a list of chardata containing each formatted line, or :error.

The actual line is especially formatted in bold.