Debugging Tools
Overview
Flash's debugging support extends only as far as JavaScript error messages (which are sometimes completely misleading) so xJSFL provides a range of functionality to let you debug erroneous code including:
- Visually debugging the error stack including files, line numbers and code
- Inspection of objects in both hierarchical and tabular form
- Testing functions using xjsfl.debug.test()
- Testing external files using xjsfl.file.debug & xjsfl.file.load() rather than fl.runScript()
The following is the output from xjsfl.debug.func() trapping an erroneous obj reference 3 levels down from the original function call:
ReferenceError: obj is not defined
----------------------------------------------------------------------------------------------------
0 > ("popupslider","a","A",[object XML],[object Object],undefined,undefined)
path: xJSFL/core/jsfl/libraries/
file: xul.jsfl
line: 284
1 > ("title:Multiplier,numeric:A=[0,-100,100],numeric:B=[0,-100,100]")
path: xJSFL/core/jsfl/libraries/
file: xul.jsfl
line: 113
2 > ("title:Multiplier,numeric:A=[0,-100,100],numeric:B=[0,-100,100]",(function (a, b) {alert(a * b);}))
path: xJSFL/core/jsfl/libraries/
file: xul.jsfl
line: 135
3 >
path: E:/05 - Commercial Projects/xJSFL/3 - development/xJSFL Projects/
file: temp.jsfl
line: 23
Output.inspect() is arguably the workhorse of xJSFL's Output class, allowing you to hierarchically inspect any object, with built-in checks for troublesome properties that would otherwise crash Flash, and a slew of parameters to customise the processing and recursion:
Output.inspect(dom.library.items, 'Library items', 3)
Library items: Array (depth:4, objects:39, values:120, time:0.0 seconds)
--------------------------------------------------------------------------------
array => Array
[0] => SymbolItem
[timeline] => Timeline
name: "star graphic"
[layers] => Array
[0] => Layer
frameCount: 1
currentFrame: 0
layerCount: 1
currentLayer: 0
[bindings] => Array
symbolType: "movie clip"
sourceFilePath: ""
sourceLibraryName: undefined
sourceAutoUpdate: undefined
scalingGrid: false
[scalingGridRect] => Object
left: -2147483.648
top: -2147483.648
right: -2147483.648
bottom: -2147483.648
itemType: "movie clip"
name: "star graphic"
linkageExportForAS: false
linkageExportForRS: false
linkageImportForRS: false
linkageExportInFirstFrame: undefined
// additional properties truncated
Documentation
Guides
JSFL API
- Output: logging, introspection, and a variety of printing and formatting methods
- Table: outputs 2D Array/Object arrays to easily-readable ASCII tables

Hey
Love the framework! Quick question: have you ever come across the situation where a library item will incorrectly report that its linkageExportForAS is false and its linkage path is undefined? Re-saving the FLA will fix the issue and JSFL will start to get the correct values …
Thanks
Jed
Not yet. I’ll be publishing a bit list of Flash “gotchas” at some point, so perhaps I could put it in there.
Glad the framework’s working out for ya!