about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/8 - Eclipse Demo: Debugging - lang_en_vs5.srt
blob: 025c2bab2840a97f36772b06597c6e0ce790b2ef (plain) (blame)
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.