查看源码 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)
的结果。
设置何时自动附加到被调试的进程。
设置何时以及如何自动附加到被调试的进程。
在 Module
的 Line
行创建一个断点。
在函数 Module:Name/Arity
的每个子句的第一行创建断点。
将 Module
的 Line
行的断点的触发操作设置为 Action
。
将 Module
的 Line
行的断点的条件测试设置为 Function
。
使 Module
的 Line
行的断点无效。
使 Module
的 Line
行的断点有效。
通过删除所有关于已终止进程的信息,清除有关执行解释代码的进程的信息。
在本地节点上解释指定的模块。
打印所有解释的模块。
启动一个新的图形监视器窗口。
在所有已知节点上解释指定的模块。
停止在所有已知节点上解释指定的模块。
打印所有解释进程的当前状态。
打印所有现有断点。
打印 Module
中的所有现有断点。
停止在本地节点上解释指定的模块。
删除所有解释模块中的所有断点。
删除 Module
中的所有断点。
删除 Module
的 Line
行的断点。
删除函数 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])
(并忽略结果)。
等效于 ia(Pid)
,其中 Pid
是调用 shell 函数 pid(X, Y, Z)
的结果。
-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。
-spec iaa(Flags, Function) -> true when Flags :: [init | break | exit], Function :: {Module, Name, Args}, Module :: module(), Name :: atom(), Args :: [term()].
设置何时以及如何自动附加到被调试的进程。
有关更多信息,请参阅 int:auto_attach/2。
在 Module
的 Line
行创建一个断点。
-spec ib(Module, Name, Arity) -> ok | {error, function_not_found} when Module :: module(), Name :: atom(), Arity :: integer().
在函数 Module:Name/Arity
的每个子句的第一行创建断点。
-spec iba(Module, Line, Action) -> ok when Module :: module(), Line :: integer(), Action :: enable | disable | delete.
将 Module
的 Line
行的断点的触发操作设置为 Action
。
-spec ibc(Module, Line, Function) -> ok when Module :: module(), Line :: integer(), Function :: {Module, Name}, Name :: atom().
将 Module
的 Line
行的断点的条件测试设置为 Function
。
条件测试通过调用 Module:Name(Bindings)
来执行,其中 Bindings
是当前的变量绑定。该函数必须返回 true
(中断)或 false
(不中断)。要检索变量 Var
的值,请使用 int:get_binding(Var, Bindings)。
使 Module
的 Line
行的断点无效。
使 Module
的 Line
行的断点有效。
-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
中的所有断点。
删除 Module
的 Line
行的断点。
-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().
返回解释器(调试器)的当前版本。