Raxol.Debug (Raxol v2.0.1)

View Source

Debug mode utilities and detailed logging for Raxol terminal emulator.

This module provides comprehensive debugging capabilities including:

  • Conditional debug logging based on configuration
  • Performance timing and profiling
  • Terminal state inspection
  • ANSI sequence debugging
  • Event flow tracing

Summary

Functions

Returns a specification to start this module under a supervisor.

Conditional breakpoint that only triggers in debug mode. Useful for interactive debugging.

Get current debug configuration.

Check if debug mode is enabled for a specific component.

Debug log that only outputs when debug mode is enabled.

Disables debug mode.

Disable debug mode for a component at runtime.

Dump current process state for debugging.

Enables debug mode at the specified level.

Enable debug mode for a component at runtime.

Gets current debug level.

Log ANSI sequence parsing for debugging.

Log event flow for debugging event handling.

Log rendering performance metrics.

Log terminal state for debugging.

Time execution of a function and log the results if debug mode is enabled.

Types

debug_context()

@type debug_context() :: %{
  module: module(),
  function: atom(),
  line: integer(),
  metadata: map()
}

debug_level()

@type debug_level() :: :off | :basic | :detailed | :verbose

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

debug_breakpoint(component, reason \\ "Debug breakpoint")

@spec debug_breakpoint(atom(), binary()) :: :ok

Conditional breakpoint that only triggers in debug mode. Useful for interactive debugging.

debug_config()

@spec debug_config() :: %{
  terminal: boolean(),
  web: boolean(),
  benchmark: boolean(),
  parser: boolean(),
  rendering: boolean(),
  general: boolean(),
  log_level: Logger.level()
}

Get current debug configuration.

debug_enabled?(component \\ :terminal)

@spec debug_enabled?(atom()) :: boolean()

Check if debug mode is enabled for a specific component.

debug_log(component, message, opts \\ [])

@spec debug_log(binary() | atom(), any(), keyword()) :: :ok

Debug log that only outputs when debug mode is enabled.

disable()

@spec disable() :: :ok

Disables debug mode.

disable_debug(component)

@spec disable_debug(atom()) :: :ok

Disable debug mode for a component at runtime.

dump_process_state(component)

@spec dump_process_state(atom()) :: :ok

Dump current process state for debugging.

enable(level \\ :basic)

@spec enable(debug_level()) :: :ok

Enables debug mode at the specified level.

enable_debug(component)

@spec enable_debug(atom()) :: :ok

Enable debug mode for a component at runtime.

get_debug_level()

@spec get_debug_level() :: debug_level()

Gets current debug level.

log_ansi_sequence(sequence, parsed_data, opts \\ [])

@spec log_ansi_sequence(binary(), map(), keyword()) :: :ok

Log ANSI sequence parsing for debugging.

log_event_flow(event_type, event_data, handler_result, opts \\ [])

@spec log_event_flow(atom(), map(), map(), keyword()) :: :ok

Log event flow for debugging event handling.

log_render_metrics(metrics, opts \\ [])

@spec log_render_metrics(
  map(),
  keyword()
) :: :ok

Log rendering performance metrics.

log_terminal_state(state, opts \\ [])

@spec log_terminal_state(
  map(),
  keyword()
) :: :ok

Log terminal state for debugging.

start_link(init_opts \\ [])

time_debug(component, operation, fun)

@spec time_debug(atom(), binary(), function()) :: any()

Time execution of a function and log the results if debug mode is enabled.