Platform/JSDebugv2: Difference between revisions

Line 49: Line 49:


= Design Principles for <b>js::dbg2</b> =
= Design Principles for <b>js::dbg2</b> =
<ul>
<ul>
<li><b>js::dbg2 must support remote debugging.</b> Using a protocol
<li><b>js::dbg2 must support remote debugging.</b> Using a protocol
resembling the [http://code.google.com/p/v8/wiki/DebuggerProtocol V8 debugger protocol], js::dbg2 should allow the debugger's user interface to
resembling the [http://code.google.com/p/v8/wiki/DebuggerProtocol V8 debugger protocol], js::dbg2 should allow the debugger's user interface to
Line 57: Line 55:
debuggee. This allows us to debug on mobile devices and worker threads, and
debuggee. This allows us to debug on mobile devices and worker threads, and
increases the segregation of debugger and debuggee.
increases the segregation of debugger and debuggee.
<li><b>js::dbg2 will support cross-thread debugging via remote
<li><b>js::dbg2 will support cross-thread debugging via remote
debugging.</b> The "server" for the remote protocol will be lightweight
debugging.</b> The "server" for the remote protocol will be lightweight
Line 65: Line 62:
mediated by the remote protocol, greatly simplifying js::dbg2's
mediated by the remote protocol, greatly simplifying js::dbg2's
implementation.
implementation.
<p>(Note that some operations are inherently cross-thread: enumerating
<p>(Note that some operations are inherently cross-thread: enumerating
currently running threads; thread creation notifications; the initial
currently running threads; thread creation notifications; the initial
attachment of the debugger to a thread. But once a thread has been attached
attachment of the debugger to a thread. But once a thread has been attached
to, all subsequent communication is via the remote protocol.)</p>
to, all subsequent communication is via the remote protocol.)</p>
<li><b>js::dbg2 must operate at the JavaScript source language level.</b>
<li><b>js::dbg2 must operate at the JavaScript source language level.</b>
SpiderMonkey's current debugging interfaces (jsdbgapi and jsd) are built
SpiderMonkey's current debugging interfaces (jsdbgapi and jsd) are built
Line 79: Line 74:
program directly to the original JavaScript program --- not to the state of
program directly to the original JavaScript program --- not to the state of
imaginary bytecode, which is then related to the original JavaScript.
imaginary bytecode, which is then related to the original JavaScript.
</ul>
</ul>


Confirmed users
496

edits