-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelatedwork.tex
73 lines (61 loc) · 4.05 KB
/
relatedwork.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
\section{Related Work}
\subsection{Multiprocess Web Debug Tools}
As we discussed above,
Opera's DragonFly\cite{opera-dragonfly} implements a complete remote debug
solution and Google Chrome's Web Inspector works across processes. These implementations are specific to their host browser.
\subsubsection{Weinre}
The Weinre (Web Inspector Remote)\cite{weinre} project implements a partial Web page debugger (no JavaScript debugging) by
adding JavaScript code to a Web page in a proxy server much like Firebug Lite. The
added code connects back to the proxy which then re-transmits to a third process running
the user interface code
from WebKit's Web Inspector. The main target for this work is mobile devices. If
a \textit{Crossfire} server were implemented in Weinre, the proxy could support connections to
\textit{Crossfire} clients.
\subsubsection{Eclipse JSDT}
The Eclipse JavaScript Development Tools (JSDT) project\cite{EclipseJSDT}
includes a \textit{Crossfire} client implementation (currently in incubation).
This code is written in Java and supports
connections to Firebug's server as well as an early implementation of \textit{Crossfire} in Internet Explorer.
\subsubsection{Orion}
The Orion project\cite{orion} aims to create Web development tooling based on
Web technologies, and plans to use Firebug and Crossfire as part of their
debugging support. Discussions with the Orion team helped inform the design of \textit{Crossfire}.
\subsubsection{Cloud 9 IDE}
The Cloud 9 IDE\cite{cloud9} supports remote JavaScript debugging (only) from a Web page to Google's V8
engine running in a \texttt{Node.js} server.
\subsection{Remote Protocols}
Many protocols have already been designed for the purposes of remotely debugging
an application running in another process, virtual machine, host, etc. The GNU
GDB debugger has an associated Remote Serial Protocol (RSP)\cite{gdb-rsp}. While
it is the only debugger we know of with its own song \cite{gdb-song}, it is
primarily designed for debugging native code, particularly on embedded
systems, and would not be well-suited for use with Firebug. The Java Debug Wire Protocol (JDWP)
\cite{jdwp} provides remote debugging of Java Virtual Machines. The protocol
supports command and response message pairs similar to Crossfire and other Web
debugging protocols. However the design of the protocol, particularly the
synchronous aspects, would not work well with Firebug's existing architecture.
\subsubsection{DBGp}
DBGp\cite{dbgp}, is an acronym for Debug Protocol, and was developed for version
2 of the XDebug debugger for the PHP language. Although it was designed not to
be language specific, many of the commands are intended to be synchronous, as
opposed to the asynchronous nature of Crossfire. DBGp also allows for the
debugger engine to send an event to a client via the 'notification' element,
with a custom body. However in order to support Firebug, we would need to define
the same events defined by Crossfire as DBGp notifications, essentially creating
another protocol within the protocol.
\subsubsection{Opera Scope Protocol}
The Opera browser has a built-in Web development tool called DragonFly, which
also supports the Scope remote debug protocol. The Scope
protocol\cite{opera-scope} supports XML and JSON formats, and features such as
JavaScript debugging and remote DOM inspection. It is used to allow the desktop
DragonFly client to connect to another Opera browser instance, including mobile
versions.
\subsubsection{V8 / Chrome Dev Tools Protocol}
The V8 protocol\cite{V8} is a JSON-based wire protocol for debugging JavaScript
programs running within the V8 engine. The Chrome Dev Tools
protocol\cite{chrome-dev-tools} wraps the V8 protocol to provide the additional
information needed to debug a Web page running within Google's Chrome browser.
The protocol implements JSON messages over TCP/IP sockets, and was the basis for
much of the initial work on the Crossfire protocol. However, over the course of
developing Crossfire and refactoring of Firebug, it was realized that Crossfire
would require more functionality than the Chrome protocols provided.