[Laszlo-dev] flash.trace.Trace: Useful for profiling?

André Bargull andre.bargull at udo.edu
Sat Sep 19 15:37:34 PDT 2009


Maybe you find it useful for profiling..
Also see: 
http://hg.mozilla.org/tamarin-central/file/dab354bc047c/extensions/Trace.as

<canvas debug="true">
 <passthrough>
   import flash.trace.Trace;
 </passthrough>
 <attribute name="traceLog" value="$once{[]}" />
 <!--
  Trace.OFF
  Trace.METHODS
  Trace.METHODS_WITH_ARGS
  Trace.METHODS_AND_LINES
  Trace.METHODS_AND_LINES_WITH_ARGS
 -->
 <attribute name="traceLevel" value="$once{Trace.METHODS_WITH_ARGS}" 
type="number"/>
 <method name="traceListener" args="file_name:String, linenum:int, 
method_name:String, method_args:String">
   if (! (method_name == '' ||
            method_name.indexOf('Array') == 0 ||
            method_name.indexOf('Object') == 0 ||
            method_name.indexOf('Function') == 0 ||
            method_name.indexOf('String') == 0 ||
            method_name.indexOf('Math$') == 0 ||
            method_name.indexOf('global/') == 0 ||
            method_name.indexOf('flash.') == 0 ||
            method_name.indexOf('mx.') == 0)) {
     canvas.traceLog.push(file_name, linenum, method_name, method_args);
   }
 </method>
 <method name="setTrace" args="on:Boolean">
   if (on) {
     Debug.info("start tracing")
     canvas.traceLog = [];
     Trace.setLevel(canvas.traceLevel, Trace.LISTENER);
     Trace.setListener(canvas.traceListener);
   } else {
     Trace.setListener(null);
     Trace.setLevel(Trace.OFF, Trace.LISTENER);
     Debug.info("done tracing, %d elements", canvas.traceLog.length / 4)
   }
 </method>
 <method name="dumpTrace" ><![CDATA[
   var log = canvas.traceLog;
   var MAX = Math.min(4*200, log.length);
   var i = 0;
   function dump () {
     var max = Math.min(i + 4*100, MAX);
     for (; i<max; i+=4) {
       Debug.write("file=%s, line=%d, method=%s, args=%s", log[i], 
log[i+1], log[i+2], log[i+3]);
     }
     if (max != MAX) {
       LzTimeKernel.setTimeout(dump, 1);
     } else if (MAX < log.length) {
       Debug.info("omitted %d entries", (log.length - MAX) / 4);
     }
   }
   dump();
 ]]></method>
<button text="enable" onclick="canvas.setTrace(true)" />
<button x="100" text="disable" onclick="canvas.setTrace(false)" />
<button x="200" text="dump trace" onclick="canvas.dumpTrace()" />
</canvas>



More information about the Laszlo-dev mailing list