查看源码 i (调试器 v5.5)

调试器/解释器接口。

i 模块为图形调试器使用的一些函数和模块 int (Erlang 解释器)中的一些函数提供了简短形式。

此模块还提供了显示有关解释进程和断点状态信息的功能。

仅通过给出相应的进程标识即可附加到解释进程。默认情况下,会显示一个附加窗口。其他 Erlang 节点上的进程可以手动或自动附加。

此模块中的函数在 Erlang shell 中定义。也就是说,它们可以在没有 i: 前缀的情况下调用。例如

1> ii(t).
{module,t}
2> iaa([init]).
true

摘要

函数

打印有关使用此模块中函数的帮助信息。

附加到被调试的进程 Pid

附加到被调试的进程 Pid

等效于 ia(Pid),其中 Pid 是调用 shell 函数 pid(X, Y, Z) 的结果。

等效于 ia(Pid, Function),其中 Pid 是调用 shell 函数 pid(X, Y, Z) 的结果。

设置何时自动附加到被调试的进程。

设置何时以及如何自动附加到被调试的进程。

ModuleLine 行创建一个断点。

在函数 Module:Name/Arity 的每个子句的第一行创建断点。

ModuleLine 行的断点的触发操作设置为 Action

ModuleLine 行的断点的条件测试设置为 Function

使 ModuleLine 行的断点无效。

使 ModuleLine 行的断点有效。

通过删除所有关于已终止进程的信息,清除有关执行解释代码的进程的信息。

在本地节点上解释指定的模块。

打印所有解释的模块。

启动一个新的图形监视器窗口。

在所有已知节点上解释指定的模块。

停止在所有已知节点上解释指定的模块。

打印所有解释进程的当前状态。

打印所有现有断点。

打印 Module 中的所有现有断点。

停止在本地节点上解释指定的模块。

删除所有解释模块中的所有断点。

删除 Module 中的所有断点。

删除 ModuleLine 行的断点。

删除函数 Module:Name/Arity 的每个子句第一行的断点。

设置如何在堆栈中保存调用帧。

返回解释器(调试器)的当前版本。

函数

-spec help() -> ok.

打印有关使用此模块中函数的帮助信息。

-spec ia(Pid) -> ok | no_proc when Pid :: pid().

附加到被调试的进程 Pid

为该进程打开一个“附加进程”窗口。

-spec ia(Pid, Function) -> ok | no_proc
            when Pid :: pid(), Function :: {Module, Name}, Module :: module(), Name :: atom().

附加到被调试的进程 Pid

解释器调用 spawn(Module, Name, [Pid]) (并忽略结果)。

-spec ia(X, Y, Z) -> ok | no_proc when X :: integer(), Y :: integer(), Z :: integer().

等效于 ia(Pid),其中 Pid 是调用 shell 函数 pid(X, Y, Z) 的结果。

链接到此函数

ia(X, Y, Z, Function)

查看源码
-spec ia(X, Y, Z, Function) -> ok | no_proc
            when
                X :: integer(),
                Y :: integer(),
                Z :: integer(),
                Function :: {Module, Name},
                Module :: module(),
                Name :: atom().

等效于 ia(Pid, Function),其中 Pid 是调用 shell 函数 pid(X, Y, Z) 的结果。

附加的进程应调用非官方函数 int:attached(Pid),并能够处理来自解释器的消息。例如,请参阅 dbg_wx_trace.erl

-spec iaa(Flags) -> true when Flags :: [init | break | exit].

设置何时自动附加到被调试的进程。

调试器提供一个函数,为该进程打开“附加进程”窗口。

有关更多信息,请参阅 int:auto_attach/2

链接到此函数

iaa(Flags, Function)

查看源码
-spec iaa(Flags, Function) -> true
             when
                 Flags :: [init | break | exit],
                 Function :: {Module, Name, Args},
                 Module :: module(),
                 Name :: atom(),
                 Args :: [term()].

