<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- i</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/debugger-4.1.2.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>Debugger</strong><br><strong>Reference Manual</strong><br><small>Version 4.1.2</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p> <ul class="flipMenu"> <li id="no" title="debugger " expanded="false">debugger<ul> <li><a href="debugger.html"> Top of manual page </a></li> <li title="start-0"><a href="debugger.html#start-0">start/0</a></li> <li title="start-1"><a href="debugger.html#start-1">start/1</a></li> <li title="start-1"><a href="debugger.html#start-1">start/1</a></li> <li title="start-2"><a href="debugger.html#start-2">start/2</a></li> <li title="quick-3"><a href="debugger.html#quick-3">quick/3</a></li> </ul> </li> <li id="loadscrollpos" title="i " expanded="true">i<ul> <li><a href="i.html"> Top of manual page </a></li> <li title="im-0"><a href="i.html#im-0">im/0</a></li> <li title="ii-1"><a href="i.html#ii-1">ii/1</a></li> <li title="ii-1"><a href="i.html#ii-1">ii/1</a></li> <li title="ini-1"><a href="i.html#ini-1">ini/1</a></li> <li title="ini-1"><a href="i.html#ini-1">ini/1</a></li> <li title="iq-1"><a href="i.html#iq-1">iq/1</a></li> <li title="inq-1"><a href="i.html#inq-1">inq/1</a></li> <li title="il-0"><a href="i.html#il-0">il/0</a></li> <li title="ip-0"><a href="i.html#ip-0">ip/0</a></li> <li title="ic-0"><a href="i.html#ic-0">ic/0</a></li> <li title="iaa-1"><a href="i.html#iaa-1">iaa/1</a></li> <li title="iaa-2"><a href="i.html#iaa-2">iaa/2</a></li> <li title="ist-1"><a href="i.html#ist-1">ist/1</a></li> <li title="ia-1"><a href="i.html#ia-1">ia/1</a></li> <li title="ia-3"><a href="i.html#ia-3">ia/3</a></li> <li title="ia-2"><a href="i.html#ia-2">ia/2</a></li> <li title="ia-4"><a href="i.html#ia-4">ia/4</a></li> <li title="ib-2"><a href="i.html#ib-2">ib/2</a></li> <li title="ib-3"><a href="i.html#ib-3">ib/3</a></li> <li title="ir-0"><a href="i.html#ir-0">ir/0</a></li> <li title="ir-1"><a href="i.html#ir-1">ir/1</a></li> <li title="ir-2"><a href="i.html#ir-2">ir/2</a></li> <li title="ir-3"><a href="i.html#ir-3">ir/3</a></li> <li title="ibd-2"><a href="i.html#ibd-2">ibd/2</a></li> <li title="ibe-2"><a href="i.html#ibe-2">ibe/2</a></li> <li title="iba-3"><a href="i.html#iba-3">iba/3</a></li> <li title="ibc-3"><a href="i.html#ibc-3">ibc/3</a></li> <li title="ipb-0"><a href="i.html#ipb-0">ipb/0</a></li> <li title="ipb-1"><a href="i.html#ipb-1">ipb/1</a></li> <li title="iv-0"><a href="i.html#iv-0">iv/0</a></li> <li title="help-0"><a href="i.html#help-0">help/0</a></li> </ul> </li> <li id="no" title="int " expanded="false">int<ul> <li><a href="int.html"> Top of manual page </a></li> <li title="i-1"><a href="int.html#i-1">i/1</a></li> <li title="i-1"><a href="int.html#i-1">i/1</a></li> <li title="ni-1"><a href="int.html#ni-1">ni/1</a></li> <li title="ni-1"><a href="int.html#ni-1">ni/1</a></li> <li title="n-1"><a href="int.html#n-1">n/1</a></li> <li title="nn-1"><a href="int.html#nn-1">nn/1</a></li> <li title="interpreted-0"><a href="int.html#interpreted-0">interpreted/0</a></li> <li title="file-1"><a href="int.html#file-1">file/1</a></li> <li title="interpretable-1"><a href="int.html#interpretable-1">interpretable/1</a></li> <li title="auto_attach-0"><a href="int.html#auto_attach-0">auto_attach/0</a></li> <li title="auto_attach-1"><a href="int.html#auto_attach-1">auto_attach/1</a></li> <li title="auto_attach-2"><a href="int.html#auto_attach-2">auto_attach/2</a></li> <li title="stack_trace-0"><a href="int.html#stack_trace-0">stack_trace/0</a></li> <li title="stack_trace-1"><a href="int.html#stack_trace-1">stack_trace/1</a></li> <li title="break-2"><a href="int.html#break-2">break/2</a></li> <li title="delete_break-2"><a href="int.html#delete_break-2">delete_break/2</a></li> <li title="break_in-3"><a href="int.html#break_in-3">break_in/3</a></li> <li title="del_break_in-3"><a href="int.html#del_break_in-3">del_break_in/3</a></li> <li title="no_break-0"><a href="int.html#no_break-0">no_break/0</a></li> <li title="no_break-1"><a href="int.html#no_break-1">no_break/1</a></li> <li title="disable_break-2"><a href="int.html#disable_break-2">disable_break/2</a></li> <li title="enable_break-2"><a href="int.html#enable_break-2">enable_break/2</a></li> <li title="action_at_break-3"><a href="int.html#action_at_break-3">action_at_break/3</a></li> <li title="test_at_break-3"><a href="int.html#test_at_break-3">test_at_break/3</a></li> <li title="get_binding-2"><a href="int.html#get_binding-2">get_binding/2</a></li> <li title="all_breaks-0"><a href="int.html#all_breaks-0">all_breaks/0</a></li> <li title="all_breaks-1"><a href="int.html#all_breaks-1">all_breaks/1</a></li> <li title="snapshot-0"><a href="int.html#snapshot-0">snapshot/0</a></li> <li title="clear-0"><a href="int.html#clear-0">clear/0</a></li> <li title="continue-1"><a href="int.html#continue-1">continue/1</a></li> <li title="continue-3"><a href="int.html#continue-3">continue/3</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <!-- refpage --><center><h1>i</h1></center> <h3>MODULE</h3> <div class="REFBODY">i</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">Debugger/Interpreter Interface.</div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p>The <span class="code">i</span> module provides short forms for some of the functions used by the graphical Debugger and some of the functions in module <span class="bold_code"><a href="int.html"><span class="code">int</span></a></span>, the Erlang interpreter.</p> <p>This module also provides facilities for displaying status information about interpreted processes and break points.</p> <p>It is possible to attach to interpreted processes by giving the corresponding process identity only. By default, an attachment window is displayed. Processes at other Erlang nodes can be attached manually or automatically.</p> <p>By preference, these functions can be included in module <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','stdlib','shell_default.html');"><span class="code">stdlib:shell_default</span></a></span>. By default, they are included in that module.</p> </p></div> <h3>EXPORTS</h3> <p><a name="im-0"><span class="bold_code">im() -> pid()</span></a><br></p> <div class="REFBODY"><p> <p>Starts a new graphical monitor. 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.</p> </p></div> <p><a name="ii-1"><span class="bold_code">ii(AbsModules) -> ok</span></a><br><a name="ii-1"><span class="bold_code">ii(AbsModule) -> {module, Module} | error</span></a><br><a name="ini-1"><span class="bold_code">ini(AbsModules) -> ok</span></a><br><a name="ini-1"><span class="bold_code">ini(AbsModule) -> {module, Module} | error</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">AbsModules = [AbsModule]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">AbsModule = Module | File</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> File = string()</span><br> </div> </div> <div class="REFBODY"><p> <p>Interprets the specified module(s). <span class="code">ii/1</span> interprets the module(s) only at the current node, see <span class="bold_code"><a href="int.html#i-1">int:i/1</a></span>. <span class="code">ini/1</span> interprets the module(s) at all known nodes, see <span class="bold_code"><a href="int.html#ni-1">int:ni/1</a></span>.</p> </p></div> <p><a name="iq-1"><span class="bold_code">iq(AbsModule) -> ok</span></a><br><a name="inq-1"><span class="bold_code">inq(AbsModule) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">AbsModule = Module | File</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> File = string()</span><br> </div> </div> <div class="REFBODY"><p> <p>Stops interpreting the specified module. <span class="code">iq/1</span> stops interpreting the module only at the current node. <span class="code">inq/1</span> stops interpreting the module at all known nodes.</p> </p></div> <p><a name="il-0"><span class="bold_code">il() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Makes a printout of all interpreted modules. Modules are printed together with the full path name of the corresponding source code file.</p> </p></div> <p><a name="ip-0"><span class="bold_code">ip() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Prints the current status of all interpreted processes.</p> </p></div> <p><a name="ic-0"><span class="bold_code">ic() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Clears information about processes executing interpreted code by removing all information about terminated processes.</p> </p></div> <p><a name="iaa-1"><span class="bold_code">iaa(Flags) -> true</span></a><br><a name="iaa-2"><span class="bold_code">iaa(Flags, Function) -> true</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Flags = [init | break | exit]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Function = {Module,Name,Args}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = Name = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Args = [term()]</span><br> </div> </div> <div class="REFBODY"><p> <p>Sets when and how to attach to a debugged process automatically, see <span class="bold_code"><a href="int.html#auto_attach-0">int:auto_attach/2</a></span>. <span class="code">Function</span> defaults to the standard function used by Debugger.</p> </p></div> <p><a name="ist-1"><span class="bold_code">ist(Flag) -> true</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Flag = all | no_tail | false</span><br> </div> </div> <div class="REFBODY"><p> <p>Sets how to save call frames in the stack, see <span class="bold_code"><a href="int.html#stack_trace-0">int:stack_trace/1</a></span>.</p> </p></div> <p><a name="ia-1"><span class="bold_code">ia(Pid) -> ok | no_proc</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Pid = pid()</span><br> </div> </div> <div class="REFBODY"><p> <p>Attaches to the debugged process <span class="code">Pid</span>. An Attach Process window is opened for the process.</p> </p></div> <p><a name="ia-3"><span class="bold_code">ia(X,Y,Z) -> ok | no_proc</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">X = Y = Z = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Same as <span class="code">ia(Pid)</span>, where <span class="code">Pid</span> is the result of calling the shell function <span class="code">pid(X,Y,Z)</span>.</p> </p></div> <p><a name="ia-2"><span class="bold_code">ia(Pid, Function) -> ok | no_proc</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Pid = pid()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Function = {Module,Name}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = Name = atom()</span><br> </div> </div> <div class="REFBODY"><p> <p>Attaches to the debugged process <span class="code">Pid</span>. The interpreter calls <span class="code">spawn(Module, Name, [Pid])</span> (and ignores the result).</p> </p></div> <p><a name="ia-4"><span class="bold_code">ia(X,Y,Z, Function) -> ok | no_proc</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">X = Y = Z = int()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Function = {Module,Name}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Module = Name = atom()</span><br> </div> </div> <div class="REFBODY"><p> <p>Same as <span class="code">ia(Pid, Function)</span>, where <span class="code">Pid</span> is the result of calling the shell function <span class="code">pid(X,Y,Z)</span>. An attached process is expected to call the unofficial function <span class="code">int:attached(Pid)</span> and to be able to handle messages from the interpreter. For an example, see <span class="code">dbg_wx_trace.erl</span>.</p> </p></div> <p><a name="ib-2"><span class="bold_code">ib(Module, Line) -> ok | {error, break_exists}</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Creates a breakpoint at <span class="code">Line</span> in <span class="code">Module</span>.</p> </p></div> <p><a name="ib-3"><span class="bold_code">ib(Module, Name, Arity) -> ok | {error, function_not_found} </span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = Name = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Creates breakpoints at the first line of every clause of function <span class="code">Module:Name/Arity</span>.</p> </p></div> <p><a name="ir-0"><span class="bold_code">ir() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Deletes all breakpoints.</p> </p></div> <p><a name="ir-1"><span class="bold_code">ir(Module) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> </div> <div class="REFBODY"><p> <p>Deletes all breakpoints in <span class="code">Module</span>.</p> </p></div> <p><a name="ir-2"><span class="bold_code">ir(Module, Line) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Deletes the breakpoint at <span class="code">Line</span> in <span class="code">Module</span>.</p> </p></div> <p><a name="ir-3"><span class="bold_code">ir(Module, Name, Arity) -> ok | {error, function_not_found} </span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = Name = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Arity = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Deletes the breakpoints at the first line of every clause of function <span class="code">Module:Name/Arity</span>.</p> </p></div> <p><a name="ibd-2"><span class="bold_code">ibd(Module, Line) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Makes the breakpoint at <span class="code">Line</span> in <span class="code">Module</span> inactive.</p> </p></div> <p><a name="ibe-2"><span class="bold_code">ibe(Module, Line) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> </div> <div class="REFBODY"><p> <p>Makes the breakpoint at <span class="code">Line</span> in <span class="code">Module</span> active.</p> </p></div> <p><a name="iba-3"><span class="bold_code">iba(Module, Line, Action) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Action = enable | disable | delete</span><br> </div> </div> <div class="REFBODY"><p> <p>Sets the trigger action of the breakpoint at <span class="code">Line</span> in <span class="code">Module</span> to <span class="code">Action</span>.</p> </p></div> <p><a name="ibc-3"><span class="bold_code">ibc(Module, Line, Function) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Line = int()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Function = {Module,Name}</span><br> </div> <div class="REFTYPES"> <span class="bold_code"> Name = atom()</span><br> </div> </div> <div class="REFBODY"><p> <p>Sets the conditional test of the breakpoint at <span class="code">Line</span> in <span class="code">Module</span> to <span class="code">Function</span>.</p> <p>The conditional test is performed by calling <span class="code">Module:Name(Bindings)</span>, where <span class="code">Bindings</span> is the current variable bindings. The function must return <span class="code">true</span> (break) or <span class="code">false</span> (do not break). To retrieve the value of a variable <span class="code">Var</span>, use <span class="bold_code"><a href="int.html#get_binding-2">int:get_binding(Var, Bindings)</a></span>.</p> </p></div> <p><a name="ipb-0"><span class="bold_code">ipb() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Prints all existing breakpoints.</p> </p></div> <p><a name="ipb-1"><span class="bold_code">ipb(Module) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Module = atom()</span><br> </div> </div> <div class="REFBODY"><p> <p>Prints all existing breakpoints in <span class="code">Module</span>.</p> </p></div> <p><a name="iv-0"><span class="bold_code">iv() -> atom()</span></a><br></p> <div class="REFBODY"><p> <p>Returns the current version number of the interpreter. Same as the version number of the <span class="code">Debugger</span> application.</p> </p></div> <p><a name="help-0"><span class="bold_code">help() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Prints help text.</p> </p></div> <h3><a name="idp306428972">See Also</a></h3> <div class="REFBODY"> <p><span class="bold_code"><a href="int.html"><span class="code">int(3)</span></a></span></p> </div> </div> <div class="footer"> <hr> <p>Copyright © 1997-2018 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>