JS debugger on conceptual level

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

JS debugger on conceptual level

Dan-323
I am exploring a possilibity to add Firefox debugging into our Splinetech
JavaScript Debugger: www.remotedebugger.com

Since it will only enrich mozilla if another debugger supports it, I would
like to learn more about how the FF debugger works conceptually. If there is
a diagram, that will be great.
I obviously checked the firebug docs but I find it not clear.
What are the essential classes and components that make the debugging
possible, and how do they interact with each other.

Thanks,

Daniel..
www.remotedebugger.com


_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Dan wrote:
> I am exploring a possilibity to add Firefox debugging into our Splinetech
> JavaScript Debugger: www.remotedebugger.com
>
> Since it will only enrich mozilla if another debugger supports it, I would
> like to learn more about how the FF debugger works conceptually. If there is
> a diagram, that will be great.
> I obviously checked the firebug docs but I find it not clear.
> What are the essential classes and components that make the debugging
> possible, and how do they interact with each other.

You might look at http://groups.google.com/group/webdebugprotocol?hl=en

Are you only interested in JS debugging? Then all of the action in
Firebug is in two files:
http://code.google.com/p/fbug/source/browse/branches/firebug1.5/components/firebug-service.js
http://code.google.com/p/fbug/source/browse/branches/firebug1.5/content/firebug/debugger.js

Pretty standard stuff, except for the eval/event support.

jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Dan-323
Curious stuff.
In IE world, I just attach to IE through a bunch of COM interfaces and get
an interface for a the running application from which I just set bpts and go
on.
How does Firebug start debugging it?

Dan

"John J. Barton" <[hidden email]> wrote in message
news:[hidden email]...

> Dan wrote:
>> I am exploring a possilibity to add Firefox debugging into our Splinetech
>> JavaScript Debugger: www.remotedebugger.com
>>
>> Since it will only enrich mozilla if another debugger supports it, I
>> would like to learn more about how the FF debugger works conceptually. If
>> there is a diagram, that will be great.
>> I obviously checked the firebug docs but I find it not clear.
>> What are the essential classes and components that make the debugging
>> possible, and how do they interact with each other.
>
> You might look at http://groups.google.com/group/webdebugprotocol?hl=en
>
> Are you only interested in JS debugging? Then all of the action in Firebug
> is in two files:
> http://code.google.com/p/fbug/source/browse/branches/firebug1.5/components/firebug-service.js
> http://code.google.com/p/fbug/source/browse/branches/firebug1.5/content/firebug/debugger.js
>
> Pretty standard stuff, except for the eval/event support.
>
> jjb


_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Dan wrote:
> Curious stuff.
> In IE world, I just attach to IE through a bunch of COM interfaces and get
> an interface for a the running application from which I just set bpts and go
> on.
> How does Firebug start debugging it?

Just attach to Firefox through a bunch  of XPCOM interfaces and get an
interface for the running application from which you just set bpts and
go on.

jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Gijs Kruitbosch ("Hannibal")
In reply to this post by Dan-323
Yeah, remote (out-of-process) debugging in Mozilla is not trivial. I am not sure
how you'd go about doing it - both Venkman and Firebug are in-process, which
makes the process easier in a way. You could probably have part of your app
install an add-on that deals with the Firefox interfaces for you, and control
that add-on through whatever manner you wish (pipes/COM/screenscraping/local
webserver/what-have-you).

~ Gijs

Dan wrote:

> Curious stuff.
> In IE world, I just attach to IE through a bunch of COM interfaces and get
> an interface for a the running application from which I just set bpts and go
> on.
> How does Firebug start debugging it?
>
> Dan
>
> "John J. Barton" <[hidden email]> wrote in message
> news:[hidden email]...
>> Dan wrote:
>>> I am exploring a possilibity to add Firefox debugging into our Splinetech
>>> JavaScript Debugger: www.remotedebugger.com
>>>
>>> Since it will only enrich mozilla if another debugger supports it, I
>>> would like to learn more about how the FF debugger works conceptually. If
>>> there is a diagram, that will be great.
>>> I obviously checked the firebug docs but I find it not clear.
>>> What are the essential classes and components that make the debugging
>>> possible, and how do they interact with each other.
>> You might look at http://groups.google.com/group/webdebugprotocol?hl=en
>>
>> Are you only interested in JS debugging? Then all of the action in Firebug
>> is in two files:
>> http://code.google.com/p/fbug/source/browse/branches/firebug1.5/components/firebug-service.js
>> http://code.google.com/p/fbug/source/browse/branches/firebug1.5/content/firebug/debugger.js
>>
>> Pretty standard stuff, except for the eval/event support.
>>
>> jjb
>
>
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Gijs Kruitbosch wrote:
> Yeah, remote (out-of-process) debugging in Mozilla is not trivial. I am
> not sure how you'd go about doing it - both Venkman and Firebug are
> in-process, which makes the process easier in a way. You could probably
> have part of your app install an add-on that deals with the Firefox
> interfaces for you, and control that add-on through whatever manner you
> wish (pipes/COM/screenscraping/local webserver/what-have-you).

I would say this even much stronger: out-of-process debugging is beyond
  technical feasibility as a practical matter. It would require
interpreting and manipulating the bit image of the remote process. C
debuggers do this for C code, it is very difficult. While it has some
advantages, doing it for the complete mozilla run time is not likely.

I call the thing Gijs describes 'proxied debugging', where the debugger
UI is in one process talking to server in the debuggee. I guess that
what Dan is talking about when he says "remote".

I believe some folks are confusing proxied debugging and out-of-process
debugging, which have different cost/benefits. In particular the so
called "uncertainty" problem of a runtime with an embedded debugger
cannot be completely removed in proxied debugging.

jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Gijs Kruitbosch ("Hannibal")
John J. Barton wrote:

> Gijs Kruitbosch wrote:
>> Yeah, remote (out-of-process) debugging in Mozilla is not trivial. I
>> am not sure how you'd go about doing it - both Venkman and Firebug are
>> in-process, which makes the process easier in a way. You could
>> probably have part of your app install an add-on that deals with the
>> Firefox interfaces for you, and control that add-on through whatever
>> manner you wish (pipes/COM/screenscraping/local webserver/what-have-you).
>
> I would say this even much stronger: out-of-process debugging is beyond
>  technical feasibility as a practical matter. It would require
> interpreting and manipulating the bit image of the remote process. C
> debuggers do this for C code, it is very difficult. While it has some
> advantages, doing it for the complete mozilla run time is not likely.
>
> I call the thing Gijs describes 'proxied debugging', where the debugger
> UI is in one process talking to server in the debuggee. I guess that
> what Dan is talking about when he says "remote".
>
> I believe some folks are confusing proxied debugging and out-of-process
> debugging, which have different cost/benefits. In particular the so
> called "uncertainty" problem of a runtime with an embedded debugger
> cannot be completely removed in proxied debugging.
>
> jjb

Well fine. I apologize if I was not very strict in terms of terminology. I can't
think of any external interfaces that we have for debugging. In fact, just in
general the only interfaces I can think of that manipulate
Gecko/"Mozilla"/Firefox from the outside (without sneaking in on the inside
first) are gtkmozembed and the Mozilla ActiveX control. Neither allows you the
kind of control you want for debugging, I'm pretty sure.

~ Gijs
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Gijs Kruitbosch wrote:
...
>
> Well fine. I apologize if I was not very strict in terms of terminology.

(I did not mean to imply you were in any sense incorrect, I was agreeing
with you).

> I can't think of any external interfaces that we have for debugging. In
> fact, just in general the only interfaces I can think of that manipulate
> Gecko/"Mozilla"/Firefox from the outside (without sneaking in on the
> inside first) are gtkmozembed and the Mozilla ActiveX control. Neither
> allows you the kind of control you want for debugging, I'm pretty sure.

We are trying to get a proxied debugging solution going over on the
webdebugprotocol group and Mike Collins at IBM is working on
Firebug/Firefox code for this.

jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Dan-323
Interesting. Well making a proxy to which connect my UI is Ok with me.

But what function in the js codes of firebug gets called first and which one
attaches to Firefox and enumerates the scripts?
I am just trying to figure out from which side to look at this code.

Thanks

Dan

"John J. Barton" <[hidden email]> wrote in message
news:[hidden email]...

> Gijs Kruitbosch wrote:
> ...
>>
>> Well fine. I apologize if I was not very strict in terms of terminology.
>
> (I did not mean to imply you were in any sense incorrect, I was agreeing
> with you).
>
>> I can't think of any external interfaces that we have for debugging. In
>> fact, just in general the only interfaces I can think of that manipulate
>> Gecko/"Mozilla"/Firefox from the outside (without sneaking in on the
>> inside first) are gtkmozembed and the Mozilla ActiveX control. Neither
>> allows you the kind of control you want for debugging, I'm pretty sure.
>
> We are trying to get a proxied debugging solution going over on the
> webdebugprotocol group and Mike Collins at IBM is working on
> Firebug/Firefox code for this.
>
> jjb


_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Dan wrote:
> Interesting. Well making a proxy to which connect my UI is Ok with me.
>
> But what function in the js codes of firebug gets called first and which one
> attaches to Firefox and enumerates the scripts?
> I am just trying to figure out from which side to look at this code.

Well now that I think about it, maybe Venkman would be a better place to
start. Firebug used onScriptCreated to get scripts and it does a lot of
stuff to get eval() and event() scripts. I think Venkman enumerate the
live scripts instead.
jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Dan-323
How do you guys debug Firebug itself?

Dan

"John J Barton" <[hidden email]> wrote in message
news:[hidden email]...

> Dan wrote:
>> Interesting. Well making a proxy to which connect my UI is Ok with me.
>>
>> But what function in the js codes of firebug gets called first and which
>> one attaches to Firefox and enumerates the scripts?
>> I am just trying to figure out from which side to look at this code.
>
> Well now that I think about it, maybe Venkman would be a better place to
> start. Firebug used onScriptCreated to get scripts and it does a lot of
> stuff to get eval() and event() scripts. I think Venkman enumerate the
> live scripts instead.
> jjb


_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

John J Barton
Dan wrote:
> How do you guys debug Firebug itself?

Using Chromebug and FBTrace (internal Firebug logging). We can't use
Chromebug to debug the JS debug parts of Firebug because they both use jsd.

The X versions, eg 1.5X, have FBTrace. You can watch the debugger
actions by opening the trace console and setting options like BP/FBS_BP,
FBS_STEP, etc. FBS is the firebug service component, our connector for jsd.

jjb
_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger
Reply | Threaded
Open this post in threaded view
|

Re: JS debugger on conceptual level

Dan-323
Great! At least I can see what it does.

Dan

"John J. Barton" <[hidden email]> wrote in message
news:[hidden email]...

> Dan wrote:
>> How do you guys debug Firebug itself?
>
> Using Chromebug and FBTrace (internal Firebug logging). We can't use
> Chromebug to debug the JS debug parts of Firebug because they both use
> jsd.
>
> The X versions, eg 1.5X, have FBTrace. You can watch the debugger actions
> by opening the trace console and setting options like BP/FBS_BP, FBS_STEP,
> etc. FBS is the firebug service component, our connector for jsd.
>
> jjb


_______________________________________________
dev-apps-js-debugger mailing list
[hidden email]
https://lists.mozilla.org/listinfo/dev-apps-js-debugger