设置何时以及如何自动附加到被调试的进程。

有关更多信息,请参阅 int:auto_attach/2

-spec ib(Module, Line) -> ok | {error, break_exists} when Module :: module(), Line :: integer().

ModuleLine 行创建一个断点。

链接到此函数

ib(Module, Name, Arity)

查看源码
-spec ib(Module, Name, Arity) -> ok | {error, function_not_found}
            when Module :: module(), Name :: atom(), Arity :: integer().

在函数 Module:Name/Arity 的每个子句的第一行创建断点。

链接到此函数

iba(Module, Line, Action)

查看源码
-spec iba(Module, Line, Action) -> ok
             when Module :: module(), Line :: integer(), Action :: enable | disable | delete.

ModuleLine 行的断点的触发操作设置为 Action

链接到此函数

ibc(Module, Line, Function)

查看源码
-spec ibc(Module, Line, Function) -> ok
             when Module :: module(), Line :: integer(), Function :: {Module, Name}, Name :: atom().

ModuleLine 行的断点的条件测试设置为 Function

条件测试通过调用 Module:Name(Bindings) 来执行,其中 Bindings 是当前的变量绑定。该函数必须返回 true(中断)或 false(不中断)。要检索变量 Var 的值,请使用 int:get_binding(Var, Bindings)

-spec ibd(Module, Line) -> ok when Module :: module(), Line :: integer().

使 ModuleLine 行的断点无效。

-spec ibe(Module, Line) -> ok when Module :: module(), Line :: integer().

使 ModuleLine 行的断点有效。

-spec ic() -> ok.

通过删除所有关于已终止进程的信息,清除有关执行解释代码的进程的信息。

-spec 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.

在本地节点上解释指定的模块。

  • 如果 AbsModule :: Module | File,则 Result :: {module, Module} | error

  • 如果 AbsModules :: [AbsModule],则 Result :: ok

有关更多信息,请参阅 int:i/1

-spec il() -> ok.

打印所有解释的模块。

模块与相应源代码文件的完整路径名一起打印。

-spec im() -> pid().

启动一个新的图形监视器窗口。

这是监视器窗口,调试器的主窗口。所有调试器和解释器功能都从监视器窗口访问。此窗口显示所有已执行或正在执行解释模块的进程的状态。

-spec 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.

在所有已知节点上解释指定的模块。

  • 如果 AbsModule :: Module | File,则 Result :: {module, Module} | error

  • 如果 AbsModules :: [AbsModule],则 Result :: ok

有关更多信息,请参阅 int:ni/1

-spec inq(AbsModule) -> ok when AbsModule :: Module | File, Module :: module(), File :: file:name_all().

停止在所有已知节点上解释指定的模块。

-spec ip() -> ok.

打印所有解释进程的当前状态。

-spec ipb() -> ok.

打印所有现有断点。

-spec ipb(Module) -> ok when Module :: module().

打印 Module 中的所有现有断点。

-spec iq(AbsModule) -> ok when AbsModule :: Module | File, Module :: module(), File :: file:name_all().

停止在本地节点上解释指定的模块。

-spec ir() -> ok.

删除所有解释模块中的所有断点。

-spec ir(Module) -> ok when Module :: module().

删除 Module 中的所有断点。

-spec ir(Module, Line) -> ok when Module :: module(), Line :: integer().

删除 ModuleLine 行的断点。

链接到此函数

ir(Module, Name, Arity)

查看源码
-spec ir(Module, Name, Arity) -> ok | {error, function_not_found}
            when Module :: module(), Name :: atom(), Arity :: integer().

删除函数 Module:Name/Arity 的每个子句第一行的断点。

-spec ist(Flag) -> true when Flag :: all | no_tail | false.

设置如何在堆栈中保存调用帧。

有关更多信息,请参阅 int:stack_trace/1

-spec iv() -> atom().

返回解释器(调试器)的当前版本。