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*>)"*"+#'%) *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%$-./"*,#",! 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