-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
166 lines (136 loc) · 5.69 KB
/
index.html
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<font size=5><center><B>Omniscient Debugging</B></center>
<font size=3><center>"Because the Debugger Knows Everything"</center>
<font size=2><center>18 February 2007</center>
<br>
<font size=3>
What if your debugger could go "go backwards
in time?" Would that make debugging easier?
By simply recording all variable assignments, it is possible to do essentially this.
This is the underlying idea for omniscient debugging.
The amazing part is that significantly large programs can be debugged in this fashion --
Ant, JUnit, the debugger itself.
<br>
<br>
Returning from rave reviews in Europe (Ecole des mines de Nantes,
INSA, ECOOP, AADEBUG, France! Sweden! Germany! Russia! Belgium!
Estonia!), the ODB made its next public appearence at OOPSLA where it
passed the $100 challenge (that was the amount offered for any bug it
couldn't find). Its presentation to thousands of screaming fans at <b>JavaOne</b> went
over with a blast! We (ODB & I) received the "Outstanding Talk" award. Yow! I later gave a
videotaped talk at Google.
<br><br>
<iframe width="420" height="315" src="https://www.youtube.com/embed/xpI8hIgOyko" frameborder="0" allowfullscreen></iframe>
<br><br>
<br><br>
Life is good
for the ODB and that's bad for bugs.
<br><br>
<img align=center src="ODB1.png">
<br>
<font size=3>
<br>
The debugger works by collecting "time stamps" which record everything
that happens in a program. A GUI then allows you to navigate
backwards in time to look at objects, variables, method calls, etc.
<br> <br>
This means that you can see which values are bad, then find where those
values came from, who set them and why. This also means that there are no
non-deterministic problems. You don't have to guess where the problems might
be, you don't have to set breakpoints, you don't have to wonder which threads
ran when, you don't ever have to repeat a program
run. This is the debugger that you always dreamed about, but never thought was
possible.
<br> <br>
<a href="ODBDescription.html">One page description of the ODB</a>
<a href="http://www.cs.kent.edu/~farrell/mc08/lectures/progs/pthreads/Lewis-Berg/odb/AADEBUG_Mar_03.pdf">AADEBUG paper on Omniscient Debugging (pdf)</a>
<br>
<a href="ODBUserManual.html">ODB User Manual</a>
<br> <br>
<h3>Changes to Newest Version
</h3>
Eclipse will launch the ODB from the RUN menu. [Import the ODB, set the main class to be com.lambda.Debugger.Debugger, and set the argument to be the program you want to run. (It's a bit lame, but simple. I am begging some folks for help with Eclipse.) I expect the same can be done for other IDEs.]
<BR>
<BR>
JDK1.5 works. You must select the correct version of the ODB now. ODB1.5 for JDK1.5 or ODB1.4 for JDK1.4.
As you may imagine, the 1.5 version is new and not well tested. I am putting out new releases modestly
regularly.
<br><br>
<h3>Running the Demo
</h3>
You may run the Web Start Demo by clicking on Web Start below and allowing its permissions request.
<br><br>
If you don't have Web Start, you can download debugger.jar (into ~/Debugger or c:\Debugger) and run it
by double-clicking on the jar file or running the jar file directly (<code>java -jar debugger.jar</code>).
<br><br>
Select "Demo" (a built-in pointer to a (buggy!) multithreaded quicksort). The program will run, then the debugger will popup and you will be able to "explore" the history of the program. Push the buttons, double-click on the objects.
<br><br>
You may select your own programs instead of the demo by defining some CSH aliases and calling debug:
<br><br>
<code>
% cd ~/Debugger
<br>
% jar xf debugger.jar aliases docs
<br>
% source aliases
<br>
% debug YourProgram
</code>
<br><br>
There is a full manual inside the .jar file (see docs/*), along with some Unix aliases (Microsoft .bat files) to make it easier.
<br> <br>
The current distributions are here: <a href="https://github.com/OmniscientDebugger/LewisOmniscientDebugger/releases/tag/0.1.5">Release Page</a>
<br>
<br> <br>
<br> <br>
<h4>Maven</h4>
<code>
<dependency>
<groupId>com.neuronrobotics</groupId>
<artifactId>LewisOmniscientDebugger</artifactId>
<version>1.6</version>
</dependency>
</code>
<br> <br>
<br> <br>
<h4>Gradle</h4>
<code>
compile group: 'com.neuronrobotics', name: 'LewisOmniscientDebugger', version: '1.6'
</code>
<br> <br>
<h3>A Better Mousetrap</h3>
<h3>Open Source</h3>
The ODB is open source ala GNU. I have not made a major effort
to put its code on any of the open source repositories as it
does not currently seem the right thing to do. Just not
worth the effort.
<BR><BR>
<h3>Needed</h3>
More than anything else, I need people to use the ODB. I
need them to use it intensively and exclusively on a wide
range of programs. I need to talk with them and understand
how they see the model of the world that the ODB presents. I
need to experiment with different modes of interaction and
figure out what works best.
<BR><BR>
There is no reason to change the current version of the ODB
at all until I have enough information to make decisions.
<BR><BR>
I use it exclusively when developing Java code. In the past
year this included two heavy programming classes I
taught. We built our own version of BCEL, a complete web
framework (ala Spring) including a web server (ala Tomcat)
and a full battlefield simulation program (i.e., a *lot* of
code). I saw a lot of bugs*. I never resorted to another
debugger.
<BR><BR>
I know what issues I encountered. Now I need to know what
other people encounter.
<BR><BR>
Bil Lewis<BR>
Bil@LambdaCS.com
<BR><BR><BR><BR>
========================================================<BR><BR>
* My style of programming has changed since the ODB. I now
write insanely fast, making numerous mistakes. This gives
me something to search for with the ODB. It's *fun*.
<br> <br>