canmove, Confirmed users, Bureaucrats and Sysops emeriti
1,093
edits
No edit summary |
|||
(42 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
{| | {{FeatureStatus | ||
|Feature name=Debugger | |||
|Feature stage=Complete | |||
|Feature status=In progress | |||
| | |Feature version=Firefox 15 | ||
| | |Feature health=OK | ||
| | }} | ||
{{FeatureTeam | |||
|Feature product manager=Kevin Dangoor | |||
|Feature feature manager=Rob Campbell | |||
| | |Feature lead engineer=Panos Astithas | ||
| | |Feature security lead=Mark Goodwin | ||
|Feature qa lead=Ioana Budnar | |||
| | |Feature ux lead=Stephen Horlander | ||
| | |Feature additional members=Jason Orendorff, Jim Blandy, Victor Porof, Mihai Sucan | ||
}} | |||
{{FeaturePageBody | |||
|Feature overview=New JavaScript debugger. | |||
|Feature users and use cases=JavaScript developers | |||
}} | |||
= | {{FeatureInfo | ||
|Feature priority=P1 | |||
|Feature rank=6 | |||
|Feature roadmap=Developer Tools | |||
|Feature list=Desktop | |||
|Feature engineering team=DevTools | |||
}} | |||
{{FeatureTeamStatus | |||
= | |Feature security status=sec-review-complete | ||
|Feature security health=OK | |||
|Feature security notes=[[Security/Reviews/Firefox/RemoteDebug|Notes]] | |||
|Feature qa status=work in progress | |||
|Feature qa notes=[https://wiki.mozilla.org/index.php?title=DevTools/Features/Debugger/TestPlan Test Plan] | |||
}} | |||
== | |||
== | |||
== Designs == | == Designs == | ||
* [[JSInspector]] | |||
[[DevTools/Features/Debugger/Notes]] has further implementation notes. | * [[Remote_Debugging_Protocol]] | ||
* [[DevTools/Features/Debugger/Notes]] has further implementation notes. | |||
== 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 | ||
| | | ? | ||
| | | ? | ||
| | | ? | ||
| | | Put off for now. | ||
|- | |- | ||
| Debug Object creation and debuggerHook | | Debug Object creation and debuggerHook | ||
Line 103: | Line 93: | ||
| | | | ||
| jorendorff | | jorendorff | ||
| | | 1d | ||
| | | 1d | ||
| | | 2d | ||
| In | | In jsdb2 | ||
|- | |- | ||
| Debug Object loader | | Debug Object loader | ||
| JSD2ish | | JSD2ish | ||
| | | | ||
| | | dcamp | ||
| | | | ||
| | | | ||
| | | | ||
| | | 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 | ||
| | | 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 | * 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. | * 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. | ** Debug.Frame.prototype.environment - jorendorff | ||
** Debug.Environment | ** Debug.Environment.prototype.{type,outerEnvironment,object, boundIdentifiers,getVariableDescriptor,findBinding} - jorendorff | ||
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__ | ||