Débogage - Université de Montréal

Transcription

Débogage - Université de Montréal
:;<=>?@!A&'/+,3%BB,6,$.&,.&62*$.,$2$7,&0,&3%9*7*,3-
'/8%929,
!"#$%&'()"*"+#$)*'),)-.*%'"/)0'(('%1)2345)6%78%"9/):"&();1))<.*)'*1)!7%8".)=">?9"..1)<@@A
!"#$%&'#(%#"
)$*+,"-*./&0,&1%$."/23
0#(%#"4*"%5#6%$.",23572
C#,3D#,-&-.2E-ED#,-F
! B'/)C78>'/)D7E#'.#)F)G@)9&((&"%*/)H)"..>'(('9'.#
! I'/)"9$(&7%"J7./)+7>%%"&'.#)%$*>&%')D')D7E#)*')K@L
! B")M"(&*"J7.)N&.D(>".#)(')*$C78"8'O)+'>M'.#)?"D&('9'.#)
+%'.*%')P>/Q>RS)T@UVTL)*>)#'9+/)*')*$M'(7++'9'.#
! W'%#"&.'/)+'%/7..'/)/7.#)#%7&/)?7&/)+(>/)'XD"D')Q>')
*R">#%'/)+7>%)(')*$C78"8'
@
G,&B",6*,"&8%9#,
A)/'+#'9C%')YAZV
=
H3#-&0,&8%9#,-555
I
'/J$*E%$-&K"2BB,3L
! "##$%#!&!""#"'M&7%66*-,&B2"&#$&0/+,3%BB,#"
• N"",#"&0,&B"%9"2662E%$
• N"",#"&0,&3%9*D#,
! ()%*$!%#&+,-)%.*!&$%&'()*+!$!,('M&/.2.&*$.,"$,&*$+23*0,&0O#$&
3%9*7*,3&2B"P-&3O27E+2E%$&0O#$,&,"",#"
! /,-)0..)12$!&$%-'&"!'M&62$*(,-.2E%$&,Q.,"$,&0O#$,&(2#.,
• R8-,"+283,&K,QM&3,&B"%9"266,&0/+*,&0,&-2&-B/7*J72E%$L
S
N"",#"-T&;2#.,-&U&'/(2*332$7,-&K"2BB,3L
[%%'>%
+'>#)D">/'%
\9+(&Q>'
:">#'
+'>#)D">/'%
I$?"&((".D'
\9+(&Q>'
V
',&3O,"",#"&W&32&0/(2*332$7,
! B')+%78%"99'>%)D799'#)
>.')'%%'>%)*"./)(')D7*'
! B7%/Q>R']$D>#$'1)(R'%%'>%)
+%7M7Q>')>.')?">#')N>.)
$#"#)'%%7.$)*>)+%78%"99'O
! W'^')?">#')D')+%7+"8'
! B")?">#')D">/')>.')
*$?"&((".D'
! \()?">#)%'#%"D'%)(")D4"_.')'#)
(")C%&/'%
M"%&"C('/
!
!
!
#
!
!
!
X
N"",#"-&,.&.,-.-
M"%&"C('/
! B'/)'%%'>%/).')D">/'.#)+"/)
#7>#'/)*'/)*$?"&((".D'/`
! a'/#'%).')+'>#)Q>')
*$97.#%'%)(")+%$/'.D')
*R'%%'>%/)b)'#).7.)+"/)('>%)
"C/'.D'c
NI&Pd/#%")YAV<O
!
!
#
!
!
!
Y
'/8%929,
M"%&"C('/
! e.)+'>#)%'97.#'%)S)>.')
?">#')*'+>&/)D4"Q>')
*$?"&((".D'1)'#)D4"Q>')?">#')
'/#)*>')S)>.')'%%'>%c
! B')*$C78"8')D7./&/#')S)
?"&%')(')(&'.)'.#%')>.')
*$?"&((".D')'#)>.')'%%'>%1)'#)
S)/>++%&9'%)(R'%%'>%c
!
!
#
!
!
!
>
[,7\,"7\,&02$-&3O,-B27,&,.&3,&.,6B! BR$#"#)&.&J"()'/#)D7%%'D#c
! [M'.#>'(('9'.#1)(R$#"#)'/#)'%%7.$c
! WR'/#)*"./)D'^')%$8&7.)Q>R7.)*7&#)D4'%D4'%c
"
?
#
!
?Z
:-%3,"&32&(2#.,&
! B")?">#')'/#)(")#%"./&J7.)*')D7%%'D#)S)&.D7%%'D#
! W799'.#)&/7('%)(")?">#')f
g 1*33*,"-&0,&+2"*283,g 1*33*%$-&0O*$-."#7E%$-
"
!
#
!
??
GO/.2.&0O#$&B"%9"266,
ZZ)@@@)M"%&"C('/)'#)Z<)@@@)(&'./)'.#%')'(('/)`
?@
].2B,-&0#&0/8%929,
! "1#$304*#$#!(')C78>'
! 5$6#7+%0#$)(")*$?"&((".D'
! 8%*79):4$#!$*!4096.0;$#!(')D"/)*')#'/#
! <#7%=$#!.$4!7#0301$4)+7//&C('/)*')(")?">#'
! >47.$#)(R7%&8&.')*')(")?">#')N(R'%%'>%O
! ?7##03$#!(R'%%'>%)'#)#'/#'%)(')+%78%"99')S).7>M'">
?=
?5&N$",9*-.","&3,&8%9#,
! B')*$C78"8')*$C>#')(7%/Q>R>.)+%7C(h9')'/#)D7./#"#$
! i7>M'.#1)>.)>J(&/"#'>%)7C/'%M')'#)%"++7%#')(')+%7C(h9'
! j>7&)&.D(>%')f
g ^,"-*%$&0#&3%9*7*,3
g N$+*"%$$,6,$.
g '/62"7\,&W&-#*+",&B%#"&",B"%0#*",&3,&8%9#,
g _%6B%".,6,$.&2`,$0#&,.&%8-,"+/
g )$&7%#".&"/-#6/
! B'/)%"++7%#/)*')C78>'/)/7.#)/7>M'.#)'.%'8&/#%$/)'#)8$%$/)
+"%)>.)(78&D&'()/+$D&"(&/$
?I
@5&[,B"%0#*",&32&0/(2*332$7,
! B")+%'9&h%')#kD4')*>)*$C78"8')N'#)/7>M'.#)(")+(>/)
*&XD&('O
! 67>%Q>7&)%'+%7*>&%')(')+%7C(h9')f
g H%#"&B%#+%*"&(2*",&0,&$%#+,33,-&%8-,"+2E%$-&,.&."%#+,"&0,&
$%#+,2#Q&(2*.-&W&B"%B%-&0#&B"%83P6,
g H%#"&B,"6,`",&0,&0/.,"6*$,"&-*&3,&B"%83P6,&,-.&"/93/
! \()?">#),
g ",7"/,"&32&0/62"7\,&D#*&6P$,&2#&B"%83P6,
g ",7"/,"&3O,$+*"%$$,6,$.&D#*&02$-&3,D#,3&3,&B"%83P6,&,-.&
-#"+,$#
?S
[,B"%0#*",&3O,$+*"%$$,6,$.
! I$C>#'%)"M'D)M7#%')'.M&%7..'9'.#
! a".#)Q>')(')+%7C(h9').R'/#)+"/)%'+%7*>&#1)"*"+#'%)
*R">#%'/)D&%D7./#".D'/)*')(R'.M&%7..'9'.#)*')(R>/"8'%
! BR&#$%"J7.)/')#'%9&.'
g 3%"-D#,&3,&B"%83P6,&,-.&",B"%0#*.
g 3%"-D#,&3,-&0,#Q&,$+*"%$$,6,$.-&-%$.&*0,$ED#,! 6'%9'#)+"%)(")9l9')7DD"/&7.)*R"++%'.*%')*'/)?"&#/)">)
/>P'#)*'/)D&%D7./#".D'/)Q>&)D">/'.#)(')+%7C(h9'
g _*"7%$-.2$7,&a&#$&2-B,7.&0,&3O,$+*"%$$,6,$.&%#&#$,&/.2B,&0,&
32&0/62"7\,&D#*&*$b#,$7,&3,&B"%83P6,
?V
[,B"%0#*",&3O,Q/7#E%$
! [.)+(>/)*')%'+%7*>&%')(R'.M&%7..'9'.#1)&()?">#)%'+%7*>&%')
(")*$9"%D4')N(R']$D>J7.O)Q>&)D">/')(')+%7C(h9'
! BR']$D>J7.)'/#)*$#'%9&.$')+"%)('/)'.#%$'/)
N8$.$%"('9'.#O
! m'+%7*>&%')(R'.#%$')+'%9'#)*7.D)*')%'+%7*>&%')
(R']$D>J7.
?X
G,-&,$."/,-&0O#$&B"%9"266,
o"/"%*
i5/#h9')*R']+(7&#"J7.
W799>.&D"J7.
e%*7..".D'9'.#
6%78%"9
nJ(&/"#'>%
645/&Q>'
I7..$'/
e>J(/)*')*$C78"8'
?Y
cd,*-,$8#9e
! B')D7*')/>&M".#).')D">/')+"/)*')+%7C(h9')'.)97*')
*$C78"8'
!"#$%&'$(
$$$$!"#$!)
$$$$*+#,*"$!)
-
[]$D>J7.).7%9"(',
%'#7>%.')>.')M"('>%).7.U*$p.&'
I"./)(')*$C78>'>%
%'#7>%.')@
?>
=5&f#.%62E-,"&,.&-*6B3*J,"
! ->#79"J/'%),)$D%&%')>.)#'/#)">#79"J/$)N'],)qn.&#O)Q>&)
%'+%7*>&#)'#)*$#'D#')(R$D4'D)S)(R']$D>J7.
! i&9+(&p'%),)+7>%)D4"Q>')D&%D7./#".D')*>)+%7C(h9'1)
M$%&p'%)S)(R"&*')*R']+$%&'.D'/)/&)'((')'/#)M%"&9'.#)
.$D'//"&%'
g G,&B"%83P6,&0/B,$0g.O*3&+"2*6,$.&0,-&6*33*,"-&0,&3*9$,-&
0O,$."/,-&h
g G2&0/(2*332$7,&",D#*,".g,33,&+"2*6,$.&7,.&%"0%$$2$7,6,$.&
B"/7*-&h
g fg.O%$&8,-%*$&0,&7,`,&-/D#,$7,&0O2BB,3-&h
! B'/)D&%D7./#".D'/).7.U'//'.J'(('/)/7.#)$(&9&.$'/
@Z
H%#"D#%*&-*6B3*J,"&h
! 67>%)?"D&(&#'%)(")D799>.&D"J7.
g )$&72-&-*6B3,&,-.&B3#-&(27*3,&W&7%66#$*D#,"T&W&,QB3*D#,"&,.&W&
7%6B",$0",
! 67>%)?"D&(&#'%)(')*$C78"8'
g )$&72-&-*6B3,&"/0#*.&32&.2*33,&0,&3O/.2.&W&7%$-*0/","&,.&B"%0#*.&
0,-&,Q/7#E%$-&B3#-&7%#".,! 67>%)&*'.Jp'%)('/)*7>C('/
g )$&72-&-*6B3,&B,#.&",6B327,"&B3#-*,#"-&72-&B3#-&7%6B3,Q,-&
D#*&*33#-.",$.&3,&6i6,&B"%83P6,
@?
I5&<"%#+,"&3,-&%"*9*$,! W7./&/#')S)/>&M%')('/)*$+'.*".D'/)*"./)(')+%78%"99')
+7>%)&*'.Jp'%)('/)D">/'/)+7//&C('/)*R>.')?">#'
! <)#5+'/)*')*$+'.*".D'/
g 0/B,$02$7,-&0,&0%$$/,-
.$/$0$1$0$2$3$1$3)$44$.$567+"5$5+$0$+#$3
g 0/B,$02$7,-&0,&7%$."j3,
!%$&0$//$3'$(
$$$$.$/$8)
-$+9:+$(
$$$$.$/$;)
-
44$.$567+"5$5+$0$+#$3
@@
)$&,Q,6B3,
$
sort 9 8 7
Sortie: 7 8 9
$
sort 11 14
Sortie: 0 11
@=
62*$KL
int main(int argc, char *argv[]) {
int *a;
int i;
a = (int *)malloc((argc - 1) * sizeof(int));
for (i = 0; i < argc - 1; i++)
a[i] = atoi(argv[i + 1]);
shell_sort(a, argc);
printf("Output: ");
for (i = 0; i < argc - 1; i++)
printf("%d ", a[i]);
printf("\n");
free(a);
return 0;
}
@I
<"%#+,"&3,-&%"*9*$,variables
! B")M"('>%)@)"XD4$')'/#)(")
!
time
!
!
!
!
M"('>%)*')"r@sc)IR7t)
+%7M&'.#U'((')f
! u>#),)i>&M%')7>)*$*>&%')
(R7%&8&.')*'/)M"('>%/
! i$+"%')('/)M"('>%/)
+'%J.'.#'/)*')D'(('/)Q>&)
/7.#)&.>J('/
! e.)+'>#)/>&M%')"r@s)P>/Q>RS)
/4'((v/7%#
@S
-\,33k-%".KL
static void shell_sort(int a[], int size) {
int i, j;
int h = 1;
do {
h = h * 3 + 1;
} while (h <= size);
do {
h /= 3;
for (i = h; i < size; i++)
{
int v = a[i];
for (j = i; j >= h && a[j - h] > v; j -= h)
a[j] = a[j - h];
if (i != j)
a[j] = v;
}
} while (h != 1);
}
@V
[,7\,"7\,&02$-&3,&.,6B-
"
!
! I"./)/4'((v/7%#1)(R$#"#)*7&#)
#
l#%')*'M'.>)D7%%79+>c
! u>#),)eC/'%M'%)>.')
#%"./&J7.)*')D7%%'D#)S)
&.D7%%'D#
!
@X
R8-,"+2E%$&-B/7*JD#,
static void shell_sort(int a[], int size) {
fprintf(stderr, “At shell_sort”);
for (i = 0; i < size; i++)
fprintf(stderr, “a[%d] = %d\n”, i, a[i]);
fprintf(stderr, “size = %d\n”, size);
int i, j;
int h = 1;
$ sort 11 14
...
a[0] = 11
}
a[1] = 14
a[2] = 0
size = 3
Sortie: 0 11
BR$#"#)'/#)'%%7.$)">)979'.#)*')(R"++'()S)/4'((v/7%#`
@Y
62*$KL
int main(int argc, char *argv[]) {
int *a;
// Input
a = (int
for (int
a[i]
array
*)malloc((argc - 1) * sizeof(int));
i = 0; i < argc - 1; i++)
= atoi(argv[i + 1]);
// Sort array
shell_sort(a, argc);
I'M%"&#)l#%')"%8D)U)Y
// Output array
printf("Output: ");
for (int i = 0; i < argc - 1; i++)
printf("%d ", a[i]);
printf("\n");
free(a);
return 0;
}
@>
_%""*9,"&3,&B"%9"266,
int main(int argc, char *argv[])
{
int *a;
int i;
a = (int *)malloc((argc - 1) * sizeof(int));
for (i = 0; i < argc - 1; i++)
a[i] = atoi(argv[i + 1]);
shell_sort(a, argc
argc);
- 1);
$ sort 11 14
Sortie: 11 14
...
}
=Z
I$C78"8')/D&'.JpQ>'
=?
N"",#"
! n.')'%%'>%)'/#)>.')*$M&"J7.)*')D')Q>&)'/#)D7%%'D#1)P>/#')
7>)M%"&c
! 67>%)+%7>M'%)Q>')Q>'(Q>')D47/')'/#)>.')'%%'>%1)&()?">#)
*$97.#%'%)(")*$M&"J7.
g H,#.&i.",&0*l7*3,&B%#"&7,".2*$-&B"%9"266,-
=@
_2#-,-&,.&,m,.! j>'((')'/#)(")D">/')*')(")*$?"&((".D')7C/'%M$')f
g G2&72#-,&0O#$&/+/$,6,$.&,-.&#$&/+/$,6,$.&B"/7/0,$.&-2$-&
3,D#,3&3O,m,.&$,&-,"2*.&B2-&B"%0#*.
! 67>%)+%7>M'%)(")D">/"(&#$1)&()?">#)97.#%'%)Q>'
g 3O,m,.&-,&B"%0#*.&3%"-D#,&32&72#-,&-,&B"%0#*.
g 3O,m,.&$,&-,&B"%0#*.&B2-&3%"-D#,&32&72#-,&$,&-,&B"%0#*.&B2! [.)8$.$%"(1)(")D">/"(&#$)'/#)*&XD&(')S)$#"C(&%
g :3&(2#.&B%#+%*"&"/B/.,"&3,-&/+/$,6,$.-&B2--/g N$&*$(%"62ED#,T&3,-&B"%9"266,-&B,#+,$.&i.",&7%$."j3/-&,.&
,Q/7#./-&W&+%3%$./
==
^/"*J,"&3,-&72#-,-
<$/$=>?7,#+@A<9,+&')
7*!"#%&B<$/$C5D"BE$<')
<$/$8
K<&$,&0,+"2*.&n262*-&i.",&/923&W&o/"%555L
=I
^/"*J,"&3,-&72#-,-
<$/$=>?7,#+@A<9,+&')
<$/$;)
7*!"#%&B<$/$C5D"BE$<')
<$/$8
f
=S
^/"*J,"&3,-&72#-,-
5>,F9+$<)
<$/$=>?7,#+@A<9,+&')
<$/$;)
7*!"#%&B<$/$C5D"BE$<')
<$/$8
=V
^/"*J,"&3,-&72#-,-
5>,F9+$<)
<$/$=>?7,#+@A<9,+&')
<$/$;)
7*!"#%&B<$/$C%D"BE$<')
<$/$GH;I;JHHH
p%#-&2+%$-&*-%3/&3,&(%"62.&Kcq0eL&
7%66,&72#-,&0,&32&0/(2*332$7,5
=X
c^%*3W&3,&8%9#,e
! W'%#"&.'/)+'%/7..'/)/7.#)M%"&9'.#)*7>$'/)S)*'M&.'%)('/)
D">/'/
! !"(4'>%'>/'9'.#1)(R&.#>&J7.)'/#)*&XD&(')S)/"&/&%),
g [,D#*,".&0,-&7%$$2*--2$7,-&B"/23283,g p,&(%$7E%$$,&B2-&0O#$,&62$*P",&-r-./62ED#,&,.&
",B"%0#7E83,
g p,&B,#.&B2-&i.",&,$-,*9$/,
=Y
G2&6/.\%0,&-7*,$EJD#,
! B")9$#47*')/D&'.JpQ>')*$D%&#)D799'.#)#%7>M'%)>.')
#4$7%&')Q>&)']+(&Q>')N'#)+%$*&#O)D'%#"&./)"/+'D#/)*').7#%')
>.&M'%/
! W'^')9$#47*')'/#)"++(&Q>$')*"./)#7>#'/)('/)C%".D4'/)*')
/D&'.D')']+$%&9'.#"('c)
=>
].2B,-&0,&32&6/.\%0,&-7*,$EJD#,
YceC/'%M'%)>.)"/+'D#)*')(R>.&M'%/
<c:7%9>('%)>.')45+7#4h/')Q>&)'/#)D79+"JC(')"M'D)('/)
7C/'%M"J7./
KcnJ(&/'%)(R45+7#4h/')+7>%)?"&%')>.')+%$*&DJ7.
Zca'/#'%)(")+%$*&DJ7.)+"%)*'/)']+$%&'.D'/)7>)7C/'%M"J7./c
Tci&).$D'//"&%'1)97*&p'%)(R45+7#4h/')/&).$D'//"&%')'#)
%'#7>%.'%)S)(R$#"+')Kc
IZ
)$,&.\/%"*,
! B7%/Q>')(R45+7#4h/')']+(&Q>')#7>#'/)('/)']+$%&'.D'/)'#)
7C/'%M"J7./1)'((')*'M&'.#)>.')#4$7%&'
! n.')#4$7%&')'/#)>.')45+7#4h/')Q>&
g NQB3*D#,&.%#.,-&3,-&%8-,"+2E%$-&2$./"*,#",g H"/0*.&3,-&%8-,"+2E%$-&#3./"*,#",! I"./)(')D7.#']#')*>)*$C78"8'1)>.')#4$7%&')'/#)>.)
!"#$%&'()
I?
12-.,"1*$0
! !"/#'%!&.*)'/#)>.)
']'9+(')#5+&Q>')
*R"++(&D"J7.)*')(")
9$#47*')/D&'.JpQ>'
! I'/)45+7#4h/'/)/7.#)
?7%9>($'/)P>/Q>RS)D')Q>')(')
/'D%'#)/7&#)%$M$($c
I@
'/8%929,&-7*,$EJD#,
o5+7#4h/')/>++7%#$'),)%"X.'%)(R45+7#4h/'
drB%.\P-,
H"/0*7E%$
NQB/"*,$7,
o5+7#4h/')%'P'#$'),)?7%9>('%)>.'
)))))))))))).7>M'((')45+7#4h/'
R8-,"+2E%$-
'*29$%-E7
I=
)$&,Q,6B3,
$
sort 9 8 7
Sortie: 7 8 9
$
sort 11 14
Sortie: 0 11
'/8%9#,"&W&$%#+,2#&,$&#E3*-2$.&3,&0/8%929,&-7*,$EJD#,
II
drB%.\P-,&*$*E23,
@A67*BC4$
“sort 11 14” fonctionne
D#,+02:71
Sortie est “11 14”
"E6,#0$12$
Exécuter “sort” avec l’entrée spécifiée
FG4$#=):71
Sortie est “0 11”
?712.%4071
L’hypothèse est rejetée.
IS
int main(int argc, char *argv[])
{
int *a;
int i;
a = (int *)malloc((argc - 1) * sizeof(int));
for (i = 0; i < argc - 1; i++)
a[i] = atoi(argv[i + 1]);
shell_sort(a, argc);
printf("Output: ");
for (i = 0; i < argc - 1; i++)
printf("%d ", a[i]);
printf("\n");
[/#UD')Q>')"r@s)w)@)'/#)M%"&f
free(a);
return 0;
}
IV
drB%.\P-,&?M&2st
@A67*BC4$
L’exécution cause a[0] = 0.
D#,+02:71
À la ligne 37, a[0] = 0 est vrai.
"E6,#0$12$
Obser ver a[0] à la ligne 37.
FG4$#=):71
a[0] = 0 est vrai, tel que prédit.
?712.%4071
L’hypothesis est confirmée.
IX
static void shell_sort(int a[], int size)
{
int i, j;
int h = 1;
BR$#"#)'/#U&()D7%%'D#)&D&f
do {
h = h * 3 + 1;
} while (h <= size);
do {
h /= 3;
for (i = h; i < size; i++)
{
int v = a[i];
for (j = i; j >= h && a[j - h] > v; j -= h)
a[j] = a[j - h];
if (i != j)
a[j] = v;
}
} while (h != 1);
}
IY
drB%.\P-,&@M&-\,33k-%".KL
@A67*BC4$
La faute ne se produit pas avant
shell_sort.
D#,+02:71
À la ligne 6, a[] = [11, 14]; size = 2
"E6,#0$12$
Obser ver a[] et sa taille à la ligne 6.
FG4$#=):71
a[] = [11, 14, 0]; taille = 3.
?712.%4071
L’hypothèse est rejetée.
I>
drB%.\P-,&=M&-*o,
@A67*BC4$
size = 3 cause la défaillance
D#,+02:71
Changer la valeur de ‘s ize’ à 2 rend la
sortie correcte.
"E6,#0$12$
Changer la valeur de size dans un
débogueur.
FG4$#=):71
Tel que prédit.
?712.%4071
L’hypothèse est confirmée.
SZ
_%""*9,"&3,&B"%9"266,
int main(int argc, char *argv[])
{
int *a;
int i;
a = (int *)malloc((argc - 1) * sizeof(int));
for (i = 0; i < argc - 1; i++)
a[i] = atoi(argv[i + 1]);
shell_sort(a, argc
argc);
- 1);
$ sort 11 14
Sortie: 11 14
...
}
S?
drB%.\P-,&IM&2"97
@A67*BC4$
L’invocation de shell_sort avec size =
argc cause la défaillance.
D#,+02:71
Changer argc pour argc - 1 devrait
faire réussir l’exécution.
"E6,#0$12$
Changer argc pour argc - 1 et
recompiler.
FG4$#=):71
Tel que prédit.
?712.%4071
L’hypothèse est confirmée.
S@
G,&0*29$%-E7
! B")D">/')'/#)2\.M7Q>'%)/4'((v/7%#NO)"M'D)"%8D;
! 6%7>M$)+"%)*'>])']+$%&'.D'/),
g :$+%D#/&2+,7&2"97T&32&0/(2*332$7,&-,&B"%0#*.
g :$+%D#/&2+,7&2"97&g&?T&32&0/(2*332$7,&$,&-,&B"%0#*.&B2! [x'#)*')C7%*,).7>/)"M7./)7C#'.>)>.')/7(>J7.
! yu,).7>/).R"M7./)+"/)'.D7%')7C#'.>)(")M"(&*&#$
g 'O2#.",-&,"",#"-&B,#+,$.&i.",&B"/-,$.,g G2&-%3#E%$&B,#.&,$9,$0","&0O2#.",-&B"%83P6,-
S=
u2"0,"&32&."27,555
!
!
I"./)(')P'>)!"/#'%9&.*1)
*&+*,')('/)45+7#4h/'/)'#)
7C/'%M"J7./)/7.#)
,-./")"*,'0
m'.*)(')P'>)C'">D7>+)+(>/)
?"D&('
SI
'/8%929,&*6B3*7*.,&+-&,QB3*7*.,
! I$C78"8')&9+(&D&#'),
g u2"0,&.%#.&,$&6/6%*",
g <"P-&0*l7*3,T&7%66,&n%#,"&W&12-.,"6*$0&-2$-&3,&B32.,2#v
! I$C78"8')']+(&D&#'),)>J(&/')>.)D"%.'#)+7>%)#7>P7>%/)
D7.."_#%'),
g Rw&%$&,-.&B"/-,$.,6,$.
g H2"&%w&%$&,-.&B2--/
g Rw&3O%$&+2
g Rw&%$&+,#.&233,"
SS
_2"$,.&0,&0/8%929,
! j>7&).7#'%)f
@A67*BC4$
D#,+02:71
"E6,#0$12$
FG4$#=):71
?712.%4071
SV
'/8%929,&"2B*0,
! 6"/)#7>#'/)('/)/&#>"J7./)*'9".*'/)*'/)D"%.'#/)'#)*'/)
+%7D$*>%'/)D79+(']'/
! i>88'/J7.),
g '/8%9#,"&0,&(2x%$&"2B*0,&,.&#!12&)&B,$02$.&#$,&7%#".,&
B/"*%0,&K?Z&6*$#.,-L
g )E3*-,"&3,&0/8%929,&-7*,$EJD#,&-*&3,&B"%83P6,&$O,-.&B2-&
,$7%",&*0,$EJ/
SX
y%#"7,-&0O\rB%.\P-,NQB/"*6,$.2E%$
%&,Q/7#E%$-&7%$."j3/,-
nJ(&/'
:$0#7E%$
%&,Q/7#E%$-
nJ(&/'
R8-,"+2E%$
?&,Q/7#E%$
nJ(&/'
'/0#7E%$
Z&,Q/7#E%$
SY
eC/'%M"J7./
FHI"5J8<>FKI
S>
H"*$7*B,-&0O%8-,"+2E%$
! y')+"/)&.#'%?$%'%
g ]+*.,"&D#,&3,-&(2*.-&%8-,"+/-&0/7%#3,$.&0,&3O%8-,"+2E%$&,33,g
6i6,
! i"M7&%)Q>7&)'#)Q>".*)7C/'%M'%
g GO/.2.&0O#$&B"%9"266,&,-.&."%B&9"2$0&B%#"&i.",&%8-,"+/&W&
7\2D#,&*$-."#7E%$
g <"%B&0O%8-,"+2E%$-&B,#+,$.&"23,$E"&3,&B"%9"266,
! 6%7D$*'%)*')?"z7.)/5/#$9"JQ>'
g G,-&\rB%.\P-,-&0%*+,$.&9#*0,"&3,-&%8-,"+2E%$-&B3#.j.&D#,&0,&
B"%7/0,"&W&.z.%$-
VZ
{%#"$23*-2E%$&K/&$$"%$L
! \*$')+%&.D&+"('),)&./$%'%)*'/)&./#%>DJ7./)*')/7%J')S)*'/)
'.*%7&#/)/#%"#$8&Q>'/)*"./)(')D7*'
g '/8%929,&B2"&printf / println
! 6%7C(h9'/
g _%0,&,$7%68"/
g y%"E,&,$7%68"/,
g [23,$E--,6,$.
g H,".,&0,&0%$$/,-&B%--*83,&K3+4,5"%$L
V?
f#g0,3W&0,&print
! nJ(&/'%)>.)?7%9"#)/#".*"%*
g H,"6,.&32&",7\,"7\,&,.&3,-&J3.",! m'.*%')(R'.%'8&/#%'9'.#)7+J7..'(
g H%#"&26/3*%","&32&B,"(%"62$7,&3%"-D#,&0/B3%r/
! 6'%9'^%')>.')8%".>("%&#$)M"%&"C('
g H%#"&32&B,"(%"62$7,
g H%#"&#$,&6,*33,#",&7%6B"/\,$-*%$
! :"M7%&/'%)(")+'%/&/#'.D'
g H%#"&",7%66,$7,"&-*&#$&B"%83P6,&-,683283,&(2*.&-#"(27,
V@
f#g0,3W&0,&print
! :7.DJ7./)*')P7>%."(&/"J7.
g ;%$7E%$-&-B/7*JD#,-&D#*&*6B"*6,$.&3,-&6,--29,-&-#"&#$,&
-%"E,&-B/7*JD#,
g )E3*-,"&0,-&627"%-&B%#"&B,"6,`",&0O27E+,"&%#&0,&0/-27E+,"&
3,-&6,--29,-&"2B*0,6,$.
g NQ,6B3,&M
#define LOG(msg) fprintf(stderr, “[DEBUG] %s at %s:%d\n”, \
msg, __FILE__, __LINE__)
V=
f#g0,3W&0,&print
! u&C(&7#4hQ>'/)/+$D&"(&/$'/),
g GRuI{&B%B#32*",&B%#"&{2+2
g N-.&7%$x#&B%#"&32&B,"-*-.,$7,&,.&32&b,Q*8*3*./
g NQ,6B3,&M
public class TestLogging {
// Initialize a logger.
final ULogger logger = LoggerFactory.getLogger(TestLogging.class);
public static void main(String args[]) {
logger.debug("Start of main()");
logger.info ("A log message with level
logger.warn ("A log message with level
logger.error("A log message with level
logger.fatal("A log message with level
}
set
set
set
set
to
to
to
to
INFO");
WARN");
ERROR");
FATAL");
}
VI
'/8%9#,#"-
! I$C78>'>%),)>.)7>J()D7.z>)+7>%)/R"^"D4'%)">)
+%78%"99')*>%".#)(R']$D>J7.)'#)+'%9'^%')*R'x'D#>'%)
*'/)7C/'%M"J7./
! -M".#"8'/),
g H,"6,.&0,&0/8#.,"&"2B*0,6,$.T&-2$-&6%0*J72E%$&0#&7%0,
g H,"6,.&3O%8-,"+2E%$&b,Q*83,&0O/+/$,6,$.-&2"8*."2*",g y,--*%$-&/B\/6P",-&K2#7#$&7%0,&W&/7"*",L
VS
'/8%9#,#"! :7.DJ7.."(&#$/)*'/)*$C78>'>%/)97*'%.'/),
g NQ/7#.,"&#$&B"%9"266,&,.&3O2""i.,"&3%"-D#O#$,&7%$0*E%$&,-.&
",6B3*,&K35,#6.&"%*171,6B327,6,$.819#*)2.&"%*1717%$0*E%$L
g R8-,"+,&3O/.2.&0#&B"%9"266,&2""i./&K+23,#"-&0,-&+2"*283,-T&
B*3,&0O,Q/7#E%$T&,.75L
g 1%0*J,"&3O/.2.&0#&B"%9"266,&2""i./
g '/8%929,&B%-.g6%".,6&K)&5,1!+:.L
! ;&$$"%$&KB"*$.T&0*-B32rT&,.75L
! c;*Q&2$0&7%$E$#,e&KB,"6,.&0,&6%0*J,"&3,&7%0,&0#"2$.&
3O,Q/7#E%$L
VV
<,7\$*D#,-&0O%8-,"+2E%$-&2+2$7/,! \.#$8%"J7.)"M'D)(R&.#'%+%$#'>%
g H3#-&*$.,"B"/.,#"-&0,&7%0,&K,QM&Br.\%$T&n2+2L&B,"6,`,$.&W&
0,-&%#E3-&2"8*."2*",-&0,&-O*$./9","&0r$26*D#,6,$.&B%#"&
%8-,"+,"&3O,Q/7#E%$
! !7*&pD"J7.)*>)D7*'
g :3&,-.&B%--*83,&0O,m,7.#,"&0,-&%8-,"+2E%$-&,$&6%0*J2$.&
0*",7.,6,$.&3,&7%0,&8*$2*",&K7%0,&627\*$,&%#&*$.,"B"/./L
! I$C78"8')S)%'C7>%/
g y,--*%$&0,&0/8%929,&.rB*D#,&M&-#*+2$.T&-#*+2$.T&-#*+2$.T&555T&
."%B&3%*$v
g _,".2*$-&%#E3-&B,"6,`,$.&0,&",6%$.,"&02$-&3,&.,6B-&K,QM&
|\r3*$,L&
VX
<,7\$*D#,-&0O%8-,"+2E%$-&2+2$7/,! {&/>"(&/"J7.
g H3#-*,#"-&%#E3-&B,"6,`,$.&0,&+*-#23*-,"&#$,&%#&B3#-*,#"-&
,Q/7#E%$• '%$$/,• _%0,&,Q/7#./
VY
f#.%62E-,"&3,-&%8-,"+2E%$! \()'/#)*&XD&(')+7>%)>.)4>9"&.)*')M$%&p'%)#7>#)(R$#"#)*R>.)
+%78%"99'
! 67>%Q>7&).')+"/)*'9".*'%)S)(")9"D4&.')*')M$%&p'%)/7.)
+%7+%')$#"#)f
V>
f--,"E%$-&0,&82-,
!%$&5!A!:>*$//$8'$(
$$$$7*!"#%&BK!A!:!>"$F0$3+*>LB')
$$$$<F>*#&')
-
XZ
f--,"E%$-&-B/7*23*-/,-
<::+*#$&5!A!:>*$L/$8')
X?
:6B3/6,$.2E%$
A>!5$<::+*#$&!"#$.'$($
$$!%$&L.'$($
$$$$7*!"#%&BM::+*#!>"$%<!9+5LD"B')
$$$$<F>*#&')
$$N$?0O7*>P*<?
M::+*#!>"$%<!9+5L
MF>*#$&=>*+$5,?7+5'
N$
X@
:6B3/6,$.2E%$&2+,7&627"%
Q!%"5+%$RKSTUV
Q5+%!"+$<::+*#&+.'$D
&&+.'$W$;$X$&=+**$YY$@@Z[\S@@$YY$BXB$YY$
@@\[RS@@$D
$$$$$$$$$$$$YY$BX$<::+*#!>"$]B$Q+.$B^$
%<!9+5D"BE$D
$$$$$$$$$$$$$$$$$$<F>*#&'E$8''
Q+9:+
Q5+%!"+$<::+*#&.'$&&A>!5'$8'
Q+"5!%
X=
1,*33,#"-&0*29$%-E7-
N$?0O7*>P*<?
5!A!5+H=XG_X
$$$<::+*#!>"$]5!A!:>*$L/$8^$%<!9+5
MF>*#$&=>*+$5,?7+5'
N$
XI
f--,"E%$-&,.&{2+2
7*!A<#+$A>!5$5!A!5+&!"#$5!A!:>*'$(
$$$$<::+*#$5!A!:>*$L/$8)
$$$$<::+*#$5!A!:>*$`$",?+*<#>*$X$5!A!:>*)
-
N$a<A<$O+<$K!A!5+$8
bHHHM::+*#!>"S**>*HHHc
N$
H2--/&2#&7%$-."#7.,#"&B%#"&
f--,"E%$N""%"
XS
C#%*&%8-,"+,"&h
! 6%$D7.*&J7./
g ^*%32E%$&a&(2#.,&2+2$.&32&6/.\%0,
! 67/#D7.*&J7./
g ^*%32E%$&a&(2#.,&W&3O*$./"*,#"&0,&32&6/.\%0,
! \.M"%&".#/
g ',+"2*.&.%#n%#"-&i.",&+"2*&KB"/g&,.&B%-.g7%$0*E%$&W&32&(%*-L
XV

Documents pareils