[Laszlo-dev] For Review: Change 20080827-ptw-k Summary:

André Bargull andre.bargull at udo.edu
Sat Aug 30 11:11:58 PDT 2008


Great stuff, that will make live easier for everyone who needs to touch 
the debugger.
Right now I'm going through the files, until now just (mini-)source changes:

LzRuntime.lzs, encodeURIComponent: why not decodeURIComponent?,
LzBootstrapDebugConsole#addText(..): string coercion looks odd, belongs 
into the catch-clause?
LzBootstrapDebugLogger#log(..): loadVariables() should be 
loadVariablesNum(), right?
LzBootstrapDebugService: _dbg_log_all_writes, why a global?
LzBootstrapDebugService#xmlEscape(): we really ought to consolidate all 
our different xml-escape routines...
LzBootstrapDebugService, "var Debug": you've left out the 
"var"-declaration for the generic and runtime-specific debuggers, why 
not here? (as the first "var Debug" is declared in LzRuntime.lzs)
LzBootstrapDebugService, $reportNotFunction and $reportUndefinedMethod: 
message concatenation looks odd
LzCompiler, $reportSourceWarning: "if (LzWarning)" is (now) always true, 
so the else-clause can be removed
LzBootstrapMessage#indexOf(..args) vs LzDebugMessage#indexOf(key): not a 
compatible override
LzBootstrapMessage#toString(), #toHTML(): timestamp is off by three 
years ;-)
LzBootstrapMessage: String.prototype.toHTML() uses "Debug.xmlEscape", 
which is only available in debug-mode
LzSourceMessage: missing declaration of "message" in class
LzSourceMessage: constructor typing wrong, "message" is either String or 
LzMessage
LzDebugService.internalPropertyPrefixes: use an Object instead of an 
Array (it's used as an Object in LzDebugService#internalProperty())
debugger-component: update the comment at file-beginning and mark the 
methods which implement the LzBootstrapDebugConsole-interface
LzDHTMLDebugConsole declares "doEval" as overriden, but there is no 
"doEval" in LzBootstrapDebugConsole, missing?

Does it make sense to replace these lines (occur several times in the 
debugger-files):
> var color = '#0000ff';
> if (attrs && attrs.color) { color = attrs.color };
with a shorter replacement (for LPP-6892): var color = (attrs && 
attrs.color) || '#0000ff';

As you see, that's merely me being nit-picking. And I haven't yet tried 
the new debugger, I'll do that tomorrow.

On 8/28/2008 10:14 PM, P T Withington wrote:
> Change 20080827-ptw-k by ptw at dueling-banjos.home on 2008-08-27 
> 14:46:24 EDT
>     in /Users/ptw/OpenLaszlo/krispy-kreme
>     for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: Classify the debugger
>
> Bugs Fixed:
> LPP-6226 'make the compiler debug flag work with swf9' (step 0)
>
> Technical Reviewer: hminsky (pending)
> QA Reviewer: a.bargull at intensis.de (pending)
>
> Summary:
>     This is a pretty massive change, not easy to review from the
>     diffs.  I propose checking it in so we can just get some usage on
>     it.
>
>     I re-factored the debugger so that it is written as a service
>     class with a singleton instance.  There is a bootstrap class
>     (which works nearly immediately), a generic sub-class (which
>     contains the debugger proper) and per-platform sub-sub-class
>     (which adds platform-dependent overrides and extensions).  I also
>     broke out the interface portion of the debugger so that different
>     interfaces can be mixed and matched with the same debugger.
>     Similarly, the logging portion of the debugger is broken out;
>     although for now there is just one logger which understands how to
>     log back to the server for swf or to the browser console (e.g.,
>     firebug) for dhtml.
>
>     When the system starts up, the bootstrap debugger is created and a
>     bootstrap console attached.  The bootstrap debugger supports the
>     various debug message levels and the compiler warnings and errors
>     in a very simplified fashion that does not depend on much else
>     working.  The bootstrap console simply records any output (which
>     will be replayed once a real console is attached).
>
>     As soon as the necessary substrate is available, the 
> platform-specific
>     debugger is instantiated to replace the bootstrap debugger, the
>     appropriate console is attached (based on runtime and query
>     options), and the bootstrap console's output is replayed to the
>     actual console.
>
> Details:
>     Now that try/catch is working in swf8, I was able to re-merge a
>     lot of the platform-specific parts of the debugger that were only
>     broken out because of that missing functionality.
>
>     LzInit is now generic.
>
>     LzMessage (and its subclasses) is now classified (and a sub-class
>     of the bootstrap version).  The one bummer about this is that it
>     is no longer a subclass of String, so I had to create a new
>     predicate isStringLike, that replaces (typeof == 'string' || is
>     String).
>
>     __typeof, __String and inspectInternal now are generic instead of
>     being platform-specific.  Platform sub-classes can override to add
>     platform-specific types, e.g., the DHTML debugger knows how to
>     print DOM nodes.
>
>     The debugger now uses LzFormatter as a mixin, rather than
>     trampolining out to it.
>
>     Remodularized the debugger component and remote console to obey
>     the new console protocol.  The component debugger no longer plays
>     any surgury games to insert itself into the prototype chain of the
>     debugger, now that there is a clean(er) console protocol.
>
>     ResponderEVAL: Fixed the logger to translate debug message levels
>     in to the corrsponding log4j levels, so logged warnings and errors
>     will show up (now that the default log level is warn).
>
>     Updated console debugger to use displayObj rather than eval, so
>     inspecting looks pretty.
>
> Tests:
>     smokecheck, ant lztest, verified that console debugger still works
>
> Files:
> M      WEB-INF/lps/lfc/debugger/swf9stubs.lzs
> A  +   WEB-INF/lps/lfc/debugger/LzInit.lzs
> M      WEB-INF/lps/lfc/debugger/LzMessage.lzs
> M      WEB-INF/lps/lfc/debugger/LzDebug.lzs
> M      WEB-INF/lps/lfc/debugger/platform/swf/LzFlashRemote.as
> D      WEB-INF/lps/lfc/debugger/platform/swf/kernel.as
> D      WEB-INF/lps/lfc/debugger/platform/swf/LzInit.as
> M      WEB-INF/lps/lfc/debugger/platform/swf/LzDebug.as
> D      WEB-INF/lps/lfc/debugger/platform/dhtml/LzInit.js
> M      WEB-INF/lps/lfc/debugger/platform/dhtml/LzDebug.js
> D      WEB-INF/lps/lfc/debugger/platform/dhtml/kernel.js
> M      WEB-INF/lps/lfc/debugger/LzMonitor.lzs
> D      WEB-INF/lps/lfc/debugger/LzFormat.lzs
> M      WEB-INF/lps/lfc/debugger/LzMemory.lzs
> M      WEB-INF/lps/lfc/debugger/Library.lzs
> M      WEB-INF/lps/lfc/debugger/LzTrace.lzs
> M      WEB-INF/lps/lfc/debugger/LzBacktrace.lzs
> M      WEB-INF/lps/lfc/LaszloLibrary.lzs
> M      WEB-INF/lps/lfc/events/LaszloEvents.lzs
> M      WEB-INF/lps/lfc/compiler/LzFormatter.lzs
> M      WEB-INF/lps/lfc/compiler/LzRuntime.lzs
> M      WEB-INF/lps/lfc/compiler/LzMessage.lzs
> A      WEB-INF/lps/lfc/compiler/LzBootstrapDebugService.lzs
> M      WEB-INF/lps/lfc/compiler/Library.lzs
> M      
> WEB-INF/lps/server/src/org/openlaszlo/servlets/responders/ResponderEVAL.java 
>
> M      lps/components/debugger/debugger.lzx
> M      lps/admin/dev-console.lzx.swf
> M      lps/admin/dev-console.lzx
> M      lps/admin/dev-console.lzx.js
>
> Changeset: 
> http://svn.openlaszlo.org/openlaszlo/patches/20080827-ptw-k.tar
>


More information about the Laszlo-dev mailing list