DevTools/Features/Debugger: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 103: Line 103:
=== Remote Protocol Support ===
=== Remote Protocol Support ===
* [[Remote_Debugging_Protocol#Listing_Stack_Frames]]
* [[Remote_Debugging_Protocol#Listing_Stack_Frames]]
* Incomplete.
* Not implemented.
 
=== UI ===
 
* Not implemented.


=== UI Notes: Other Debuggers ===
=== UI Notes: Other Debuggers ===
Line 118: Line 122:
** Scope variables/environment in a different pane (see Environments)
** Scope variables/environment in a different pane (see Environments)
** Selecting stack frame moves source view
** Selecting stack frame moves source view
=== UI Plan ===


== Lexical Environments ==  
== Lexical Environments ==  
=== JSD2 ===  
=== JSD2 ===  
* [[Debug_Object#Debug.Environment]]
* [[Debug_Object#Debug.Environment]]
* Incomplete?
* Not implemented.


=== Remote Protocol Support ===
=== Remote Protocol Support ===
* [[Remote_Debugging_Protocol#Lexical_Environments]]
* [[Remote_Debugging_Protocol#Lexical_Environments]]
* Incomplete.
* Not implemented.
 
=== UI ===
 
Not implemented.


=== UI Notes: Other Debuggers ===
=== UI Notes: Other Debuggers ===
Line 137: Line 142:
* Chrome:
* Chrome:
** Scope chain exposed as a list, property viewers for each scope.
** Scope chain exposed as a list, property viewers for each scope.
=== UI Plan ===


__NOTOC__
__NOTOC__

Revision as of 01:24, 6 May 2011

Feature Status ETA Owner
DevTools/Features/Debugger planning YYYY-MM-DD Kevin Dangoor

Summary

Initial take on an integrated JavaScript debugger for Firefox.

Team

Have some thoughts on what you want out of a debugger? Inspiration on how to do it? Join us on #devtools on irc.mozilla.org


  • Feature Manager: Kevin Dangoor (irc: kdangoor)
  • Lead Developer: Dave Camp (irc: dcamp)
  • Product Manager: Kevin Dangoor (irc: kdangoor)
  • QA: TBD
  • UX: TBD
  • Security: TBD


Release Requirements

TBD

Next Steps

  • scope out the project

Related Bugs & Dependencies

See the status page for the bug list and current status.

Designs

TBD

Planning

What follows is some plan-related sketching, please update appropriately.

Basic Protocol Support

Basic implementation of the Remote Debugging Protocol.

Protocol Transports

  • Simple TCP socket protocol - Needed for remote debugging.
  • Shouldn't need sockets for in-process debugging, can probably just post events directly to/from the handler thread.
  • Need to figure out transport between chrome/content for e10s (See inter-process dispatch, below).
  • WebSockets (not needed for an initial implementation).

Protocol Handler Thread

  • Handles incoming protocol requests on a thread, needed to interrupt running script on other threads.
  • Will handle transport IO as needed (for socket/websocket/etc transports).
  • Handle inter-thread dispatching
    • Dispatching incoming protocol messages to actors on the proper thread.
    • An actor's parent or child might be on a different thread (for example when a browser tab actor might have a WebWorker actor as a child). Releasing a parent actor needs to release children, including on the other threads.
  • Handle inter-process dispatching
    • Similar issues to inter-thread dispatch, but communicating to content processes using the debugging protocol.

Actor registration API

  • Including maintenance of the actor tree.

Client API

  • With appropriate client-side transport support.

Debugging compartments

  • The debugger must be in a separate compartment from the debuggee, some sort of sandbox/new global-and-compartment for hosting a given thread's debugging actors.

Browser Protocol Integration

Firefox-specific integration of the remote protocol.

Root Actor

Content Tab Contexts

  • Will need to maintain a list of compartments needing debugging for the document tree loaded in the tab.
  • Manage lifetimes and notifications related to navigation.
  • Tabs exposed as a thread-like actor (or maybe with an immediate child for the main thread running in that tab?)

Chrome Context

  • For debugging firefox.

WebWorker/ChromeWorker

  • Related to inter-thread dispatch above. Likely to require some platform work on webworkers to get them to load the debug protocol implementation on startup?

Stack Traces

JSD2 support

Remote Protocol Support

UI

  • Not implemented.

UI Notes: Other Debuggers

  • Firebug
    • Stack frame shows function name/source/line num, args
    • Expand frames to view function args
    • Selecting stack frame moves source view
    • Right-clicking stack frames allowed viewing properties of function objects in the DOM tab.
    • Breadcrumb view of the stack in the source view.
  • Chrome
    • Stack frame shows function name/source/line
    • Scope variables/environment in a different pane (see Environments)
    • Selecting stack frame moves source view

Lexical Environments

JSD2

Remote Protocol Support

UI

Not implemented.

UI Notes: Other Debuggers

  • Firebug:
    • XXX: I couldn't find where/if firebug exposes lexical scopes.
  • Chrome:
    • Scope chain exposed as a list, property viewers for each scope.