[Laszlo-checkins] r7065 - in openlaszlo/branches/wafflecone/WEB-INF/lps/lfc: debugger debugger/platform/dhtml views
Max Carlson
max at openlaszlo.org
Wed Oct 31 12:41:21 PDT 2007
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!
ptw at openlaszlo.org 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 ptw at dueling-banjos.local 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: <73D84A53-259B-41B3-84C3-6F85AAB1C394 at laszlosystems.com>)
> QA Reviewer: frisco (pending)
> Doc Reviewer: jsundman (Message-Id: <177ADEE2-B8B6-4359-BA64-29BB327D5F38 at laszlosystems.com>)
>
> 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
> Laszlo-checkins at openlaszlo.org
> http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins
--
Regards,
Max Carlson
OpenLaszlo.org
More information about the Laszlo-checkins
mailing list