SlideShare a Scribd company logo
1 of 21
JAVA DEBUGGING TOOLS 
Let’s Get Started…
What is Jnode? 
Jnode(Java New Operating SSyysstteemm DDeessiiggnn 
EEffffoorrtt)) iiss aa ssiimmppllee ttoo uussee && iinnssttaallll JJaavvaa 
ooppeerraattiinngg ssyysstteemm ffoorr ppeerrssoonnaall uussee.. 
IItt rruunnss oonn mmooddeerrnn ddeevviicceess.. 
AAnnyy jjaavvaa aapppplliiccaattiioonn wwiillll rruunn oonn iitt,, ffaasstt && 
sseeccuurree!! 
JJNNooddee iiss ooppeenn ssoouurrccee aanndd uusseess tthhee LLGGPPLL 
lliicceennssee.. 
2
What are Debugging 
tools? 
3 
Bugs in software are costly and difficult to find and ffiixx.. IInn rreecceenntt yyeeaarrss,, 
mmaannyy ttoooollss aanndd tteecchhnniiqquueess hhaavvee bbeeeenn ddeevveellooppeedd ffoorr aauuttoommaattiiccaallllyy ffiinnddiinngg 
bbuuggss bbyy aannaallyyssiinngg ssoouurrccee ccooddee oorr iinntteerrmmeeddiiaattee ccooddee ssttaattiiccaallllyy ((aatt ccoommppiillee 
ttiimmee)).. IInn tthhiiss pprreesseennttaattiioonn wwee’’llll ggoo tthhrroouugghh 55 bbuuggggiinngg ttoooollss,, ssppeecciiffiiccaallllyy 
BBaannddeerraa,, EESSCC//JJaavvaa 22,, FFiinnddBBuuggss,, JJLLiinntt,, aanndd PPMMDD uusseedd iinn aa vvaarriieettyy ooff JJaavvaa 
pprrooggrraammss.. EExxppeerriimmeennttaall rreessuullttss sshhooww tthhaatt nnoonnee ooff tthhee ttoooollss ssttrriiccttllyy 
ssuubbssuummeess aannootthheerr,, aanndd iinnddeeeedd tthhee ttoooollss oofftteenn ffiinndd nnoonn--oovveerrllaappppiinngg bbuuggss.. 
WWee wwiillll ddiissccuussss tthhee tteecchhnniiqquueess eeaacchh ooff tthhee ttoooollss iiss bbaasseedd oonn,, aanndd ssuuggggeesstt 
hhooww ppaarrttiiccuullaarr tteecchhnniiqquueess aaffffeecctt tthhee oouuttppuutt ooff tthhee ttoooollss aanndd hhooww iiss iitt 
uusseeffuull..
Introduction 
4 
In recent years, mmaannyy ttoooollss hhaavvee bbeeeenn 
ddeevveellooppeedd ffoorr aauuttoommaattiiccaallllyy ffiinnddiinngg bbuuggss iinn 
pprrooggrraamm ssoouurrccee ccooddee,, uussiinngg tteecchhnniiqquueess ssuucchh aass 
ssyynnttaaccttiicc ppaatttteerrnn mmaattcchhiinngg,, ddaattaa ffllooww 
aannaallyyssiiss,, ttyyppee ssyysstteemmss,, mmooddeell cchheecckkiinngg,, aanndd 
tthheeoorreemm pprroovviinngg.. 
TThhee ttoooollss rraann oonn aa ssmmaallll ssuuiittee ooff vvaarriioouussllyy-- 
ssiizzeedd JJaavvaa pprrooggrraammss ffrroomm vvaarriioouuss ddoommaaiinnss.. 
TThhuuss aallll ooff tthhee ttoooollss mmuusstt bbaallaannccee ffiinnddiinngg ttrruuee 
bbuuggss wwiitthh ggeenneerraattiinngg ffaallssee ppoossiittiivvee((wwaarrnniinnggss 
aabboouutt ccoorrrreecctt ccooddee)) aanndd ffaallssee 
nneeggaattiivveess((ffaaiilliinngg ttoo wwaarrnn aabboouutt iinnccoorrrreecctt 
ccooddee)).. AAllll ooff tthhee ttoooollss mmaakkee ddiiffffeerreenntt 
ttrraaddeeooffffss,, aanndd tthheessee cchhooiicceess aarree wwhhaatt ccaauussee 
tthhee ttoooollss ttoo pprroodduuccee tthhee wwiiddee rraannggee ooff rreessuullttss 
wwee oobbsseerrvveedd ffoorr oouurr bbeenncchhmmaarrkk ssuuiittee..
Background 
The code sample illustrates the variety aanndd ttyyppiiccaall oovveerrllaapp ooff 
bbuuggss ffoouunndd bbyy tthhee ttoooollss.. IItt aallssoo iilllluussttrraatteess tthhee pprroobblleemmss 
aassssoocciiaatteedd wwiitthh ffaallssee ppoossiittiivveess aanndd ffaallssee nneeggaattiivveess.. TThhee ccooddee 
ccoommppiilleess wwiitthh nnoo eerrrroorrss aanndd nnoo wwaarrnniinnggss,, aanndd tthhoouugghh iitt wwoonn’’tt 
wwiinn aannyy aawwaarrddss ffoorr ffuunnccttiioonnaalliittyy,, iitt ccoouulldd eeaassiillyy bbee ppaasssseedd ooffff aass 
ffiinnee.. HHoowweevveerr,, ffoouurr ooff tthhee ffiivvee ttoooollss wweerree eeaacchh aabbllee ttoo ffiinndd aatt 
lleeaasstt oonnee bbuugg iinn tthhiiss pprrooggrraamm.. 
§ PPMMDD ddiissccoovveerrss tthhaatt tthhee vvaarriiaabbllee yy oonn lliinnee 88 iiss nneevveerr uusseedd 
aanndd ggeenneerraatteess aann ““AAvvooiidd uunnuusseedd llooccaall vvaarriiaabblleess”” 
wwaarrnniinngg.. 
§ FFiinnddBBuuggss ddiissppllaayyss aa ““MMeetthhoodd iiggnnoorreess rreessuullttss ooff 
IInnppuuttSSttrreeaamm..rreeaadd(())”” wwaarrnniinngg ffoorr lliinnee 1122;; tthhiiss iiss aann eerrrroorr 
bbeeccaauussee tthhee rreessuulltt ooff IInnppuuttSSttrreeaamm..rreeaadd(()) iiss tthhee nnuummbbeerr 
ooff bbyytteess rreeaadd,, aanndd tthhiiss mmaayy bbee ffeewweerr bbyytteess tthhaann tthhee 
pprrooggrraammmmeerr iiss eexxppeeccttiinngg.. 
5 
1 import java.io.*; 
2 public class Foo{ 
3 private byte[] b; 
4 private int length; 
5 Foo(){ length = 40; 
6 b = new byte[length]; } 
7 public void bar(){ 
8 int y; 
9 try { 
10 FileInputStream x = 
11 new FileInputStream("z"); 
12 x.read(b,0,length); 
13 x.close();} 
14 catch(Exception e){ 
15 System.out.println("Oopsie");} 
16 for(int i = 1; i <= length; i++){ 
17 if (Integer.toString(50) == 
18 Byte.toString(b[i])) 
19 System.out.print(b[i] + " "); 
20 } 
21 } 
22 }
“FindBugs” 
IItt iiss aa bbuugg ppaatttteerrnn ddeetteeccttoorr ffoorr JJaavvaa.. 
FFiinnddBBuuggss uusseess aa sseerriieess ooff aadd--hhoocc tteecchhnniiqquueess 
ddeessiiggnneedd ttoo bbaallaannccee pprreecciissiioonn,, eeffffiicciieennccyy,, aanndd 
uussaabbiilliittyy.. 
OOnnee ooff tthhee mmaaiinn tteecchhnniiqquueess FFiinnddBBuuggss uusseess iiss 
ttoo ssyynnttaaccttiiccaallllyy mmaattcchh ssoouurrccee ccooddee ttoo kknnoowwnn 
ssuussppiicciioouuss pprrooggrraammmmiinngg pprraaccttiiccee,, iinn aa 
mmaannnneerr ssiimmiillaarr ttoo AASSTTLLoogg [[77]].. 
FFoorr eexxaammppllee,, FFiinnddBBuuggss cchheecckkss tthhaatt ccaallllss ttoo 
wwaaiitt(()) uusseedd iinn mmuullttii--tthhrreeaaddeedd JJaavvaa 
pprrooggrraammss,, aarree aallwwaayyss wwiitthhiinn aa lloooopp——wwhhiicchh iiss 
tthhee ccoorrrreecctt uussaaggee iinn mmoosstt ccaasseess.. 
6
“FindBugs” , How is it 
Useful? 
o This is a program which uses static analysis to llooookk ffoorr bbuuggss iinn JJaavvaa ccooddee.. 
o IItt iiss ffrreeee ssooffttwwaarree,, ddiissttrriibbuutteedd uunnddeerr tthhee tteerrmmss ooff tthhee LLeesssseerr GGNNUU PPuubblliicc LLiicceennssee.. 
o FFiinnddBBuuggss rreeqquuiirreess JJRREE ((oorr JJDDKK)) 11..55..00 oorr llaatteerr ttoo rruunn.. 
o HHoowweevveerr,, iitt ccaann aannaallyyssee pprrooggrraammss ccoommppiilleedd ffoorr aannyy vveerrssiioonn ooff JJaavvaa,, ffrroomm 11..00 ttoo 
11..77.. 
o SSoommee ccllaassss ffiilleess ccoommppiilleedd ffoorr JJaavvaa 11..88 ggiivvee FFiinnddBBuuggss pprroobblleemmss,, tthhee nneexxtt mmaajjoorr 
rreelleeaassee ooff FFiinnddBBuuggss wwiillll hhaannddllee JJaavvaa 11..88 ccllaassss ffiilleess..
“JLint” 
Unlike FFiinnddBBuuggss,,JJLLiinntt aannaallyyzzeess JJaavvaa 
bbyytteeccooddee,, ppeerrffoorrmmiinngg ssyynnttaaccttiicc cchheecckkss 
aanndd ddaattaaffllooww aannaallyyssiiss.. 
JJLLiinntt aallssoo iinncclluuddeess aann iinntteerrpprroocceedduurraall,, 
iinntteerr--ffiillee ccoommppoonneenntt ttoo ffiinndd ddeeaaddlloocckkss 
bbyy bbuuiillddiinngg aa lloocckk ggrraapphh aanndd eennssuurriinngg 
tthhaatt tthheerree aarree nneevveerr aannyy ccyycclleess iinn tthhee 
ggrraapphh.. 
JJLLiinntt 33..00 iinncclluuddeess tthhee mmuullttii--tthhrreeaaddeedd 
pprrooggrraamm cchheecckkiinngg eexxtteennssiioonnss ddeessccrriibbeedd 
bbyy AArrtthhoo .. JJLLiinntt iiss nnoott eeaassiillyy 
eexxppaannddaabbllee.. 
8
“Jlint”, How is it 
Useful? 
Jlint can be usful ssiinnccee ddeebbuuggggiinngg pprrooggrraammss 
oonn tthhee RRCCXX,,eessppeecciiaallllyy oonneess tthhaatt ddeeaall wwiitthh aa 
llooggiicc eerrrroorrss ccaann bbee ddiiffffiiccuulltt.. 
IItt ccaann aallssoo ddeetteecctt aassssuummppttiioonnss yyoouu mmaayy hhaavvee 
mmaaddee aanndd tteellllss yyoouu wwhheetthheerr tthheeyy aarree 
iinnccoorrrreecctt..
“PMD” 
UUnnlliikkee FFiinnddBBuuggss aanndd JJLLiinntt,, PPMMDD ppeerrffoorrmmss ssyynnttaaccttiicc 
cchheecckkss oonn pprrooggrraamm ssoouurrccee ccooddee,, bbuutt iitt ddooeess nnoott hhaavvee 
aa ddaattaaffllooww ccoommppoonneenntt.. 
IInn aaddddiittiioonn ttoo ssoommee ddeetteeccttiioonn ooff cclleeaarrllyy eerrrroonneeoouuss 
ccooddee,, mmaannyy ooff tthhee ““bbuuggss”” PPMMDD llooookkss ffoorr aarree ssttyylliissttiicc 
ccoonnvveennttiioonnss wwhhoossee vviioollaattiioonn mmiigghhtt bbee ssuussppiicciioouuss 
uunnddeerr ssoommee cciirrccuummssttaanncceess.. 
FFoorr eexxaammppllee,, hhaavviinngg aa ttrryy ssttaatteemmeenntt wwiitthh aann 
eemmppttyy ccaattcchh bblloocckk mmiigghhtt iinnddiiccaattee tthhaatt tthhee ccaauugghhtt 
eerrrroorr iiss iinnccoorrrreeccttllyy ddiissccaarrddeedd.. 
BBeeccaauussee PPMMDD iinncclluuddeess mmaannyy ddeetteeccttoorrss ffoorr bbuuggss 
tthhaatt ddeeppeenndd oonn pprrooggrraammmmiinngg ssttyyllee,, PPMMDD iinncclluuddeess 
ssuuppppoorrtt ffoorr sseelleeccttiinngg wwhhiicchh ddeetteeccttoorrss oorr ggrroouuppss ooff 
ddeetteeccttoorrss sshhoouulldd bbee rruunn.. 
10
“PMD”, How is it 
useful? 
f PMD scans Java source code and looks foorr ppootteennttiiaall pprroobblleemmss lliikkee:: 
PPoossssiibbllee bbuuggss –– eemmppttyy ttrryy//ccaattcchh//ffiinnaallllyy//sswwiittcchh ssttaatteemmeennttss.. 
DDeeaadd ccooddee –– uunnuusseedd llooccaall vvaarriiaabblleess,, ppaarraammeetteerrss aanndd pprriivvaattee mmeetthhooddss.. 
SSuubbooppttiimmaall ccooddee –– wwaasstteeffuull SSttrriinngg//SSttrriinnggBBuuffffeerr uussaaggee.. 
OOvveerrccoommpplliiccaatteedd eexxpprreessssiioonnss –– uunnnneecceessssaarryy iiff ssttaatteemmeennttss,, ffoorr llooooppss tthhaatt ccoouulldd bbee wwhhiillee llooooppss.. 
DDuupplliiccaattee ccooddee –– ccooppiieedd//ppaasstteedd ccooddee mmeeaannss ccooppiieedd//ppaasstteedd bbuuggss..
“Bandera” 
12 
Bandera is a verification ttooooll bbaasseedd oonn mmooddeell 
cchheecckkiinngg aanndd aabbssttrraaccttiioonn.. 
IInn ppaarrttiiccuullaarr,, wwiitthh nnoo aannnnoottaattiioonnss BBaannddeerraa 
vveerriiffiieess tthhee aabbsseennccee ooff ddeeaaddlloocckkss.. 
BBaannddeerraa iinncclluuddeess ooppttiioonnaall sslliicciinngg aanndd aabbssttrraaccttiioonn 
pphhaasseess,, ffoolllloowweedd bbyy mmooddeell cchheecckkiinngg TThhee 
ddeevveellooppeerrss ooff BBaannddeerraa aacckknnoowwlleeddggee oonn tthheeiirr wweebb 
ppaaggee tthhaatt iitt ccaannnnoott aannaallyyssee JJaavvaa ((ssttaannddaarrdd)) 
lliibbrraarryy ccaallllss,, aanndd uunnffoorrttuunnaatteellyy tthhee JJaavvaa lliibbrraarryy iiss 
uusseedd eexxtteennssiivveellyy bbyy aallll ooff tthhee bbeenncchhmmaarrkkss.. 
TThhiiss ggrreeaattllyy lliimmiittss tthhee uussaabbiilliittyy aanndd aapppplliiccaabbiilliittyy 
ooff BBaannddeerraa..
“Bandera”, How is it 
useful? 
o It is a tool for model checking JJaavvaa ssoouurrccee ccooddee.. 
o IItt uusseess aa ccoommppoonneenntt bbaasseedd aarrcchhiitteeccttuurree ffoorr mmooddeell eexxttrraaccttiioonn ddeessiiggnn ttoo 
mmaaxxiimmiizzee ssccaabbiilliittyy ,, fflleexxiibbiilliittyy aanndd eexxtteennssiibbiilliittyy.. 
o TThhee ccuurrrreenntt ccaann hhaannddllee aa rreeaalliissttiicc ,, aallbbiieett lliimmiitteedd ,, ccllaassss ooff JJaavvaa 
pprrooggrraammss.. 
o BByy pprroovviiddiinngg aauuttoommaatteedd ssuuppppoorrtt ffoorr eexxttrraaccttiinngg ccoommppaacctt ffiinniittee ssttaattee 
mmooddeellss ooff ssoouurrccee,,ttoooollss lliikkee BBaannddeerraa lloowweerr tthhee bbaarrrriieerrss ttoo aappppllyyiinngg 
mmooddeell cchheecckkiinngg ttoo ssooffttwwaarree..
“ESC2/Java” 
14 
The ESC2/Java[10], the Extended SSttaattiicc CChheecckkiinngg 
ssyysstteemm ffoorr JJaavvaa,, bbaasseedd oonn tthheeoorreemm pprroovviinngg,, 
ppeerrffoorrmmss ffoorrmmaall vveerriiffiiccaattiioonn ooff pprrooppeerrttiieess ooff JJaavvaa 
ssoouurrccee ccooddee.. 
EESSCC22//JJaavvaa uusseess aa tthheeoorreemm pprroovveerr ttoo vveerriiffyy tthhaatt tthhee 
pprrooggrraamm mmaattcchheess tthhee ssppeecciiffiiccaattiioonnss.. 
EESSCC22//JJaavvaa iiss ddeessiiggnneedd ssoo tthhaatt iitt ccaann pprroodduuccee ssoommee 
uusseeffuull oouuttppuutt eevveenn wwiitthhoouutt aannyy ssppeecciiffiiccaattiioonnss.. 
EESSCC//JJaavvaa llooookkss ffoorr eerrrroorrss ssuucchh aass nnuullll ppooiinntteerr 
ddeerreeffeerreenncceess,, aarrrraayy oouutt-ooff-bboouunnddss eerrrroorrss,, aanndd ssoo 
oonn..
“ESC/Java” , How is it 
useful? 
The Extended SSttaattiicc CChheecckkeerr ffoorr JJaavvaa 
vveerrssiioonn ((EESSCC//JJaavvaa)) iiss aa 
pprrooggrraammmmiinngg ttooooll tthhaatt aatttteemmppttss ttoo 
ffiinndd ccoommmmoonn rruunn-ttiimmee eerrrroorrss iinn JJMMLL-aannnnoottaatteedd 
JJaavvaa pprrooggrraammss bbyy ssttaattiicc 
aannaallyyssiiss ooff tthhee pprrooggrraamm ccooddee aanndd iittss 
ffoorrmmaall aannnnoottaattiioonnss.. 
UUsseerr’’ss ccaann ccoonnttrrooll tthhee aammoouunntt aanndd kkiinnddss 
ooff cchheecckkiinngg tthhaatt EESSCC//JJaavvaa22 ppeerrffoorrmmss 
bbyy aannnnoottaattiinngg tthheeiirr pprrooggrraammss wwiitthh 
ssppeecciiaallllyy ffoorrmmaatttteedd ccoommmmeennttss ccaalllleedd 
pprraaggmmaass..
Taxonomy Of Bugs 
16 
These classifications are oouurr oowwnn,, nnoott tthhee oonneess uusseedd iinn 
tthhee lliitteerraattuurree ffoorr aannyy ooff tthheessee ttoooollss.. 
WWiitthh tthhiiss iinn mmiinndd,, nnoottiiccee tthhaatt tthhee llaarrggeesstt oovveerrllaapp iiss 
bbeettwweeeenn FFiinnddBBuuggss aanndd PPMMDD,,wwhhiicchh sshhaarree 66 ccaatteeggoorriieess iinn 
ccoommmmoonn.. 
TThhee ““GGeenneerraall”” ccaatteeggoorryy iiss aa ccaattcchh-aallll ffoorr cchheecckkss tthhaatt ddoo 
nnoott ffiitt iinn tthhee ootthheerr ccaatteeggoorriieess,, ssoo aallll ttoooollss ffiinndd 
ssoommeetthhiinngg iinn tthhaatt ccaatteeggoorryy.. 
AAllll ooff tthhee ttoooollss aallssoo llooookk ffoorr ccoonnccuurrrreennccyy eerrrroorrss.. 
OOvveerraallll,, tthheerree aarree mmaannyy ccoommmmoonn ccaatteeggoorriieess aammoonngg tthhee 
ttoooollss aanndd mmaannyy ccaatteeggoorriieess oonn wwhhiicchh tthhee ttoooollss ddiiffffeerr..
ANALYSIS 
Overlapping Bug Categories 
f Clearly the tools generate faarr ttoooo mmaannyy wwaarrnniinnggss ttoo rreevviieeww 
aallll ooff tthheemm mmaannuuaallllyy.. IInn tthhiiss ppaarrtt,, wwee eexxaammiinnee tthhee 
eeffffeeccttiivveenneessss ooff tthhee ttoooollss oonn tthhrreeee cchheecckkiinngg ttaasskkss tthhaatt sseevveerraall 
ooff tthhee ttoooollss sshhaarree iinn ccoommmmoonn:: ccoonnccuurrrreennccyy,, nnuullll ddeerreeffeerreennccee,, 
aanndd aarrrraayy bboouunnddss eerrrroorrss.. EEvveenn ffoorr tthhee ssaammee ttaasskk wwee ffoouunndd aa 
wwiiddee vvaarriiaattiioonn iinn tthhee wwaarrnniinnggss rreeppoorrtteedd bbyy ddiiffffeerreenntt ttoooollss.. 
EEvveenn aafftteerr rreessttrriiccttiinngg oouurrsseellvveess ttoo tthheessee tthhrreeee ccaatteeggoorriieess,, 
tthheerree iiss ssttiillll aa llaarrggee nnuummbbeerr ooff wwaarrnniinnggss,, aanndd ssoo oouurr mmaannuuaall 
eexxaammiinnaattiioonn iiss lliimmiitteedd ttoo sseevveerraall ddoozzeenn wwaarrnniinnggss.. 
17
Concurrency Errors 
All of the tools check for at least oonnee kkiinndd ooff ccoonnccuurrrreennccyy eerrrroorr.. 
EESSCC22//JJaavvaa iinncclluuddeess ssuuppppoorrtt ffoorr aauuttoommaattiiccaallllyy cchheecckkiinngg ffoorr rraaccee ccoonnddiittiioonnss 
aanndd ppootteennttiiaall ddeeaaddlloocckkss.. 
PPMMDD iinncclluuddeess cchheecckkss ffoorr ssoommee ccoommmmoonn bbuugg ppaatttteerrnnss,, ssuucchh aass tthhee wweellll-kknnoowwnn 
ddoouubbllee-cchheecckkeedd lloocckkiinngg bbuugg iinn JJaavvaa.. 
IInn ccoonnttrraasstt,, bbootthh FFiinnddBBuuggss aanndd JJLLiinntt ddoo rreeppoorrtt wwaarrnniinnggss.. 
FFiinnddBBuuggss aallssoo wwaarrnnss aabboouutt tthhee pprreesseennccee ooff ootthheerr ccoonnccuurrrreennccyy bbuugg ppaatttteerrnnss,, 
ssuucchh aass nnoott ppuuttttiinngg aa mmoonniittoorr wwaaiitt(()) ccaallll iinn aa wwhhiillee lloooopp.. 
18
Null Dereferences 
19 
Surprisingly, there is not a lot of overlap between the warnings reported bbyy tthhee vvaarriioouuss ttoooollss.. 
JJLLiinntt ffiinnddss mmaannyy ppootteennttiiaall nnuullll ddeerreeffeerreenncceess.. IInn oorrddeerr ttoo rreedduuccee tthhee nnuummbbeerr ooff wwaarrnniinnggss,, JJLLiinntt ttrriieess 
ttoo oonnllyy iiddeennttiiffyy iinnccoonnssiisstteenntt aassssuummppttiioonnss aabboouutt nnuullll.. FFoorr eexxaammppllee,, JJlliinntt wwaarrnnss iiff aann oobbjjeecctt iiss 
ssoommeettiimmeess ccoommppaarreedd aaggaaiinnsstt nnuullll bbeeffoorree iitt iiss ddeerreeffeerreenncceedd aanndd ssoommeettiimmeess nnoott.. 
EESSCC22//JJaavvaa rreeppoorrttss tthhee mmoosstt nnuullll ppooiinntteerr ddeerreeffeerreenncceess bbeeccaauussee iitt oofftteenn aassssuummeess oobbjjeeccttss mmiigghhtt bbee 
nnuullll,, ssiinnccee wwee ddiidd nnoott aadddd aannyy aannnnoottaattiioonnss ttoo tthhee ccoonnttrraarryy.. 
IInntteerreessttiinnggllyy,, FFiinnddBBuuggss ddiissccoovveerrss aa vveerryy ssmmaallll sseett ooff ppootteennttiiaall nnuullll ddeerreeffeerreenncceess ccoommppaarreedd ttoo bbootthh 
EESSCC22//JJaavvaa aanndd JJLLiinntt.. 
PPMMDD ddooeess nnoott cchheecckk ffoorr nnuullll ppooiinntteerr ddeerreeffeerreenncceess,, bbuutt iitt ddooeess wwaarrnn aabboouutt sseettttiinngg cceerrttaaiinn oobbjjeeccttss ttoo 
nnuullll..
Array Bound Errors 
20 
W In Java, indexing outside the bounds of an array results is a run-time exception. Whhiillee aa bboouunndd 
eerrrroorr iinn JJaavvaa mmaayy nnoott bbee tthhee ccaattaassttrroopphhiicc eerrrroorr tthhaatt iitt ccaann bbee ffoorr CC aanndd CC++++ ((wwhheerree bboouunnddss eerrrroorrss 
oovveerr--wwrriittee uunneexxppeecctteedd ppaarrttss ooff mmeemmoorryy)),, tthheeyy ssttiillll iinnddiiccaattee aa bbuugg iinn tthhee pprrooggrraamm.. FFoorr eexxaammppllee,, 
ccooddee ssuucchh aass tthhiiss aappppeeaarreedd iinn JJAAVVAA bbeenncchhmmaarrkkss:: 
ppuubblliicc ccllaassss FFoooo {{ 
ssttaattiicc IInntteeggeerr[[]] aarryy == nneeww IInntteeggeerr[[22]];; 
ppuubblliicc ssttaattiicc vvooiidd aassssiiggnn(()) {{ 
OObbjjeecctt oo00 == aarryy[[aarryy..lleennggtthh]];; 
OObbjjeecctt oo11 == aarryy[[aarryy..lleennggtthh--11]];;}}}} 
IInn tthhiiss ccaassee,, JJLLiinntt ssiiggnnaallss aa wwaarrnniinngg tthhaatt tthhee aarrrraayy iinnddeexx mmiigghhtt bbee oouutt ooff bboouunnddss ffoorr tthhee aacccceessss 
ttoooo11((bbeeccaauussee iitt tthhiinnkkss tthhee lleennggtthh ooff tthhee aarrrraayy mmiigghhtt bbee 00)),, bbuutt cclleeaarrllyy tthhaatt iiss nnoott ppoossssiibbllee hheerree..
Conclusion 
We have examined the results of applying ffiivvee bbuugg--ffiinnddiinngg ttoooollss ttoo aa 
vvaarriieettyy ooff JJaavvaa pprrooggrraammss.. AAlltthhoouugghh tthheerree iiss ssoommee oovveerrllaapp bbeettwweeeenn tthhee 
kkiinnddss ooff bbuuggss ffoouunndd bbyy tthhee ttoooollss,, mmoossttllyy tthheeiirr wwaarrnniinnggss aarree ddiissttiinncctt..SSuucchh 
aa mmeecchhaanniissmm sseeeemmss nneecceessssaarryy ttoo hheellpp rreedduuccee tthhee sshheeeerr oouuttppuutt ooff tthhee 
ttoooollss..IInn tthhiiss pprreesseennttaattiioonn wwee hhaavvee ffooccuusseedd oonn tthhee bbeenneeffiittss ooff ddiiffffeerreenntt 
ttoooollss.. AAnn iinntteerreessttiinngg aarreeaa ooff ffuuttuurree wwoorrkk iiss ttoo ggaatthheerr eexxtteennssiivvee 
iinnffoorrmmaattiioonn aabboouutt tthhee aaccttuuaall ffaauullttss iinn pprrooggrraammss,, wwhhiicchh wwoouulldd eennaabbllee uuss 
ttoo pprreecciisseellyy iiddeennttiiffyy ffaallssee ppoossiittiivveess aanndd ffaallssee nneeggaattiivveess.. TThhiiss iinnffoorrmmaattiioonn 
ccoouulldd bbee uusseedd ttoo ddeetteerrmmiinnee hhooww aaccccuurraatteellyy eeaacchh ttooooll pprreeddiiccttss ffaauullttss iinn 
oouurr bbeenncchhmmaarrkkss..FFiinnaallllyy,, rreeccaallll tthhaatt aallll ooff tthhee ttoooollss wwee uusseedd aarree iinn ssoommee 
wwaayyss aassoouunndd.. 
21

More Related Content

What's hot

What's hot (20)

Islamic economics
Islamic economicsIslamic economics
Islamic economics
 
Geostrategi
Geostrategi Geostrategi
Geostrategi
 
Untitled 1
Untitled 1Untitled 1
Untitled 1
 
Validation of mixing, granulation, lubrication, compression and coating
Validation of mixing, granulation, lubrication, compression and coatingValidation of mixing, granulation, lubrication, compression and coating
Validation of mixing, granulation, lubrication, compression and coating
 
pre-prosthetic surgery
 pre-prosthetic surgery pre-prosthetic surgery
pre-prosthetic surgery
 
(EEG) Electroencefalografía
(EEG) Electroencefalografía(EEG) Electroencefalografía
(EEG) Electroencefalografía
 
Sst practica
Sst practicaSst practica
Sst practica
 
Project based learning powerpoint
Project based learning powerpointProject based learning powerpoint
Project based learning powerpoint
 
Nursing lec 1
Nursing lec 1Nursing lec 1
Nursing lec 1
 
Pilot plant general considerations
Pilot plant general considerationsPilot plant general considerations
Pilot plant general considerations
 
ECG, Conduction disturbances
ECG, Conduction disturbances ECG, Conduction disturbances
ECG, Conduction disturbances
 
information practices
information practicesinformation practices
information practices
 
Chapter 8 Erosional Forces
Chapter 8 Erosional ForcesChapter 8 Erosional Forces
Chapter 8 Erosional Forces
 
Instructional strategies
Instructional strategiesInstructional strategies
Instructional strategies
 
Ekonomi teknik
Ekonomi teknikEkonomi teknik
Ekonomi teknik
 
Pilot plant liquid orals
Pilot plant liquid oralsPilot plant liquid orals
Pilot plant liquid orals
 
25 procuring organs 2
25 procuring organs   225 procuring organs   2
25 procuring organs 2
 
Las siete palabras de Jesús en la cruz
Las siete palabras de Jesús en la cruzLas siete palabras de Jesús en la cruz
Las siete palabras de Jesús en la cruz
 
Aspectos generales del entrenamiento
Aspectos generales del entrenamientoAspectos generales del entrenamiento
Aspectos generales del entrenamiento
 
supply chain mgmt
supply chain mgmtsupply chain mgmt
supply chain mgmt
 

Viewers also liked

IEEE DSP Workshop 2011
IEEE DSP Workshop 2011IEEE DSP Workshop 2011
IEEE DSP Workshop 2011Behzad Dogahe
 
08 translating applicationsusingkeyvaluebackends
08 translating applicationsusingkeyvaluebackends08 translating applicationsusingkeyvaluebackends
08 translating applicationsusingkeyvaluebackendsShozo Hatta
 
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوتر
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوترطريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوتر
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوترfooty fans
 
Static analysis tools
Static analysis toolsStatic analysis tools
Static analysis toolsAman Ahmed
 
千字文 (せんじもん)
千字文 (せんじもん)千字文 (せんじもん)
千字文 (せんじもん)Shozo Hatta
 
Quantization and Transmission in Wireless Multi-hop Networks
  Quantization and Transmission in Wireless Multi-hop Networks  Quantization and Transmission in Wireless Multi-hop Networks
Quantization and Transmission in Wireless Multi-hop NetworksBehzad Dogahe
 
Google Translator Toolkitと翻訳メモリ(ノーカット版)
Google Translator Toolkitと翻訳メモリ(ノーカット版)Google Translator Toolkitと翻訳メモリ(ノーカット版)
Google Translator Toolkitと翻訳メモリ(ノーカット版)Shozo Hatta
 
Building Modelsvwith Active Model
Building Modelsvwith Active ModelBuilding Modelsvwith Active Model
Building Modelsvwith Active ModelShozo Hatta
 
Calculo mecanico distri 2
Calculo mecanico distri 2Calculo mecanico distri 2
Calculo mecanico distri 2Julian Vargas
 
Hay guide chart.pptx [autosaved]
Hay guide chart.pptx [autosaved]Hay guide chart.pptx [autosaved]
Hay guide chart.pptx [autosaved]Shivam Srivastava
 
Hard work – a key to success
Hard work – a key to successHard work – a key to success
Hard work – a key to successAarya Chavan
 
スマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてスマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてYousuke Saki
 
Unicode文字プロパティ
Unicode文字プロパティUnicode文字プロパティ
Unicode文字プロパティShozo Hatta
 

Viewers also liked (17)

IEEE DSP Workshop 2011
IEEE DSP Workshop 2011IEEE DSP Workshop 2011
IEEE DSP Workshop 2011
 
Angular.js
Angular.jsAngular.js
Angular.js
 
08 translating applicationsusingkeyvaluebackends
08 translating applicationsusingkeyvaluebackends08 translating applicationsusingkeyvaluebackends
08 translating applicationsusingkeyvaluebackends
 
Global Village
Global VillageGlobal Village
Global Village
 
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوتر
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوترطريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوتر
طريقة تشغيل تطبيقات وألعاب الأندرويد على الكمبيوتر
 
Static analysis tools
Static analysis toolsStatic analysis tools
Static analysis tools
 
Resume_Neeraj_
Resume_Neeraj_Resume_Neeraj_
Resume_Neeraj_
 
千字文 (せんじもん)
千字文 (せんじもん)千字文 (せんじもん)
千字文 (せんじもん)
 
Quantization and Transmission in Wireless Multi-hop Networks
  Quantization and Transmission in Wireless Multi-hop Networks  Quantization and Transmission in Wireless Multi-hop Networks
Quantization and Transmission in Wireless Multi-hop Networks
 
Google Translator Toolkitと翻訳メモリ(ノーカット版)
Google Translator Toolkitと翻訳メモリ(ノーカット版)Google Translator Toolkitと翻訳メモリ(ノーカット版)
Google Translator Toolkitと翻訳メモリ(ノーカット版)
 
Building Modelsvwith Active Model
Building Modelsvwith Active ModelBuilding Modelsvwith Active Model
Building Modelsvwith Active Model
 
Calculo mecanico distri 2
Calculo mecanico distri 2Calculo mecanico distri 2
Calculo mecanico distri 2
 
Hay guide chart.pptx [autosaved]
Hay guide chart.pptx [autosaved]Hay guide chart.pptx [autosaved]
Hay guide chart.pptx [autosaved]
 
Hard work – a key to success
Hard work – a key to successHard work – a key to success
Hard work – a key to success
 
スマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてスマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境について
 
Unicode文字プロパティ
Unicode文字プロパティUnicode文字プロパティ
Unicode文字プロパティ
 
Qr용
Qr용Qr용
Qr용
 

Similar to Java debugging tools

Similar to Java debugging tools (20)

Clase 10 estenosis aórtica
Clase 10 estenosis aórticaClase 10 estenosis aórtica
Clase 10 estenosis aórtica
 
Nursing lec 1
Nursing lec 1Nursing lec 1
Nursing lec 1
 
Who
WhoWho
Who
 
Importancia de las tic
Importancia de las ticImportancia de las tic
Importancia de las tic
 
Psicologia del delincuente
Psicologia del delincuentePsicologia del delincuente
Psicologia del delincuente
 
Polineuropatías en niños. Generalidades
Polineuropatías en niños. GeneralidadesPolineuropatías en niños. Generalidades
Polineuropatías en niños. Generalidades
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativo
 
Paediatrics: Introduction
Paediatrics: IntroductionPaediatrics: Introduction
Paediatrics: Introduction
 
Género narrativo. Segundo Ciclo.
Género narrativo. Segundo Ciclo.Género narrativo. Segundo Ciclo.
Género narrativo. Segundo Ciclo.
 
Concepto objeto norma dipr
Concepto objeto norma diprConcepto objeto norma dipr
Concepto objeto norma dipr
 
internacional privado
internacional privado internacional privado
internacional privado
 
23 allocating scarce resources 2 (1)
23 allocating scarce resources   2 (1)23 allocating scarce resources   2 (1)
23 allocating scarce resources 2 (1)
 
Dental materials
Dental materialsDental materials
Dental materials
 
Mecanismos de Resolución de Conflictos
Mecanismos de Resolución de ConflictosMecanismos de Resolución de Conflictos
Mecanismos de Resolución de Conflictos
 
Medioambiente
MedioambienteMedioambiente
Medioambiente
 
Medio ambiente 2014
Medio ambiente 2014Medio ambiente 2014
Medio ambiente 2014
 
Pendahuluan imunologi2009
Pendahuluan imunologi2009Pendahuluan imunologi2009
Pendahuluan imunologi2009
 
Networks
NetworksNetworks
Networks
 
Description of Project based learning
Description of Project based learningDescription of Project based learning
Description of Project based learning
 
Investigación aplicada al Diseño Arquitectónico
Investigación aplicada al Diseño ArquitectónicoInvestigación aplicada al Diseño Arquitectónico
Investigación aplicada al Diseño Arquitectónico
 

Java debugging tools

  • 1. JAVA DEBUGGING TOOLS Let’s Get Started…
  • 2. What is Jnode? Jnode(Java New Operating SSyysstteemm DDeessiiggnn EEffffoorrtt)) iiss aa ssiimmppllee ttoo uussee && iinnssttaallll JJaavvaa ooppeerraattiinngg ssyysstteemm ffoorr ppeerrssoonnaall uussee.. IItt rruunnss oonn mmooddeerrnn ddeevviicceess.. AAnnyy jjaavvaa aapppplliiccaattiioonn wwiillll rruunn oonn iitt,, ffaasstt && sseeccuurree!! JJNNooddee iiss ooppeenn ssoouurrccee aanndd uusseess tthhee LLGGPPLL lliicceennssee.. 2
  • 3. What are Debugging tools? 3 Bugs in software are costly and difficult to find and ffiixx.. IInn rreecceenntt yyeeaarrss,, mmaannyy ttoooollss aanndd tteecchhnniiqquueess hhaavvee bbeeeenn ddeevveellooppeedd ffoorr aauuttoommaattiiccaallllyy ffiinnddiinngg bbuuggss bbyy aannaallyyssiinngg ssoouurrccee ccooddee oorr iinntteerrmmeeddiiaattee ccooddee ssttaattiiccaallllyy ((aatt ccoommppiillee ttiimmee)).. IInn tthhiiss pprreesseennttaattiioonn wwee’’llll ggoo tthhrroouugghh 55 bbuuggggiinngg ttoooollss,, ssppeecciiffiiccaallllyy BBaannddeerraa,, EESSCC//JJaavvaa 22,, FFiinnddBBuuggss,, JJLLiinntt,, aanndd PPMMDD uusseedd iinn aa vvaarriieettyy ooff JJaavvaa pprrooggrraammss.. EExxppeerriimmeennttaall rreessuullttss sshhooww tthhaatt nnoonnee ooff tthhee ttoooollss ssttrriiccttllyy ssuubbssuummeess aannootthheerr,, aanndd iinnddeeeedd tthhee ttoooollss oofftteenn ffiinndd nnoonn--oovveerrllaappppiinngg bbuuggss.. WWee wwiillll ddiissccuussss tthhee tteecchhnniiqquueess eeaacchh ooff tthhee ttoooollss iiss bbaasseedd oonn,, aanndd ssuuggggeesstt hhooww ppaarrttiiccuullaarr tteecchhnniiqquueess aaffffeecctt tthhee oouuttppuutt ooff tthhee ttoooollss aanndd hhooww iiss iitt uusseeffuull..
  • 4. Introduction 4 In recent years, mmaannyy ttoooollss hhaavvee bbeeeenn ddeevveellooppeedd ffoorr aauuttoommaattiiccaallllyy ffiinnddiinngg bbuuggss iinn pprrooggrraamm ssoouurrccee ccooddee,, uussiinngg tteecchhnniiqquueess ssuucchh aass ssyynnttaaccttiicc ppaatttteerrnn mmaattcchhiinngg,, ddaattaa ffllooww aannaallyyssiiss,, ttyyppee ssyysstteemmss,, mmooddeell cchheecckkiinngg,, aanndd tthheeoorreemm pprroovviinngg.. TThhee ttoooollss rraann oonn aa ssmmaallll ssuuiittee ooff vvaarriioouussllyy-- ssiizzeedd JJaavvaa pprrooggrraammss ffrroomm vvaarriioouuss ddoommaaiinnss.. TThhuuss aallll ooff tthhee ttoooollss mmuusstt bbaallaannccee ffiinnddiinngg ttrruuee bbuuggss wwiitthh ggeenneerraattiinngg ffaallssee ppoossiittiivvee((wwaarrnniinnggss aabboouutt ccoorrrreecctt ccooddee)) aanndd ffaallssee nneeggaattiivveess((ffaaiilliinngg ttoo wwaarrnn aabboouutt iinnccoorrrreecctt ccooddee)).. AAllll ooff tthhee ttoooollss mmaakkee ddiiffffeerreenntt ttrraaddeeooffffss,, aanndd tthheessee cchhooiicceess aarree wwhhaatt ccaauussee tthhee ttoooollss ttoo pprroodduuccee tthhee wwiiddee rraannggee ooff rreessuullttss wwee oobbsseerrvveedd ffoorr oouurr bbeenncchhmmaarrkk ssuuiittee..
  • 5. Background The code sample illustrates the variety aanndd ttyyppiiccaall oovveerrllaapp ooff bbuuggss ffoouunndd bbyy tthhee ttoooollss.. IItt aallssoo iilllluussttrraatteess tthhee pprroobblleemmss aassssoocciiaatteedd wwiitthh ffaallssee ppoossiittiivveess aanndd ffaallssee nneeggaattiivveess.. TThhee ccooddee ccoommppiilleess wwiitthh nnoo eerrrroorrss aanndd nnoo wwaarrnniinnggss,, aanndd tthhoouugghh iitt wwoonn’’tt wwiinn aannyy aawwaarrddss ffoorr ffuunnccttiioonnaalliittyy,, iitt ccoouulldd eeaassiillyy bbee ppaasssseedd ooffff aass ffiinnee.. HHoowweevveerr,, ffoouurr ooff tthhee ffiivvee ttoooollss wweerree eeaacchh aabbllee ttoo ffiinndd aatt lleeaasstt oonnee bbuugg iinn tthhiiss pprrooggrraamm.. § PPMMDD ddiissccoovveerrss tthhaatt tthhee vvaarriiaabbllee yy oonn lliinnee 88 iiss nneevveerr uusseedd aanndd ggeenneerraatteess aann ““AAvvooiidd uunnuusseedd llooccaall vvaarriiaabblleess”” wwaarrnniinngg.. § FFiinnddBBuuggss ddiissppllaayyss aa ““MMeetthhoodd iiggnnoorreess rreessuullttss ooff IInnppuuttSSttrreeaamm..rreeaadd(())”” wwaarrnniinngg ffoorr lliinnee 1122;; tthhiiss iiss aann eerrrroorr bbeeccaauussee tthhee rreessuulltt ooff IInnppuuttSSttrreeaamm..rreeaadd(()) iiss tthhee nnuummbbeerr ooff bbyytteess rreeaadd,, aanndd tthhiiss mmaayy bbee ffeewweerr bbyytteess tthhaann tthhee pprrooggrraammmmeerr iiss eexxppeeccttiinngg.. 5 1 import java.io.*; 2 public class Foo{ 3 private byte[] b; 4 private int length; 5 Foo(){ length = 40; 6 b = new byte[length]; } 7 public void bar(){ 8 int y; 9 try { 10 FileInputStream x = 11 new FileInputStream("z"); 12 x.read(b,0,length); 13 x.close();} 14 catch(Exception e){ 15 System.out.println("Oopsie");} 16 for(int i = 1; i <= length; i++){ 17 if (Integer.toString(50) == 18 Byte.toString(b[i])) 19 System.out.print(b[i] + " "); 20 } 21 } 22 }
  • 6. “FindBugs” IItt iiss aa bbuugg ppaatttteerrnn ddeetteeccttoorr ffoorr JJaavvaa.. FFiinnddBBuuggss uusseess aa sseerriieess ooff aadd--hhoocc tteecchhnniiqquueess ddeessiiggnneedd ttoo bbaallaannccee pprreecciissiioonn,, eeffffiicciieennccyy,, aanndd uussaabbiilliittyy.. OOnnee ooff tthhee mmaaiinn tteecchhnniiqquueess FFiinnddBBuuggss uusseess iiss ttoo ssyynnttaaccttiiccaallllyy mmaattcchh ssoouurrccee ccooddee ttoo kknnoowwnn ssuussppiicciioouuss pprrooggrraammmmiinngg pprraaccttiiccee,, iinn aa mmaannnneerr ssiimmiillaarr ttoo AASSTTLLoogg [[77]].. FFoorr eexxaammppllee,, FFiinnddBBuuggss cchheecckkss tthhaatt ccaallllss ttoo wwaaiitt(()) uusseedd iinn mmuullttii--tthhrreeaaddeedd JJaavvaa pprrooggrraammss,, aarree aallwwaayyss wwiitthhiinn aa lloooopp——wwhhiicchh iiss tthhee ccoorrrreecctt uussaaggee iinn mmoosstt ccaasseess.. 6
  • 7. “FindBugs” , How is it Useful? o This is a program which uses static analysis to llooookk ffoorr bbuuggss iinn JJaavvaa ccooddee.. o IItt iiss ffrreeee ssooffttwwaarree,, ddiissttrriibbuutteedd uunnddeerr tthhee tteerrmmss ooff tthhee LLeesssseerr GGNNUU PPuubblliicc LLiicceennssee.. o FFiinnddBBuuggss rreeqquuiirreess JJRREE ((oorr JJDDKK)) 11..55..00 oorr llaatteerr ttoo rruunn.. o HHoowweevveerr,, iitt ccaann aannaallyyssee pprrooggrraammss ccoommppiilleedd ffoorr aannyy vveerrssiioonn ooff JJaavvaa,, ffrroomm 11..00 ttoo 11..77.. o SSoommee ccllaassss ffiilleess ccoommppiilleedd ffoorr JJaavvaa 11..88 ggiivvee FFiinnddBBuuggss pprroobblleemmss,, tthhee nneexxtt mmaajjoorr rreelleeaassee ooff FFiinnddBBuuggss wwiillll hhaannddllee JJaavvaa 11..88 ccllaassss ffiilleess..
  • 8. “JLint” Unlike FFiinnddBBuuggss,,JJLLiinntt aannaallyyzzeess JJaavvaa bbyytteeccooddee,, ppeerrffoorrmmiinngg ssyynnttaaccttiicc cchheecckkss aanndd ddaattaaffllooww aannaallyyssiiss.. JJLLiinntt aallssoo iinncclluuddeess aann iinntteerrpprroocceedduurraall,, iinntteerr--ffiillee ccoommppoonneenntt ttoo ffiinndd ddeeaaddlloocckkss bbyy bbuuiillddiinngg aa lloocckk ggrraapphh aanndd eennssuurriinngg tthhaatt tthheerree aarree nneevveerr aannyy ccyycclleess iinn tthhee ggrraapphh.. JJLLiinntt 33..00 iinncclluuddeess tthhee mmuullttii--tthhrreeaaddeedd pprrooggrraamm cchheecckkiinngg eexxtteennssiioonnss ddeessccrriibbeedd bbyy AArrtthhoo .. JJLLiinntt iiss nnoott eeaassiillyy eexxppaannddaabbllee.. 8
  • 9. “Jlint”, How is it Useful? Jlint can be usful ssiinnccee ddeebbuuggggiinngg pprrooggrraammss oonn tthhee RRCCXX,,eessppeecciiaallllyy oonneess tthhaatt ddeeaall wwiitthh aa llooggiicc eerrrroorrss ccaann bbee ddiiffffiiccuulltt.. IItt ccaann aallssoo ddeetteecctt aassssuummppttiioonnss yyoouu mmaayy hhaavvee mmaaddee aanndd tteellllss yyoouu wwhheetthheerr tthheeyy aarree iinnccoorrrreecctt..
  • 10. “PMD” UUnnlliikkee FFiinnddBBuuggss aanndd JJLLiinntt,, PPMMDD ppeerrffoorrmmss ssyynnttaaccttiicc cchheecckkss oonn pprrooggrraamm ssoouurrccee ccooddee,, bbuutt iitt ddooeess nnoott hhaavvee aa ddaattaaffllooww ccoommppoonneenntt.. IInn aaddddiittiioonn ttoo ssoommee ddeetteeccttiioonn ooff cclleeaarrllyy eerrrroonneeoouuss ccooddee,, mmaannyy ooff tthhee ““bbuuggss”” PPMMDD llooookkss ffoorr aarree ssttyylliissttiicc ccoonnvveennttiioonnss wwhhoossee vviioollaattiioonn mmiigghhtt bbee ssuussppiicciioouuss uunnddeerr ssoommee cciirrccuummssttaanncceess.. FFoorr eexxaammppllee,, hhaavviinngg aa ttrryy ssttaatteemmeenntt wwiitthh aann eemmppttyy ccaattcchh bblloocckk mmiigghhtt iinnddiiccaattee tthhaatt tthhee ccaauugghhtt eerrrroorr iiss iinnccoorrrreeccttllyy ddiissccaarrddeedd.. BBeeccaauussee PPMMDD iinncclluuddeess mmaannyy ddeetteeccttoorrss ffoorr bbuuggss tthhaatt ddeeppeenndd oonn pprrooggrraammmmiinngg ssttyyllee,, PPMMDD iinncclluuddeess ssuuppppoorrtt ffoorr sseelleeccttiinngg wwhhiicchh ddeetteeccttoorrss oorr ggrroouuppss ooff ddeetteeccttoorrss sshhoouulldd bbee rruunn.. 10
  • 11. “PMD”, How is it useful? f PMD scans Java source code and looks foorr ppootteennttiiaall pprroobblleemmss lliikkee:: PPoossssiibbllee bbuuggss –– eemmppttyy ttrryy//ccaattcchh//ffiinnaallllyy//sswwiittcchh ssttaatteemmeennttss.. DDeeaadd ccooddee –– uunnuusseedd llooccaall vvaarriiaabblleess,, ppaarraammeetteerrss aanndd pprriivvaattee mmeetthhooddss.. SSuubbooppttiimmaall ccooddee –– wwaasstteeffuull SSttrriinngg//SSttrriinnggBBuuffffeerr uussaaggee.. OOvveerrccoommpplliiccaatteedd eexxpprreessssiioonnss –– uunnnneecceessssaarryy iiff ssttaatteemmeennttss,, ffoorr llooooppss tthhaatt ccoouulldd bbee wwhhiillee llooooppss.. DDuupplliiccaattee ccooddee –– ccooppiieedd//ppaasstteedd ccooddee mmeeaannss ccooppiieedd//ppaasstteedd bbuuggss..
  • 12. “Bandera” 12 Bandera is a verification ttooooll bbaasseedd oonn mmooddeell cchheecckkiinngg aanndd aabbssttrraaccttiioonn.. IInn ppaarrttiiccuullaarr,, wwiitthh nnoo aannnnoottaattiioonnss BBaannddeerraa vveerriiffiieess tthhee aabbsseennccee ooff ddeeaaddlloocckkss.. BBaannddeerraa iinncclluuddeess ooppttiioonnaall sslliicciinngg aanndd aabbssttrraaccttiioonn pphhaasseess,, ffoolllloowweedd bbyy mmooddeell cchheecckkiinngg TThhee ddeevveellooppeerrss ooff BBaannddeerraa aacckknnoowwlleeddggee oonn tthheeiirr wweebb ppaaggee tthhaatt iitt ccaannnnoott aannaallyyssee JJaavvaa ((ssttaannddaarrdd)) lliibbrraarryy ccaallllss,, aanndd uunnffoorrttuunnaatteellyy tthhee JJaavvaa lliibbrraarryy iiss uusseedd eexxtteennssiivveellyy bbyy aallll ooff tthhee bbeenncchhmmaarrkkss.. TThhiiss ggrreeaattllyy lliimmiittss tthhee uussaabbiilliittyy aanndd aapppplliiccaabbiilliittyy ooff BBaannddeerraa..
  • 13. “Bandera”, How is it useful? o It is a tool for model checking JJaavvaa ssoouurrccee ccooddee.. o IItt uusseess aa ccoommppoonneenntt bbaasseedd aarrcchhiitteeccttuurree ffoorr mmooddeell eexxttrraaccttiioonn ddeessiiggnn ttoo mmaaxxiimmiizzee ssccaabbiilliittyy ,, fflleexxiibbiilliittyy aanndd eexxtteennssiibbiilliittyy.. o TThhee ccuurrrreenntt ccaann hhaannddllee aa rreeaalliissttiicc ,, aallbbiieett lliimmiitteedd ,, ccllaassss ooff JJaavvaa pprrooggrraammss.. o BByy pprroovviiddiinngg aauuttoommaatteedd ssuuppppoorrtt ffoorr eexxttrraaccttiinngg ccoommppaacctt ffiinniittee ssttaattee mmooddeellss ooff ssoouurrccee,,ttoooollss lliikkee BBaannddeerraa lloowweerr tthhee bbaarrrriieerrss ttoo aappppllyyiinngg mmooddeell cchheecckkiinngg ttoo ssooffttwwaarree..
  • 14. “ESC2/Java” 14 The ESC2/Java[10], the Extended SSttaattiicc CChheecckkiinngg ssyysstteemm ffoorr JJaavvaa,, bbaasseedd oonn tthheeoorreemm pprroovviinngg,, ppeerrffoorrmmss ffoorrmmaall vveerriiffiiccaattiioonn ooff pprrooppeerrttiieess ooff JJaavvaa ssoouurrccee ccooddee.. EESSCC22//JJaavvaa uusseess aa tthheeoorreemm pprroovveerr ttoo vveerriiffyy tthhaatt tthhee pprrooggrraamm mmaattcchheess tthhee ssppeecciiffiiccaattiioonnss.. EESSCC22//JJaavvaa iiss ddeessiiggnneedd ssoo tthhaatt iitt ccaann pprroodduuccee ssoommee uusseeffuull oouuttppuutt eevveenn wwiitthhoouutt aannyy ssppeecciiffiiccaattiioonnss.. EESSCC//JJaavvaa llooookkss ffoorr eerrrroorrss ssuucchh aass nnuullll ppooiinntteerr ddeerreeffeerreenncceess,, aarrrraayy oouutt-ooff-bboouunnddss eerrrroorrss,, aanndd ssoo oonn..
  • 15. “ESC/Java” , How is it useful? The Extended SSttaattiicc CChheecckkeerr ffoorr JJaavvaa vveerrssiioonn ((EESSCC//JJaavvaa)) iiss aa pprrooggrraammmmiinngg ttooooll tthhaatt aatttteemmppttss ttoo ffiinndd ccoommmmoonn rruunn-ttiimmee eerrrroorrss iinn JJMMLL-aannnnoottaatteedd JJaavvaa pprrooggrraammss bbyy ssttaattiicc aannaallyyssiiss ooff tthhee pprrooggrraamm ccooddee aanndd iittss ffoorrmmaall aannnnoottaattiioonnss.. UUsseerr’’ss ccaann ccoonnttrrooll tthhee aammoouunntt aanndd kkiinnddss ooff cchheecckkiinngg tthhaatt EESSCC//JJaavvaa22 ppeerrffoorrmmss bbyy aannnnoottaattiinngg tthheeiirr pprrooggrraammss wwiitthh ssppeecciiaallllyy ffoorrmmaatttteedd ccoommmmeennttss ccaalllleedd pprraaggmmaass..
  • 16. Taxonomy Of Bugs 16 These classifications are oouurr oowwnn,, nnoott tthhee oonneess uusseedd iinn tthhee lliitteerraattuurree ffoorr aannyy ooff tthheessee ttoooollss.. WWiitthh tthhiiss iinn mmiinndd,, nnoottiiccee tthhaatt tthhee llaarrggeesstt oovveerrllaapp iiss bbeettwweeeenn FFiinnddBBuuggss aanndd PPMMDD,,wwhhiicchh sshhaarree 66 ccaatteeggoorriieess iinn ccoommmmoonn.. TThhee ““GGeenneerraall”” ccaatteeggoorryy iiss aa ccaattcchh-aallll ffoorr cchheecckkss tthhaatt ddoo nnoott ffiitt iinn tthhee ootthheerr ccaatteeggoorriieess,, ssoo aallll ttoooollss ffiinndd ssoommeetthhiinngg iinn tthhaatt ccaatteeggoorryy.. AAllll ooff tthhee ttoooollss aallssoo llooookk ffoorr ccoonnccuurrrreennccyy eerrrroorrss.. OOvveerraallll,, tthheerree aarree mmaannyy ccoommmmoonn ccaatteeggoorriieess aammoonngg tthhee ttoooollss aanndd mmaannyy ccaatteeggoorriieess oonn wwhhiicchh tthhee ttoooollss ddiiffffeerr..
  • 17. ANALYSIS Overlapping Bug Categories f Clearly the tools generate faarr ttoooo mmaannyy wwaarrnniinnggss ttoo rreevviieeww aallll ooff tthheemm mmaannuuaallllyy.. IInn tthhiiss ppaarrtt,, wwee eexxaammiinnee tthhee eeffffeeccttiivveenneessss ooff tthhee ttoooollss oonn tthhrreeee cchheecckkiinngg ttaasskkss tthhaatt sseevveerraall ooff tthhee ttoooollss sshhaarree iinn ccoommmmoonn:: ccoonnccuurrrreennccyy,, nnuullll ddeerreeffeerreennccee,, aanndd aarrrraayy bboouunnddss eerrrroorrss.. EEvveenn ffoorr tthhee ssaammee ttaasskk wwee ffoouunndd aa wwiiddee vvaarriiaattiioonn iinn tthhee wwaarrnniinnggss rreeppoorrtteedd bbyy ddiiffffeerreenntt ttoooollss.. EEvveenn aafftteerr rreessttrriiccttiinngg oouurrsseellvveess ttoo tthheessee tthhrreeee ccaatteeggoorriieess,, tthheerree iiss ssttiillll aa llaarrggee nnuummbbeerr ooff wwaarrnniinnggss,, aanndd ssoo oouurr mmaannuuaall eexxaammiinnaattiioonn iiss lliimmiitteedd ttoo sseevveerraall ddoozzeenn wwaarrnniinnggss.. 17
  • 18. Concurrency Errors All of the tools check for at least oonnee kkiinndd ooff ccoonnccuurrrreennccyy eerrrroorr.. EESSCC22//JJaavvaa iinncclluuddeess ssuuppppoorrtt ffoorr aauuttoommaattiiccaallllyy cchheecckkiinngg ffoorr rraaccee ccoonnddiittiioonnss aanndd ppootteennttiiaall ddeeaaddlloocckkss.. PPMMDD iinncclluuddeess cchheecckkss ffoorr ssoommee ccoommmmoonn bbuugg ppaatttteerrnnss,, ssuucchh aass tthhee wweellll-kknnoowwnn ddoouubbllee-cchheecckkeedd lloocckkiinngg bbuugg iinn JJaavvaa.. IInn ccoonnttrraasstt,, bbootthh FFiinnddBBuuggss aanndd JJLLiinntt ddoo rreeppoorrtt wwaarrnniinnggss.. FFiinnddBBuuggss aallssoo wwaarrnnss aabboouutt tthhee pprreesseennccee ooff ootthheerr ccoonnccuurrrreennccyy bbuugg ppaatttteerrnnss,, ssuucchh aass nnoott ppuuttttiinngg aa mmoonniittoorr wwaaiitt(()) ccaallll iinn aa wwhhiillee lloooopp.. 18
  • 19. Null Dereferences 19 Surprisingly, there is not a lot of overlap between the warnings reported bbyy tthhee vvaarriioouuss ttoooollss.. JJLLiinntt ffiinnddss mmaannyy ppootteennttiiaall nnuullll ddeerreeffeerreenncceess.. IInn oorrddeerr ttoo rreedduuccee tthhee nnuummbbeerr ooff wwaarrnniinnggss,, JJLLiinntt ttrriieess ttoo oonnllyy iiddeennttiiffyy iinnccoonnssiisstteenntt aassssuummppttiioonnss aabboouutt nnuullll.. FFoorr eexxaammppllee,, JJlliinntt wwaarrnnss iiff aann oobbjjeecctt iiss ssoommeettiimmeess ccoommppaarreedd aaggaaiinnsstt nnuullll bbeeffoorree iitt iiss ddeerreeffeerreenncceedd aanndd ssoommeettiimmeess nnoott.. EESSCC22//JJaavvaa rreeppoorrttss tthhee mmoosstt nnuullll ppooiinntteerr ddeerreeffeerreenncceess bbeeccaauussee iitt oofftteenn aassssuummeess oobbjjeeccttss mmiigghhtt bbee nnuullll,, ssiinnccee wwee ddiidd nnoott aadddd aannyy aannnnoottaattiioonnss ttoo tthhee ccoonnttrraarryy.. IInntteerreessttiinnggllyy,, FFiinnddBBuuggss ddiissccoovveerrss aa vveerryy ssmmaallll sseett ooff ppootteennttiiaall nnuullll ddeerreeffeerreenncceess ccoommppaarreedd ttoo bbootthh EESSCC22//JJaavvaa aanndd JJLLiinntt.. PPMMDD ddooeess nnoott cchheecckk ffoorr nnuullll ppooiinntteerr ddeerreeffeerreenncceess,, bbuutt iitt ddooeess wwaarrnn aabboouutt sseettttiinngg cceerrttaaiinn oobbjjeeccttss ttoo nnuullll..
  • 20. Array Bound Errors 20 W In Java, indexing outside the bounds of an array results is a run-time exception. Whhiillee aa bboouunndd eerrrroorr iinn JJaavvaa mmaayy nnoott bbee tthhee ccaattaassttrroopphhiicc eerrrroorr tthhaatt iitt ccaann bbee ffoorr CC aanndd CC++++ ((wwhheerree bboouunnddss eerrrroorrss oovveerr--wwrriittee uunneexxppeecctteedd ppaarrttss ooff mmeemmoorryy)),, tthheeyy ssttiillll iinnddiiccaattee aa bbuugg iinn tthhee pprrooggrraamm.. FFoorr eexxaammppllee,, ccooddee ssuucchh aass tthhiiss aappppeeaarreedd iinn JJAAVVAA bbeenncchhmmaarrkkss:: ppuubblliicc ccllaassss FFoooo {{ ssttaattiicc IInntteeggeerr[[]] aarryy == nneeww IInntteeggeerr[[22]];; ppuubblliicc ssttaattiicc vvooiidd aassssiiggnn(()) {{ OObbjjeecctt oo00 == aarryy[[aarryy..lleennggtthh]];; OObbjjeecctt oo11 == aarryy[[aarryy..lleennggtthh--11]];;}}}} IInn tthhiiss ccaassee,, JJLLiinntt ssiiggnnaallss aa wwaarrnniinngg tthhaatt tthhee aarrrraayy iinnddeexx mmiigghhtt bbee oouutt ooff bboouunnddss ffoorr tthhee aacccceessss ttoooo11((bbeeccaauussee iitt tthhiinnkkss tthhee lleennggtthh ooff tthhee aarrrraayy mmiigghhtt bbee 00)),, bbuutt cclleeaarrllyy tthhaatt iiss nnoott ppoossssiibbllee hheerree..
  • 21. Conclusion We have examined the results of applying ffiivvee bbuugg--ffiinnddiinngg ttoooollss ttoo aa vvaarriieettyy ooff JJaavvaa pprrooggrraammss.. AAlltthhoouugghh tthheerree iiss ssoommee oovveerrllaapp bbeettwweeeenn tthhee kkiinnddss ooff bbuuggss ffoouunndd bbyy tthhee ttoooollss,, mmoossttllyy tthheeiirr wwaarrnniinnggss aarree ddiissttiinncctt..SSuucchh aa mmeecchhaanniissmm sseeeemmss nneecceessssaarryy ttoo hheellpp rreedduuccee tthhee sshheeeerr oouuttppuutt ooff tthhee ttoooollss..IInn tthhiiss pprreesseennttaattiioonn wwee hhaavvee ffooccuusseedd oonn tthhee bbeenneeffiittss ooff ddiiffffeerreenntt ttoooollss.. AAnn iinntteerreessttiinngg aarreeaa ooff ffuuttuurree wwoorrkk iiss ttoo ggaatthheerr eexxtteennssiivvee iinnffoorrmmaattiioonn aabboouutt tthhee aaccttuuaall ffaauullttss iinn pprrooggrraammss,, wwhhiicchh wwoouulldd eennaabbllee uuss ttoo pprreecciisseellyy iiddeennttiiffyy ffaallssee ppoossiittiivveess aanndd ffaallssee nneeggaattiivveess.. TThhiiss iinnffoorrmmaattiioonn ccoouulldd bbee uusseedd ttoo ddeetteerrmmiinnee hhooww aaccccuurraatteellyy eeaacchh ttooooll pprreeddiiccttss ffaauullttss iinn oouurr bbeenncchhmmaarrkkss..FFiinnaallllyy,, rreeccaallll tthhaatt aallll ooff tthhee ttoooollss wwee uusseedd aarree iinn ssoommee wwaayyss aassoouunndd.. 21