Please remember to update the svnmerge state in wafflecone if you didn't 
use it to do the merge - so we don't get confused later and re-merge. 
Thanks!

[EMAIL PROTECTED] wrote:
> Author: ptw
> Date: 2007-10-31 12:36:00 -0700 (Wed, 31 Oct 2007)
> New Revision: 7065
> 
> Modified:
>    openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzBacktrace.lzs
>    openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzDebug.lzs
>    
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
>    openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
> Log:
> Change 20071031-ptw-w by [EMAIL PROTECTED] on 2007-10-31 15:21:33 EDT
>     in /Users/ptw/OpenLaszlo/jujube
>     for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone
> 
> Summary: Merge Debug.bugReport to cranberry
> 
> New Features:
>     The `bugReport` method of the Debugger can be used to create a
>     report suitable for copy/pasting into a bug report.
> 
> Bugs Fixed:
> LPP-4719 'Provide a way to output relevant debug info to copy/paste into mail'
> 
> Technical Reviewer: ben (Message-Id: <[EMAIL PROTECTED]>)
> QA Reviewer: frisco (pending)
> Doc Reviewer: jsundman (Message-Id: <[EMAIL PROTECTED]>)
> 
> Documentation:
>     The `bugReport` method of the Debugger can be used to create a
>     report suitable for copy/pasting into a bug report.  To use it,
>     enable backtraces and debugging, then inspect the error message
>     that you believe reveals a bug, then invoke `Debug.bugReport()` in
>     the debugger.  Copy and paste the output of that call into your
>     bug report.
> 
> Details:
>     Merged r6484 and r6520 from trunk
> 
> Tests:
>     Inspection
> 
> 
> 
> Modified: 
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzBacktrace.lzs
> ===================================================================
> --- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzBacktrace.lzs   
> 2007-10-31 18:39:25 UTC (rev 7064)
> +++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzBacktrace.lzs   
> 2007-10-31 19:36:00 UTC (rev 7065)
> @@ -149,6 +149,21 @@
>    }
>  
>  /**
> +  * Map over a backtraces frames
> +  * @param fn:Function the function to call on each frame
> +  * @param limit:Maximum number of frames to map
> +  * 
> +  * @access private
> +  */
> +LzBacktrace.prototype.map = function(fn, limit) {
> +  if (! (fn instanceof Function)) { return; }
> +  if (! limit) { limit = this.length; }
> +  for (var i = this.length - 1; (i >= 0) && (limit > 0); i--, limit--) {
> +    fn(this[i]);
> +  }
> +}
> +
> +/**
>    * Convert a backtrace to a string
>    * @param printer:Function the function to print the backtrace
>    * functions with.  Defaults to Debug.__String
> 
> Modified: openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzDebug.lzs
> ===================================================================
> --- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzDebug.lzs       
> 2007-10-31 18:39:25 UTC (rev 7064)
> +++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/LzDebug.lzs       
> 2007-10-31 19:36:00 UTC (rev 7065)
> @@ -73,6 +73,12 @@
>    */
>  Debug.showInternalProperties = false;
>  
> +/** Any amendments to the environment for debug evaluator, initially
> +  * just _, __, and ___.  Could put things like write, format, inspect.
> +  * @access private
> +  */
> +Debug.environment = {};
> +
>  /**
>    * Display version info
>    */
> @@ -366,7 +372,95 @@
>    */
>  Debug.ObjectForID = function (id) {
>    return this.id_to_object_table[id];
> +};
> +
> +/**
> + * Format information about an error suitably for reporting a bug
> + *
> + * This method can be used to create a report suitable for
> + * copy/pasting into a bug report.  To use it, enable backtraces and
> + * debugging, inspect the error message that you believe reveals a
> + * bug, then invoke `Debug.bugReport()` in the debugger.  Copy and
> + * paste the output of that call into your bug report.
> + *
> + * @param error: An error message or ID.  Defaults to the last error
> + * that was inspected.
> + * @param Boolean verbose: If true, each frame
> + * argument in the backtrace will be inspected.  Defaults to the value
> + * of Debug.showInternalProperties.
> + *
> + * @note By inspecting an error message (by clicking on it), the error
> + * message will be assigned to the Debug environment variable `_`.
> + * Thus to enable a verbose report (which will detail all arguments of
> + * each frame, as opposed to just the `this` argument), invoke as
> + * `Debug.bugReport(_, true)`.
> + */
> +Debug.bugReport = function (error, verbose) {
> +  // Default values
> +  switch (arguments.length) {
> +    case 0:
> +    with (global) {
> +      with (this.environment) {
> +        error = _;
> +      }
> +    }
> +    case 1:
> +    verbose = this.showInternalProperties;
> +  }
> +  if (typeof(error) == 'number') {
> +    error = this.ObjectForID(error);
> +  }
> +  if (! (error instanceof LzSourceMessage)) {
> +    Debug.error("You must provide an error to report.  Please inspect an 
> error message and try again.")
> +    return;
> +  }
> +  if (! (('backtrace' in error) && (error.backtrace instanceof 
> LzBacktrace))) {
> +    Debug.error("Backtraces must be on to report a bug.  Please enable 
> backtracing and try again.");
> +    return;
> +  }
> +  var inspected = [];
> +  function inspect (obj, verbose) {
> +    var id = verbose && Debug.IDForObject(obj);
> +    if (id && (! (id in inspected))) {
> +      inspected[id] = obj;
> +    }
> +    return obj;
> +  }
> +
> +  Debug.format("Please copy the following information into your bug 
> report:\n\n---START OF BUG REPORT---\n\nLPS VERSION INFORMATION:\n");
> +  Debug.versionInfo();
> +  Debug.format("\nERROR MESSAGE: %s", error);
> +  Debug.format("\nERROR BACKTRACE:");
> +  error.backtrace.map(
> +    function (frame) {
> +      Debug.format("\n%w", frame);
> +      Debug.format("\n  this: %#w", inspect(frame['this'], true));
> +      var args = frame.arguments;
> +      for (var i = 0; i < args.length; i++) {
> +        Debug.format("\n  arg %2d: %#w", i, inspect(args[i], verbose));
> +      }
> +    });
> +  if (inspected.length > 0) {
> +    Debug.format("\n\nOBJECT DETAILS:");
> +    var keys = [];
> +    // Present the object's in ID-order so they are easier to find.
> +    for (var id in inspected) {
> +      keys.push(id);
> +    }
> +    keys.sort(function (a, b) {
> +        var al = parseInt(a);
> +        var bl = parseInt(b);
> +        return (al > bl) - (al < bl);
> +      });
> +    for (var i = 0; i < keys.length; i++) {
> +      var obj = inspected[keys[i]];
> +      Debug.format("\n");
> +      // Thus copy/paste will not get the 'hotlink' markup
> +      Debug.inspect(obj);
> +      Debug.format("\n");
> +    }
> +  }
> +  Debug.format("\n---END OF BUG REPORT---\n");
>  }
>  
>  
> -
> 
> Modified: 
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
> ===================================================================
> --- 
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
>   2007-10-31 18:39:25 UTC (rev 7064)
> +++ 
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
>   2007-10-31 19:36:00 UTC (rev 7065)
> @@ -191,12 +191,6 @@
>    this.displayResult(this.inspect(obj));
>  }
>  
> -/** Any amendments to the environment for debug evaluator, initially
> -  * just _, __, and ___.  Could put things like write, format, inspect.
> -  * @access private
> -  */
> -Debug.environment = {};
> -
>  /**
>    * @access private
>    */
> 
> Modified: 
> openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs
> ===================================================================
> --- openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs     
> 2007-10-31 18:39:25 UTC (rev 7064)
> +++ openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/views/LaszloCanvas.lzs     
> 2007-10-31 19:36:00 UTC (rev 7065)
> @@ -568,7 +568,7 @@
>      'Build: ' + canvas.lpsbuild + '\n' +
>      'Date: ' + canvas.lpsbuilddate + '\n' +
>      'Target: ' + canvas.runtime + '\n' +
> -    'Runtime:' + LzBrowser.getVersion() + '\n');
> +    'Runtime: ' + LzBrowser.getVersion() + '\n');
>  }
>  
>  /**
> 
> 
> _______________________________________________
> Laszlo-checkins mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins

-- 
Regards,
Max Carlson
OpenLaszlo.org

_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins

Reply via email to