i(3)
β¨ NAME β¨
i β Debugger/Interpreter Interface π (the little module with the tiny name and the big main-character energy, fr fr)
π¦ DESCRIPTION π¦
Okay bestie so the i module is basically the short-form era of the graphical Debugger π β it hands you cute lil abbreviations for a bunch of the functions the Debugger uses, plus some of the functions living over in module int, the Erlang interpreter.
On top of that, this module also gives you the hookup for displaying status info about interpreted processes and breakpoints. Very "let me check in on my processes" of it π
And here's the slay part: you can attach to interpreted processes by only handing over the corresponding process identity. By default, an attachment window pops up for you β¨. Processes sitting on other Erlang nodes can be attached either manually or automatically β your choice, no pressure π«Ά.
Now, the functions in this module are defined in the Erlang shell. That means you can call them without the i: prefix. Like:
1> ii(t).
{module,t}
2> iaa([init]).
true
periodt π«
π FUNCTIONS π
help() -> ok.
Prints help for using the functions in this module. Your lil instruction manual moment π
ia(Pid) -> ok | no_proc when Pid :: pid().
ia(Pid) -> ok | no_proc when Pid :: pid().
Attaches to the debugged process Pid π«Ά
An "Attach Process" window is opened for the process.
ia(Pid, Function) -> ok | no_proc
ia(Pid, Function) -> ok | no_proc
when
Pid :: pid(),
Function :: {Module, Name},
Module :: module(),
Name :: atom().
Attaches to the debugged process Pid π
The interpreter calls spawn(Module, Name, [Pid]) (and ignores the result). Yeah, it just spawns and moves on, no cap π
ia(X, Y, Z) -> ok | no_proc
ia(X, Y, Z) -> ok | no_proc
when X :: integer(), Y :: integer(), Z :: integer().
Equivalent to ia(Pid), where Pid is the result of calling the shell function pid(X, Y, Z). Same vibe, different entry point β¨
ia(X, Y, Z, Function) -> ok | no_proc
ia(X, Y, Z, Function) -> ok | no_proc
when
X :: integer(),
Y :: integer(),
Z :: integer(),
Function :: {Module, Name},
Module :: module(),
Name :: atom().
Equivalent to ia(Pid, Function), where Pid is the result of calling the shell function pid(X, Y, Z) π
An attached process is expected to call the unofficial function int:attached(Pid) and to be able to handle messages from the interpreter. For an example, see dbg_wx_trace.erl π¦
lowkey important: that function is unofficial, so don't come for me if you lean on it too hard π
iaa(Flags) -> true
iaa(Flags) -> true when Flags :: [init | break | exit].
Sets when to attach to a debugged process automatically π₯
Debugger supplies a function that opens "Attach Process" window for the process.
See int:auto_attach/2 for more information.
iaa(Flags, Function) -> true
iaa(Flags, Function) -> true
when
Flags :: [init | break | exit],
Function :: {Module, Name, Args},
Module :: module(),
Name :: atom(),
Args :: [term()].
Sets when and how to attach to a debugged process automatically π
See int:auto_attach/2 for more information.
ib(Module, Line) -> ok | {error, break_exists}
ib(Module, Line) -> ok | {error, break_exists}
when Module :: module(), Line :: integer().
Creates a breakpoint at Line in Module β
ib(Module, Name, Arity) -> ok | {error, function_not_found}
ib(Module, Name, Arity) -> ok | {error, function_not_found}
when Module :: module(), Name :: atom(), Arity :: integer().
Creates breakpoints at the first line of every clause of function Module:Name/Arity. All of them. Not one, not two, all of them π
iba(Module, Line, Action) -> ok
iba(Module, Line, Action) -> ok
when
Module :: module(),
Line :: integer(),
Action :: enable | disable | delete.
Sets the trigger action of the breakpoint at Line in Module to Action π
ibc(Module, Line, Function) -> ok
ibc(Module, Line, Function) -> ok
when
Module :: module(),
Line :: integer(),
Function :: {Module, Name},
Name :: atom().
Sets the conditional test of the breakpoint at Line in Module to Function πΈ
The conditional test is performed by calling Module:Name(Bindings), where Bindings is the current variable bindings. The function must return true (break) or false (do not break). To retrieve the value of a variable Var use int:get_binding(Var, Bindings) π«
ibd(Module, Line) -> ok
ibd(Module, Line) -> ok when Module :: module(), Line :: integer().
Makes the breakpoint at Line in Module inactive π΄ (breakpoint is on do-not-disturb)
ibe(Module, Line) -> ok
ibe(Module, Line) -> ok when Module :: module(), Line :: integer().
Makes the breakpoint at Line in Module active π¨ (breakpoint is back and thriving)
ic() -> ok.
Clears information about processes executing interpreted code by removing all information about terminated processes. Spring cleaning era π§Ήβ¨
ii(AbsModules | AbsModule) -> Result
ii(AbsModules | AbsModule) -> Result
when
AbsModules :: [AbsModule, ...],
AbsModule :: Module | File,
Module :: module(),
File :: file:name_all(),
Result :: AbsModuleResult | AbsModulesResult,
AbsModuleResult :: {module, Module} | error,
AbsModulesResult :: ok.
Interprets the specified module(s) on the local node π
- If
AbsModule :: Module | File, thenResult :: {module, Module} | error. - If
AbsModules :: [AbsModule], thenResult :: ok.
See int:i/1 for more information.
il() -> ok.
Makes a printout of all interpreted modules π
Modules are printed together with the full path name of the corresponding source code file. Recipts included, bestie β¨
im() -> pid().
Starts a new graphical Monitor window πͺ
This is the Monitor window, the main window of Debugger. All the Debugger and interpreter functionality is accessed from the Monitor window. This window displays the status of all processes that have been or are executing interpreted modules. It's giving main window energy π
ini(AbsModules | AbsModule) -> Result
ini(AbsModules | AbsModule) -> Result
when
AbsModules :: [AbsModule],
AbsModule :: Module | File,
Module :: module(),
File :: file:name_all(),
Result :: AbsModuleResult | AbsModulesResult,
AbsModuleResult :: {module, Module} | error,
AbsModulesResult :: ok.
Interprets the specified module(s) on all known nodes π
- If
AbsModule :: Module | File, thenResult :: {module, Module} | error. - If
AbsModules :: [AbsModule], thenResult :: ok.
See int:ni/1 for more information.
inq(AbsModule) -> ok
inq(AbsModule) -> ok
when
AbsModule :: Module | File,
Module :: module(),
File :: file:name_all().
Stops interpreting the specified module on all known nodes π
ip() -> ok.
Prints the current status of all interpreted processes π bestie is doing a vibe check on every process rn
ipb() -> ok.
Prints all existing breakpoints π
ipb(Module) -> ok
ipb(Module) -> ok when Module :: module().
Prints all existing breakpoints in Module π
iq(AbsModule) -> ok
iq(AbsModule) -> ok
when
AbsModule :: Module | File,
Module :: module(),
File :: file:name_all().
Stops interpreting the specified module on the local node π«
ir() -> ok.
Deletes all breakpoints in all interpreted modules. Clean slate, fresh start π β¨
ir(Module) -> ok
ir(Module) -> ok when Module :: module().
Deletes all breakpoints in Module π§Ή
ir(Module, Line) -> ok
ir(Module, Line) -> ok when Module :: module(), Line :: integer().
Deletes the breakpoint at Line in Module ποΈ
ir(Module, Name, Arity) -> ok | {error, function_not_found}
ir(Module, Name, Arity) -> ok | {error, function_not_found}
when Module :: module(), Name :: atom(), Arity :: integer().
Deletes the breakpoints at the first line of every clause of function Module:Name/Arity π§Ό
ist(Flag) -> true
ist(Flag) -> true when Flag :: all | no_tail | false.
Sets how to save call frames in the stack π₯
See int:stack_trace/1 for more information.
iv() -> atom().
Returns the current version of the interpreter (Debugger) π·οΈ (and yes it's an atom, she's classy like that)
okay bye bestie, go forth and breakpoint responsibly π«Άπ
β mwah, this page was brought to you by Ericsson AB, serving up debugger 7.0, section i(3) πΈβ¨
π¦ where this page comes from
- nixos 26.05: erlang 29.1.2
- nixpkgs unstable: erlang 29.1.2
- ubuntu stonking: erlang-doc 1:29.0.6+dfsg-1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms