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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
|
1
00:00:00,160 --> 00:00:03,090
Now let's look at how we can do debugging within
2
00:00:03,090 --> 00:00:06,240
Eclipse. I created a new file called AddNumbers which I'm
3
00:00:06,240 --> 00:00:10,770
showing here. It takes two numbers, parses them into integers,
4
00:00:10,770 --> 00:00:14,870
adds them and prints the sum, supposedly, of the two numbers.
5
00:00:14,870 --> 00:00:17,450
Now we look at the run configuration for this program,
6
00:00:17,450 --> 00:00:19,670
and here you can see that we're passing two arguments,
7
00:00:19,670 --> 00:00:22,060
two and five, to the program. So now let's run
8
00:00:22,060 --> 00:00:25,468
our program and see what happens. And the result says that
9
00:00:25,468 --> 00:00:28,150
2 plus 5 is equal to 10, which is not
10
00:00:28,150 --> 00:00:31,030
exactly correct. So we need to debug our program. We
11
00:00:31,030 --> 00:00:33,310
need to figure out what's wrong with the program, why
12
00:00:33,310 --> 00:00:37,140
the wrong result was, produced. So we're going to add a break
13
00:00:37,140 --> 00:00:40,260
point here by double-clicking here on the side of the
14
00:00:40,260 --> 00:00:42,940
code. And the break point is basically a place where I'm
15
00:00:42,940 --> 00:00:46,240
telling my debugger to stop during the execution because I
16
00:00:46,240 --> 00:00:50,750
want to inspect the state of the program. So to start
17
00:00:50,750 --> 00:00:54,690
debugging, we select Debug as Java Application from the Context
18
00:00:54,690 --> 00:00:58,170
menu, similar to what we were doing for running the program.
19
00:00:58,170 --> 00:01:00,190
And as you can see, this asks us whether we want
20
00:01:00,190 --> 00:01:03,720
to pass to the debug perspective, which is a, a perspective
21
00:01:03,720 --> 00:01:07,110
specifically designed for debugging. We say yes. And as you
22
00:01:07,110 --> 00:01:10,750
see here, it shows us, it's like a different, set of
23
00:01:10,750 --> 00:01:13,310
views, so we can see the code down here with an
24
00:01:13,310 --> 00:01:16,100
indication of where the execution is. And of course the execution
25
00:01:16,100 --> 00:01:18,610
stopped at the break point, which is exactly where
26
00:01:18,610 --> 00:01:21,850
we told the debugger to stop. So let's look at
27
00:01:21,850 --> 00:01:24,400
some of the other views in this perspective. The view
28
00:01:24,400 --> 00:01:27,370
here on the right-hand side, for example, shows the variables
29
00:01:27,370 --> 00:01:30,720
in scope and the break points that are currently active
30
00:01:30,720 --> 00:01:33,240
for the debugging session. This is where the editor is
31
00:01:33,240 --> 00:01:36,710
at. The outline of the program and the console at
32
00:01:36,710 --> 00:01:41,520
the bottom. So now let's execute one line by clicking
33
00:01:41,520 --> 00:01:45,400
on the Step Over button here at the top, and this will
34
00:01:45,400 --> 00:01:49,150
execute the line that is currently highlighted and therefore it will move to
35
00:01:49,150 --> 00:01:51,500
the next line. And as you can see, one nice feature is that
36
00:01:51,500 --> 00:01:54,760
if I move the mouse over a variable, I can see the value
37
00:01:54,760 --> 00:01:57,710
of the variable. And the same thing I can do if I look
38
00:01:57,710 --> 00:02:00,690
at the variables windows here on the right. If I click it, it
39
00:02:00,690 --> 00:02:03,960
will tell me what is the value of the variable, and in case
40
00:02:03,960 --> 00:02:07,410
of more complex variables you can even expand it and get more details.
41
00:02:07,410 --> 00:02:10,870
So now let's step over another line by clicking again this button,
42
00:02:10,870 --> 00:02:13,180
and as you can see now we get to the line that
43
00:02:13,180 --> 00:02:16,410
is actually performing the sum, supposedly, so now let's do the same
44
00:02:16,410 --> 00:02:19,100
thing that we did before, and let's mouse over b, and we can
45
00:02:19,100 --> 00:02:22,150
see that the value of b is five, as expected. So now
46
00:02:22,150 --> 00:02:27,080
let's step over this line as well, and execute the actual sum. And
47
00:02:27,080 --> 00:02:29,730
doing the mouseover thing, we can see that the value of sum
48
00:02:29,730 --> 00:02:33,000
is ten, which is not right, of course. In fact, if we check
49
00:02:33,000 --> 00:02:35,590
a gain we can see that value of A is two. The
50
00:02:35,590 --> 00:02:39,130
value of B is five and therefore it's clear that there's something
51
00:02:39,130 --> 00:02:41,780
wrong going on here, and at this point we can notice that
52
00:02:41,780 --> 00:02:44,030
here we are doing multiplication instead
53
00:02:44,030 --> 00:02:46,010
of addition. And therefore that's what the
54
00:02:46,010 --> 00:02:49,260
error is. And this is clearly a very simple case. Right? A
55
00:02:49,260 --> 00:02:51,440
case in which probably you just needed to look at the code and
56
00:02:51,440 --> 00:02:54,150
you didn't need the debugger. But you probably got the idea right?
57
00:02:54,150 --> 00:02:58,055
So this can be extremely useful when you're debugging, when you're studying more
58
00:02:58,055 --> 00:03:01,533
complex programs. If you want to stop the debugger because you're
59
00:03:01,533 --> 00:03:04,557
done with your debugging session as in this case, you can
60
00:03:04,557 --> 00:03:07,518
either click here on the Terminate button or you can also
61
00:03:07,518 --> 00:03:11,109
just simply tell the debugger to continue the execution, to resume
62
00:03:11,109 --> 00:03:15,140
the execution until the program terminates naturally. So, in this case,
63
00:03:15,140 --> 00:03:17,520
we're going to click here just to show what happens. And what
64
00:03:17,520 --> 00:03:20,230
happens is that, you know, the execution will just continue until
65
00:03:20,230 --> 00:03:23,690
the program exits. So now let's say that we want to fix
66
00:03:23,690 --> 00:03:27,740
this problem that we just discovered. So we replace the multiplication
67
00:03:27,740 --> 00:03:30,600
with an addition, we save the program, and we execute the
68
00:03:30,600 --> 00:03:33,860
program again by clicking on this button. And at this point,
69
00:03:33,860 --> 00:03:37,320
unsurprisingly, we get the right result as shown in the console.
|