[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