Thanks for your help, John, it's really appreciated. :-)

On Tue, Jul 28, 2009 at 21:53, johnjbarton<[email protected]> wrote:
>
> Run Firebug with tracing and set up for your page. Then use Tracing
> option FBS_CREATION and FBS_SRCUNITS. Run the Greasemonkey code and
> look for the jsdIScript creation messages. (You will want to turn off
> these tracing options, they have high overhead).

So, i did run FB-1.4X.1 with FBS_CREATION and FBS_SRCUNITS.
I guess the following output is what i'm looking for: traces for the
GM script (#178), from creation to destruction:


85. [extensions.firebug] onScriptCreated:
178@(302-314)file:/home/olivier/dev/webmonkey/src/components/webmonkey.js
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1512)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
       ()
    ### webmonkey.js:302 is indeed where
Components.utils.evalInSandbox(scriptSource, sandbox) is located.

86. [extensions.firebug] onScriptCreated: ''
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1514)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
       ()
    ### Here, Object->data shows the GM script source code.

87. [extensions.firebug] createdScriptHasCaller 4 FF3.1:false
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1600)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1524)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
       ()

88. [extensions.firebug] createdScriptHasCaller null
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1525)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
       ()
    ### Looking at the code, i suppose from these last 2 that the
script is considered as having "no caller" (FYI,
createdScriptHasCaller() returns on line 1617).

89. [extensions.firebug] onScriptCreated: set BP at PC 0 in top level
tag=178:file:/home/olivier/dev/webmonkey/src/components/webmonkey.js
jsd depth:1
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1538)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
       ()

90. [extensions.firebug] onBreakpoint frame.script.tag=178
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1169)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
      file:///home/olivier/dev/webmonkey/src/components/webmonkey.js (302)

91. [extensions.firebug] FBS.onTopLevelScriptCreated no debuggr for 178
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1446)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1181)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
      file:///home/olivier/dev/webmonkey/src/components/webmonkey.js (302)
     ### It seems fbs.findDebugger(frame):1435 fails to find the
associated context (see below).

92. [extensions.firebug] fbs.onTopLevelScriptCreated script.tag:178
href: no sourceFile
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1456)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1181)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
      file:///home/olivier/dev/webmonkey/src/components/webmonkey.js (302)

93. [extensions.firebug] Top Scripts Uncleared:
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1190)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)
      file:///home/olivier/dev/webmonkey/src/components/webmonkey.js (302)

94. [extensions.firebug] fbs.onScriptDestroyed 178
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(1634)
      
file:///home/olivier/.mozilla/firefox/gmdev/extensions/[email protected]/components/firebug-service.js
(2555)


>From here, i turned on FBS_FINDDEBUGGER to get more feedback on
why/how findDebugger() failed. It yielded:

[extensions.firebug] fbs.getFrameScopeWindowAncestor found scope chain
bottom, not Window: Sandbox
[extensions.firebug] fbs.findDebugger no frame Window, looking down the stack
[extensions.firebug] fbs.findDebugger fell thru bottom of stack


As it seems a Sandbox is not a "supported" scope, i tried this
quick-&-dirty-hack(TM) in getFrameScopeWindowAncestor():

--- firebug-service.js~ 2009-07-29 13:25:51.913450368 +0200
+++ firebug-service.js  2009-07-29 13:26:42.293449931 +0200
@@ -2573,7 +2573,7 @@
         while(scope.jsParent)
             scope = scope.jsParent;

-        if (scope.jsClassName == "Window" || scope.jsClassName ==
"ChromeWindow")
+        if (scope.jsClassName == "Window" || scope.jsClassName ==
"ChromeWindow" || scope.jsClassName == "Sandbox")
             return  scope.getWrappedValue();

         if (FBTrace.DBG_FBS_FINDDEBUGGER)


Apart of the fact that this throws "too much recursion" errors at
firebug-service:2559 (hook()), webmonkey.js (the add-on XPCOM, not the
script unfortunately) appears in FB scripts tab. Nevertheless, it's a
tiny progress. :-p


> Once you figure out what jsd things of the GM scripts, you need to
> convince Firebug to add them to the context for  the web page. After
> that I guess Firebug will work for you.

I'm not there yet! I guess i'll have to keep on working in this
direction... Any hint will be much appreciated. :-)

I guess one of my problems at this stage will be that
getFrameScopeWindowAncestor() is expected to return an object that is
_both_ a Window and a JS scope: in the context of a GM script, these
are two different things (the scope is the Sandbox).
Patched as shown above, the console tab does not work (it doesn't
answer commands). If i return the associated window instead of the
sandbox, the console works... in the scope of the window, i.e. scripts
vars are unreachable (and, as a side note, entered console commands
show up in the scripts tab as evals -- is that normal?).


-- 
Olivier

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Firebug" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/firebug?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to