DevTools/Features/Debugger: Difference between revisions

no edit summary
No edit summary
 
(42 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{| class="fullwidth-table"
{{FeatureStatus
|-
|Feature name=Debugger
| style="font-weight: bold; background: #DDD;" | Feature
|Feature stage=Complete
| style="font-weight: bold; background: #DDD;" | Status
|Feature status=In progress
| style="font-weight: bold; background: #DDD;" | ETA
|Feature version=Firefox 15
| style="font-weight: bold; background: #DDD;" | Owner
|Feature health=OK
|-
}}
<section begin="status" />
{{FeatureTeam
| [[DevTools/Features/Debugger]]
|Feature product manager=Kevin Dangoor
| {{StatusHealthy|status=planning (some prototype/initial impl work done)}}
|Feature feature manager=Rob Campbell
| 2011-05-13
|Feature lead engineer=Panos Astithas
| Kevin Dangoor
|Feature security lead=Mark Goodwin
<section end="status" />
|Feature qa lead=Ioana Budnar
|-
|Feature ux lead=Stephen Horlander
|}
|Feature additional members=Jason Orendorff, Jim Blandy, Victor Porof, Mihai Sucan
 
}}
== Summary ==
{{FeaturePageBody
 
|Feature overview=New JavaScript debugger.
Initial take on an integrated JavaScript debugger for Firefox.
|Feature users and use cases=JavaScript developers
 
}}
== Team ==
{{FeatureInfo
 
|Feature priority=P1
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 rank=6
 
|Feature roadmap=Developer Tools
* Jim Blandy (irc: jimb): Remote debugging protocol, jsd2.
|Feature list=Desktop
* Dave Camp (irc: dcamp): Firefox integration/UI, Remote debugging protocol.
|Feature engineering team=DevTools
* Jason Orendorff (irc: jorendorff): jsd2.
}}
 
{{FeatureTeamStatus
== Repositories ==
|Feature security status=sec-review-complete
* http://hg.mozilla.org/users/jblandy_mozilla.com/jsdbg2/ (JSD2)
|Feature security health=OK
* http://hg.mozilla.org/users/dcamp_campd.org/remote-debug/ (Remote Debugging Protocol/Firefox UI)
|Feature security notes=[[Security/Reviews/Firefox/RemoteDebug|Notes]]
 
|Feature qa status=work in progress
== Release Requirements ==
|Feature qa notes=[https://wiki.mozilla.org/index.php?title=DevTools/Features/Debugger/TestPlan Test Plan]
 
}}
TBD
 
== Next Steps ==
 
* scope out the project
 
== Related Bugs & Dependencies ==
 
See the [http://mozilla.github.com/devtools/2011/status.html#debugger status page] for the bug list and current status.
 
== Designs ==
== Designs ==
 
* [[JSInspector]]
[[DevTools/Features/Debugger/Notes]] has further implementation notes.
* [[Remote_Debugging_Protocol]]
 
* [[DevTools/Features/Debugger/Notes]] has further implementation notes.
TBD


== Planning ==
== Planning ==
Line 60: Line 49:
* UI shell in firefox
* UI shell in firefox
* UI for stack traces (without arguments)
* UI for stack traces (without arguments)
* No iframe support just yet.


{| class="fullwidth-table"
{| class="fullwidth-table"
Line 79: Line 69:
| 3d
| 3d
| 5d
| 5d
|
| In remote-debug.
|-
|-
| Browser root actor/tab actors (not as thread-like actors)
| Browser root actor/tab actors (not as thread-like actors)
Line 88: Line 78:
| 2d
| 2d
| 4d
| 4d
|  
| In remote-debug.
|-
|-
| Protocol handler thread (socket transport)
| Protocol handler thread (socket transport)
Line 94: Line 84:
|
|
| dcamp
| dcamp
| 1d
| ?
| 1d
| ?
| 3d
| ?
|
| Put off for now.
|-
|-
| Debug Object creation and debuggerHook
| Debug Object creation and debuggerHook
Line 103: Line 93:
|
|
| jorendorff
| jorendorff
|
| 1d
|
| 1d
|
| 2d
| In jsdbg2 branch.
| In jsdb2
|-
|-
| Debug Object loader
| Debug Object loader
| JSD2ish
| JSD2ish
|
|
| jorendorff
| dcamp
|
|
|
|
|
|
| Similar to ctypes loader?
| In remote-debug
|-
|-
| Debug Object support for frame inspection  
| Debug Object support for frame inspection  
Line 133: Line 123:
| 2d
| 2d
| 4d
| 4d
|
| In remote-debug
|-
|-
| New execution model specification in the remote protocol
| New execution model specification in the remote protocol
Line 142: Line 132:
|
|
|
|
|
| Complete
|-
|-
| debuggerHook and "continue" exposed over remote protocol as specified.
| debuggerHook and "continue" exposed over remote protocol as specified.
Line 151: Line 141:
| 3d
| 3d
| 5d
| 5d
| Need to see what new spec looks like...
| In remote-debug.
|-
|-
| Client JS API (socket transport)
| Client JS API (socket transport)
Line 160: Line 150:
| 2d
| 2d
| 3d
| 3d
|
| In remote-debug.
|-
|-
| HTML UI shell per tab, in its own window
| HTML UI shell per tab, in its own window
Line 169: Line 159:
| 2d
| 2d
| 5d
| 5d
|
| In remote-debug
|-
|-
| UI responding to pauses (from debugger keyword)
| UI responding to pauses (from debugger keyword)
Line 178: Line 168:
| 2d
| 2d
| 4d
| 4d
|
| In remote-debug
|-
|-
| HTML Stack frame viewer (no locals/environment yet, just  
| HTML Stack frame viewer (no locals/environment yet, just  
Line 187: Line 177:
| 3d
| 3d
| 5d
| 5d
| In patch queue
|}
=== Property Viewer ===
* A simple property viewer, limited to viewing frame arguments for now.
{| class="fullwidth-table"
|-
| style="font-weight: bold; background: #DDD;" | Description
| style="font-weight: bold; background: #DDD;" | Area
| style="font-weight: bold; background: #DDD;" | Bug
| style="font-weight: bold; background: #DDD;" | Owner
| style="font-weight: bold; background: #DDD;" | Best
| style="font-weight: bold; background: #DDD;" | Likely
| style="font-weight: bold; background: #DDD;" | Worst
| style="font-weight: bold; background: #DDD;" | Status
|-
| Debug.Object.prototype.{proto, class, isFunction, name, getOwnPropertyDescriptor, getOwnPropertyNames}
| JSD2
|
| jorendorff/jimb
|
|
|
|
|-
| Primitive data grips for frame arguments
| Remote Proto
|
| dcamp
| 1d
| 1d
| 2d
| In remote-debug
|-
| Pause-lifetime object grips
| Remote Proto
|
| dcamp
| 1d
| 1d
| 2d
| In remote-debug
|-
| Thread-lifetime grip promotion
| Remote Proto
|
|
| dcamp
| 1d
| 2d
| 4d
| In remote-debug
|-
| Object grip enumeration
| Remote Proto
|
| dcamp
| 1d
| 2d
| 4d
| Waiting on jsd2
|-
| Property UI design
| UI
|
| past/dcamp
| 1d
| 1d
| 2d
|
|-
| Property Inspector UI
| UI
|
| past
| ?
| ?
| ?
| Split up as needed.
|}
|}


Line 200: Line 269:


=== Execution ===
=== Execution ===
* throw hook (Debug.hooks.throw) - jorendorff
* throw hook (Debug.hooks.throw) - jorendorff - Done.
* error hook (Debug.hooks.error) - jorendorff
* error hook (Debug.hooks.error) - jorendorff
* resume (resumption values - already implemented) - jorendorff
* resume (resumption values) - jorendorff - Done.
* work out low-level stepping support with the JM team - jorendorff/jimb
* work out low-level stepping support with the JM team - jorendorff/jimb
* implement Debug object stepping support (Debug.hooks.interrupt, Debug.Script.prototype.singleStepMode, etc.) - jorendorff
* implement Debug object stepping support (Debug.hooks.interrupt, Debug.Script.prototype.singleStepMode, etc.) - jorendorff
* step into/step out/finish
* step into/step out/finish - dcamp
 
In this timeframe, we also want to be able to:
* Show native calls on the stack - jorendorff, luke
* Show debugger frames on the stack - jorendorff


=== Frame Tree Support ===
=== Frame Tree Support ===
* Debug.addDebuggee() - will need for frame tree support.
* Debug.prototype.{add,remove}Debuggee() - jorendorff
* Frame tree support in the tab actors.
* Frame tree support in the tab actors.


=== Environment/Property Viewer ===
=== Environment/Property Viewer ===


* JSD2 support:
* JSD2 support
** Debug.Object
** Debug.Frame.prototype.environment - jorendorff
** Debug.Environment
** Debug.Environment.prototype.{type,outerEnvironment,object, boundIdentifiers,getVariableDescriptor,findBinding} - jorendorff
* Protocol Support (actors for environments and objects)
** Pause-lifetime grips.
** Thread-lifetime grip promotion?  Maybe can wait?
* UI panel - simple tree view for objects?


By the time this milestone is complete, we'll have a somewhat competent debugger if you're willing to use debugger; statements instead of breakpoints.
By the time this milestone is complete, we'll have a somewhat competent debugger if you're willing to use debugger; statements instead of breakpoints.
Line 301: Line 370:
|}
|}
__NOTOC__
__NOTOC__
[[Category:Features]]
[[Category:Firefox]]
canmove, Confirmed users, Bureaucrats and Sysops emeriti
1,093

edits