Script Panel Refactoring
From FirebugWiki
(Difference between revisions)
(→Resources) |
|||
| Line 1: | Line 1: | ||
This page summarizes refactoring the Firebug debugger to use JSD2 and adding support for remote JavaScript debugging. [http://code.google.com/p/fbug/issues/detail?id=5421 Issue 5421] tracks the actual changes done. | This page summarizes refactoring the Firebug debugger to use JSD2 and adding support for remote JavaScript debugging. [http://code.google.com/p/fbug/issues/detail?id=5421 Issue 5421] tracks the actual changes done. | ||
| - | |||
| - | |||
| - | |||
| - | |||
== Resources == | == Resources == | ||
| - | |||
Firebug Wiki: | Firebug Wiki: | ||
* [https://getfirebug.com/wiki/index.php/HTTP_Monitor HTTP Monitor] | * [https://getfirebug.com/wiki/index.php/HTTP_Monitor HTTP Monitor] | ||
* [https://getfirebug.com/wiki/index.php/Firebug_1.7:_Mozilla_Backend Firebug 1.7 BTI] | * [https://getfirebug.com/wiki/index.php/Firebug_1.7:_Mozilla_Backend Firebug 1.7 BTI] | ||
* [https://getfirebug.com/wiki/index.php/Net_Panel_Architecture_Review Net Panel Architecture Review] | * [https://getfirebug.com/wiki/index.php/Net_Panel_Architecture_Review Net Panel Architecture Review] | ||
| + | * [https://getfirebug.com/wiki/index.php/Remoting_Prototype#Prototype Remoting Prototype] | ||
Mozilla Wiki: | Mozilla Wiki: | ||
| Line 19: | Line 15: | ||
* [https://wiki.mozilla.org/DevTools/Features/Debugger DevTools Debugger] | * [https://wiki.mozilla.org/DevTools/Features/Debugger DevTools Debugger] | ||
* [https://wiki.mozilla.org/Remote_Debugging_Protocol Remote Debugging Protocol] | * [https://wiki.mozilla.org/Remote_Debugging_Protocol Remote Debugging Protocol] | ||
| + | |||
| + | == Goals == | ||
| + | * Adopt JSD2 (get rid of all JSD1 APIs) | ||
| + | * Support remote debugging | ||
== Related Issues == | == Related Issues == | ||
Revision as of 07:16, 17 August 2012
This page summarizes refactoring the Firebug debugger to use JSD2 and adding support for remote JavaScript debugging. Issue 5421 tracks the actual changes done.
Contents |
Resources
Firebug Wiki:
Mozilla Wiki:
- Debugger
- Debugger Client API
- JS Debugger API Guide
- JS Debugger API Reference
- DevTools Debugger
- Remote Debugging Protocol
Goals
- Adopt JSD2 (get rid of all JSD1 APIs)
- Support remote debugging
Related Issues
- Issue 5421: Implement JSD2
JSD2 API Requirements
The following list summarizes the high-level features that Firebug needs to support. It should be verified that all the features can re-implemented on top of JSD2 before starting the refactoring.
- List of scripts available on selected tab (including static, events and evaluated scripts) including iframes →
Debugger.findScripts() - Stepping (into, over, out, resume, current line)
- Support for
debugger;keyword →Debugger.onDebuggerStatement() - Support for breakpoints (add, remove, enable, disabled, conditional, list of existing breakpoints) →
Debugger.Script methods - Recognize executable lines
- Dynamic eval in a frame (used e.g. by the Watch Side Panel when the debugger is halted) →
Debugger.Frame.eval()andDebugger.Frame.evalWithBindings() - Get stack frames (including passed arguments) →
Debugger.getNewestFrame()andDebugger.Frame.older - Scope chain variable exploring (with & closure scopes). It should be possible to see all values. →
Debugger.Frame.environment - Break on next call
- Profiling (was part of JSD1)
- Tracking (break on) throw/catch/error →
Debugger.onThrow()andDebugger.onError() - Tracking (monitoring) function calls
- Freezing page UI if debugger is halted (including timeouts, intervals and worker threads)
Not Ready in JSD2
- There is not source for evals.
- new Function scripts?
- Meta bug: Implement a script Debugger
- As soon as this one is fixed
- Profiling is unrelated to JSD2. What is the plan here?
- Tracking (break on) throw/catch/error; also what is the plan?
- Conditional breakpoints (bug 740825)
Script Panel Architecture
The Script panel needs to be built on top of JSD2, remote protocol and Firebug remote architecture. Remoting is already supported by HTTP Monitor and both components should share the same approaches and API.
TBD