<!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 -- et_viewer</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/et-1.4.4.2.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>Event Tracer (ET)</strong><br><strong>Reference Manual</strong><br><small>Version 1.4.4.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="et " expanded="false">et<ul> <li><a href="et.html"> Top of manual page </a></li> <li title="trace_me-5"><a href="et.html#trace_me-5">trace_me/5</a></li> <li title="trace_me-4"><a href="et.html#trace_me-4">trace_me/4</a></li> <li title="phone_home-4"><a href="et.html#phone_home-4">phone_home/4</a></li> <li title="phone_home-5"><a href="et.html#phone_home-5">phone_home/5</a></li> <li title="report_event-4"><a href="et.html#report_event-4">report_event/4</a></li> <li title="report_event-5"><a href="et.html#report_event-5">report_event/5</a></li> </ul> </li> <li id="no" title="et_collector " expanded="false">et_collector<ul> <li><a href="et_collector.html"> Top of manual page </a></li> <li title="start_link-1"><a href="et_collector.html#start_link-1">start_link/1</a></li> <li title="stop-1"><a href="et_collector.html#stop-1">stop/1</a></li> <li title="save_event_file-3"><a href="et_collector.html#save_event_file-3">save_event_file/3</a></li> <li title="load_event_file-2"><a href="et_collector.html#load_event_file-2">load_event_file/2</a></li> <li title="report-2"><a href="et_collector.html#report-2">report/2</a></li> <li title="report_event-5"><a href="et_collector.html#report_event-5">report_event/5</a></li> <li title="report_event-6"><a href="et_collector.html#report_event-6">report_event/6</a></li> <li title="make_key-2"><a href="et_collector.html#make_key-2">make_key/2</a></li> <li title="get_table_handle-1"><a href="et_collector.html#get_table_handle-1">get_table_handle/1</a></li> <li title="get_global_pid-0"><a href="et_collector.html#get_global_pid-0">get_global_pid/0</a></li> <li title="change_pattern-2"><a href="et_collector.html#change_pattern-2">change_pattern/2</a></li> <li title="dict_insert-3"><a href="et_collector.html#dict_insert-3">dict_insert/3</a></li> <li title="dict_insert-3"><a href="et_collector.html#dict_insert-3">dict_insert/3</a></li> <li title="dict_insert-3"><a href="et_collector.html#dict_insert-3">dict_insert/3</a></li> <li title="dict_lookup-2"><a href="et_collector.html#dict_lookup-2">dict_lookup/2</a></li> <li title="dict_delete-2"><a href="et_collector.html#dict_delete-2">dict_delete/2</a></li> <li title="dict_match-2"><a href="et_collector.html#dict_match-2">dict_match/2</a></li> <li title="multicast-2"><a href="et_collector.html#multicast-2">multicast/2</a></li> <li title="start_trace_client-3"><a href="et_collector.html#start_trace_client-3">start_trace_client/3</a></li> <li title="iterate-3"><a href="et_collector.html#iterate-3">iterate/3</a></li> <li title="iterate-5"><a href="et_collector.html#iterate-5">iterate/5</a></li> <li title="clear_table-1"><a href="et_collector.html#clear_table-1">clear_table/1</a></li> </ul> </li> <li id="no" title="et_selector " expanded="false">et_selector<ul> <li><a href="et_selector.html"> Top of manual page </a></li> <li title="make_pattern-1"><a href="et_selector.html#make_pattern-1">make_pattern/1</a></li> <li title="change_pattern-1"><a href="et_selector.html#change_pattern-1">change_pattern/1</a></li> <li title="parse_event-2"><a href="et_selector.html#parse_event-2">parse_event/2</a></li> </ul> </li> <li id="loadscrollpos" title="et_viewer " expanded="true">et_viewer<ul> <li><a href="et_viewer.html"> Top of manual page </a></li> <li title="file-1"><a href="et_viewer.html#file-1">file/1</a></li> <li title="start-0"><a href="et_viewer.html#start-0">start/0</a></li> <li title="start-1"><a href="et_viewer.html#start-1">start/1</a></li> <li title="start_link-1"><a href="et_viewer.html#start_link-1">start_link/1</a></li> <li title="get_collector_pid-1"><a href="et_viewer.html#get_collector_pid-1">get_collector_pid/1</a></li> <li title="stop-1"><a href="et_viewer.html#stop-1">stop/1</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <!-- refpage --><center><h1>et_viewer</h1></center> <h3>MODULE</h3> <div class="REFBODY">et_viewer</div> <h3>MODULE SUMMARY</h3> <div class="REFBODY">Displays a sequence chart for trace events (messages/actions)</div> <h3>DESCRIPTION</h3> <div class="REFBODY"><p> <p></p> </p></div> <h3>EXPORTS</h3> <p><a name="file-1"><span class="bold_code">file(FileName) -> {ok, ViewerPid} | {error, Reason}</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">FileName() = string()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">ViewerPid = pid()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Reason = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Start a new event viewer and a corresponding collector and load them with trace events from a trace file.</p> </p></div> <p><a name="start-0"><span class="bold_code">start() -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Simplified start of a sequence chart viewer with global tracing activated.</p> <p>Convenient to be used from the command line (erl -s et_viewer).</p> </p></div> <p><a name="start-1"><span class="bold_code">start(Options) -> ok</span></a><br></p> <div class="REFBODY"><p> <p>Start of a sequence chart viewer without linking to the parent process.</p> </p></div> <p><a name="start_link-1"><span class="bold_code">start_link(Options) -> {ok, ViewerPid} | {error, Reason}</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">Options = [option() | collector_option()]</span><br> </div> <div class="REFTYPES"> <span class="bold_code">option() = {parent_pid, extended_pid()} | {title, term()} | {detail_level, detail_level()} | {is_suspended, boolean()} | {scale, integer()} | {width, integer()} | {height, integer()} | {collector_pid, extended_pid()} | {event_order, event_order()} | {active_filter, atom()} | {max_actors, extended_integer()} | {trace_pattern, et_collector_trace_pattern()} | {trace_port, et_collector_trace_port()} | {trace_global, et_collector_trace_global()} | {trace_client, et_collector_trace_client()} | {dict_insert, {filter, filter_name()}, event_filter_fun()} | {dict_insert, et_collector_dict_key(), et_collector_dict_val()} | {dict_delete, {filter, filter_name()}} | {dict_delete, et_collector_dict_key()} | {actors, actors()} | {first_event, first_key()} | {hide_unknown, boolean()} | {hide_actions, boolean()} | {display_mode, display_mode()}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">extended_pid() = pid() | undefined</span><br> </div> <div class="REFTYPES"> <span class="bold_code">detail_level() = min | max | integer(X) when X >=0, X =< 100</span><br> </div> <div class="REFTYPES"> <span class="bold_code">event_order() = trace_ts | event_ts</span><br> </div> <div class="REFTYPES"> <span class="bold_code">extended_integer() = integer() | infinity</span><br> </div> <div class="REFTYPES"> <span class="bold_code">display_mode() = all | {search_actors, direction(), first_key(), actors()}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">direction() = forward | reverse</span><br> </div> <div class="REFTYPES"> <span class="bold_code">first_key() = event_key()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">actors() = [term()]</span><br> </div> <div class="REFTYPES"> <span class="bold_code"></span><br> </div> <div class="REFTYPES"> <span class="bold_code">filter_name() = atom()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">filter_fun() = fun(Event) -> false | true | {true, NewEvent}</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Event = NewEvent = record(event)</span><br> </div> <div class="REFTYPES"> <span class="bold_code">ViewerPid = pid()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">Reason = term()</span><br> </div> </div> <div class="REFBODY"><p> <p>Start a sequence chart viewer for trace events (messages/actions)</p> <p>A filter_fun() takes an event record as sole argument and returns false | true | {true, NewEvent}.</p> <p>If the <span class="code">collector_pid</span> is <span class="code">undefined</span> a new <span class="code">et_collector</span> will be started with the following parameter settings: <span class="code">parent_pid</span>, <span class="code">event_order</span>, <span class="code">trace_global</span>, <span class="code">trace_pattern</span>, <span class="code">trace_port</span>, <span class="code">trace_max_queue</span>, <span class="code">trace_client</span>, <span class="code">dict_insert</span> and <span class="code">dict_delete</span>. The new <span class="code">et_viewer</span> will register itself as an <span class="code">et_collector</span> subscriber. </p> <p>Default values:</p> <ul> <li>parent_pid - self().</li> <li>title - "et_viewer".</li> <li>detail_level - max.</li> <li>is_suspended - false.</li> <li>scale - 2.</li> <li>width - 800.</li> <li>height - 600.</li> <li>collector_pid - undefined.</li> <li>event_order - trace_ts.</li> <li>active_filter - collector.</li> <li>max_actors - 5.</li> <li>actors - ["UNKNOWN"].</li> <li>first_event - first.</li> <li>hide_unknown - false.</li> <li>hide_actions - false.</li> <li>display_mode - all.</li> </ul> </p></div> <p><a name="get_collector_pid-1"><span class="bold_code">get_collector_pid(ViewerPid) -> CollectorPid</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">ViewerPid = pid()</span><br> </div> <div class="REFTYPES"> <span class="bold_code">CollectorPid = pid()</span><br> </div> </div> <div class="REFBODY"><p> <p>Returns the identifier of the collector process.</p> </p></div> <p><a name="stop-1"><span class="bold_code">stop(ViewerPid) -> ok</span></a><br></p> <div class="REFBODY"> <p>Types:</p> <div class="REFTYPES"> <span class="bold_code">ViewerPid = pid()</span><br> </div> </div> <div class="REFBODY"><p> <p>Stops a viewer process.</p> </p></div> </div> <div class="footer"> <hr> <p>Copyright © 2002-2012 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>