BugBane-theCedarDebuggerRussAtkinsonMay27,19833:44pmBugBaneisthestandarddebuggingsupportintheCedarenvironment.Itisorganizedasacollectionoffacilities,whichincludeasimpleMesaexpressioninterpreter,withsupportforbreakpointsanduncaughtsignals.BugBaneisusuallycalledfromaWorkArea.WhentheinputfocusisinaWorkAreavieweryoucantypeMesaexpressions(preceededby"_").Eachexpressionisthenevaluatedandtheresultsprintedtothetypescript.Eachvalueisassignedtoaninterpretervariableforlateruse.I.TheMesasubsetThesubsetofMesaexpressionsinterpretedbyBugBaneisroughlydescribedbythefollowinglistofconstructs.BugBaneattemptstoperformareasonableamountofcoerciontogetvaluestoagreewiththeirtargets.Thiscoercionisusuallymorethanthecompiledlangaugeprovides.1,1.2,"abc",'A,TRUE,$atom--fixed,float,rope,char,bool,atomconstants&x,foo,FooImpl--simplevariables,accordingtosearchrulesbelowX.Y--Xisarecord,reftoarecord,pointertoarecord,aglobalframeX[Y]--Xisasequenceorarray,reforpointertoasequenceorarrayProc[X,...]--ProcisaproceduretakinggivenargumentsType[X,...]--arecordorarrayconstructor(Typemaybeimplicit)NEW[T_expr]--onlyinthelocalworldXopY--foropin{+,-,*,/,MOD}op[X,...]--foropin{MIN,MAX,ALL,LIST,CONS}X_Y--XandYareexpressions,[]_YispermittedII.ActionsandmultipleprocessesActionsInBugBane,anactionrepresentstheoccurenceofanuncaughtsignal(orerror)orabreakpoint.Anaddressfaultistreatedasanuncaughtsignal,andisthereforealsoanaction.Whenanactionoccurs,theassociatedprocessisstopped.Otherprocessescancontinue,subjecttotheusualconstraints(e.g.monitorlocks).Theoccurenceofanewactionusuallyspawns(creates)anewworkareaorreusesanoldworkarea.Whenanactionisassociatedwithaworkareatheexpressionexecutedinthatworkareaareinterpretedwithrespecttothecallstackforthataction.Settingofbreakpoints,stackdisplay,proceedingandabortingareallperformedwithrespecttothataction.MultipleprocessespîZï^8î#Ìî%Pî)î/„qî%3ïY3î(zî"¸ïUÙî%æî($î+jî.xrî ìïQ¥sîïQ¥îhïQ¥îtîÖîuî!1î&@î'òî*Tî.p î7`î8Ûî:Jî@—îBHîCu î ìïOþî ì îîîCîiîÙî!…î%u î,u î3ãî7Eî<˜î? îFØî ìïNWîëî ìïKÐîÊî7îëîäîMîxî"Zî&•î*¯î-î0¼î4]î5Êî7zî8¦î<‡î?åîDKîGî ìïJ)î õî˜ îÎ îÏî Äî$úî(f î/î0}î3œî9ÀîÊîCîGàî ìïH‚î K îsîæî�îüî!uî##î% î+ãî1î3Wî6|rî ìïDPî 2î�î)sî ìï@òî æî8îîß î> î%rî'�î-�î/î4Uî:¢î<Àî?AîEvîGÖî ìï?K îWîDîåî¥î$ î%H î,'î1Dî3 î8£î:bî<¼î@úîBºîFtî ìï=£î 3îtî�îî~î!1î$Äî'êî*Jî0Hî6î ®ï;î:îÏîtîQï;î ï;sî|ï;îYï;qîï;î|ï;î yî$:î'¹î+î.î1Ïî5;sî ®ï8—îNîqîÕï8—îNï8—îLî| î#nî)�î+5î/dî2¬tî ®ï6sî ‚ï6tî Ùï6qîï6î�ï6î�îî{î°î+î=îâîî"’î')î(Íî*î.~î/²î3¾tî ®ï3Šsî ‚ï3Štî åï3Šsî¸ï3ŠqîŸï3Šîï3Šîî˜îî9îØî‘î }î"�î$Hî(Þî*ƒî+¸î1Wî3î ®ï1sîeï1tîÈï1sîœï1îxï1qîfï1îßï1îÝîî„î¹î äî%"î(®î ®ï.}sî†ï.}tîéï.}sî½ï.}î™ï.}qî‡ï.}îï.}îþî3îVîî¢ î&¦î*{î-kî/;tî ®ï+ösîÓï+ötî6ï+ösîYï+öîæï+öqîoï+öîèï+öîæîâî‡îÔî"tî ®ï)pqî ëï)pîœï)ptîÐï)psqî(ï)pî¡ï)pîŸîÇî¬îRî?î•î"tî¯ï)pî Áï)pqî"ƒï)pî ®ï&ésîï&étîqï&ésîEï&éî"ï&éqîï&éî‰ï&éî‡î¯î”î:tîêï&éîûï&ésîNï&étî*ï&éî<ï&ésîãï&étî Àï&éî!“ï&ésî#ï&étî#âï&éî$›ï&ésî&]ï&étî'9ï&éî(ï&éqî*iï&étî ®ï$csî ëï$ctîxï$csqîTï$cîÎï$cîËîMîñîsîÆ î"3î#”î%î&ƒî'îrî ìï 1î ÑîÏîöîQuî ìïÏsî ìïÿî Òîî#îR îëî!aî'äî)´î+»î1Ðî5Òî8&î<(î>î?B îG<î ìïWîæî1î¬îZîîî"&î&yî)@î*»î0³î3�î5�î:¢î>Êî@ÊîDòî ìï°î k î÷îëîwî¿î#Öî)ôî,Ÿî2½î7…î9Tî;Óî?’ îFŒî ìï î-î ìï‚î àîhî=î‚î‹î¿î"�î'fî,ûî.Aî1Jî4ãî7÷î9Öî>î@!îB¦îF>î ìïÛîîíîîj îÓîêî î#Šî&î(Û î/�î5Iî6óî9¾î=7î@,îB| î ìï3î =îîÿî•îVîþîrî"vî'Öî,´î.£ î6¦î:Oî?� îFØî ìï Œîeî¹î©îmîˆî"0î#Þî&­uî ìï .î…ÿ*TVm$(AprocessstackmayonlybeexaminedbyBugBanewhentheassociatedprocessisstopped.Anyotherapproachishighlyunsafe.TheDebugToolcanbeusedtostopprocesses.Anotherwaytostopaprocessistosetabreakpointincodethatitexecutes.OnedifficultywithstoppingprocessesbyeithermethodisthattheprocessmaybeholdingaresourcenecessaryforBugBane.Sincenoautomaticmethodfordetermingtheseresourcesisavailable,thedecisionastowhenandwheretoplantthebreakpointislefttotheuser(sigh).Proceedingabreakpointwillcontinuewithprogramexecution.Proceedinganuncaughtsignalwillattempttoresumethesignal(althoughthereisnoprovisionforresumingwitharguments).III.NamelookupNamelookupinBugBanediffersfromnamelookupinMesa,primarilybecausethefacilitiesavailabletothecompilerarenotavailabletotheruntime,butalsobecausetherearemoreplacestolookatruntime.Namesarefoundonlyiftheyaretherightcaseandinthecurrent"context."Acontextislikeasearchpath,andissearchedinthefollowingorder:DebuggertablelookupThedebuggernametablecontainsanametovalueassociationforidentifiers.Asidefromafewspecialcases(likeTRUE,FALSE,andsomebuilt-intypes),allnamesinthistablestartwith"&".Thereisaseparatedebuggertable,andhenceaseparatenamespace,foreachworkarea.Stacklookup(includingglobalframes)Astackexistsforeveryaction.Whenanameislookedupfromaworkareaassociatedwithanactionthelocalframes(andassociatedglobalframes)aresearched(last-created-first-found)fornamesuptosomereasonabledepth(currently8).InterfacenamesForlookupofXinexpressionsoftheformX.Y,BugBanewillattempttotreatXasaninterfacerecordandYasaselector.Thisfacilityisquitenew,quiteslow,andsomewhatfrail.Theusershouldtrytouseimplementationmodulenameswhenthisfacilitydoesnotwork.GlobalframetableTheglobalframetableissearchedforglobalframenamesonlyinlast-loaded-first-foundorder.Variablesinthoseglobalframeswillnotbefoundwithoutqualification.Theusershouldnotethatmultipleinstancesofglobalframesarenotsupported.DefaultglobalframeThedefaultglobalframeissetwheneveroneevaluatestheexpressionthatisthesimpleglobalframename.Variablesinthatglobalframewillbefoundinthissearch.Thereisaseparatedefaultglobalframeforeachworkarea.IV.OctalcommandsThefollowingcommandsareintendedforusebyexperiencedusers.Theyaremadeavailableasexpressions,sincetheyareapplicabletocontextsinheritedfromtheinterpreter(toallowforremotedebugging).&ar[ptr,len]AsciiRead-DisplaystheAsciicharactersstartingataddressptrforlencharacters.Valuesof2sî ìïb)î |îTîÊîÒîïîäî"'î$&î*î-¾î0" î6’î;iî<ØîBéîEðî ìï`‚î×î.îTîbî&î$Zî&Òî(®î+Öî-qî0V î7î’î@“îDƒî ìï]3î jîJî»î¡î¶î¹îÖî!î&œî,Âî/î5ìî9³î;ÌîB4îGRî ìï[Œîzîîîo î!ƒî#äî)=î*ëî,›î0Qî3 î7"î8Ñî<[î>¼ îE­îGî ìïYäî šî úîóî ìïWb î>îž îÅî¦î"‚î%Óî+— î3 î:gî<�îBÂîFäî ìïU»îøî§îoîÏîºî!ðî%yî&äî(ëî.òî10î7-î:H rî ìïQ�î pî>sî ìïN8îîÑî�î}îÝî"Uî&%î*Þî,�î0¯î6½î;ðî>` îCÔî ìïL�î ÊîZîEîÉînîYî!7î#Çî)†î,7î/4î4†î8?î:Ãî>†îBÎîD­îGöî ìïJéî)îÞîGîiî˜î î#3î%›î(î+wî.zî1Gî3 î5~î:] îA˜îC:îH#î ìïIBî —î Áîûîyî1îœîBî ðî#Pî)buî ìïEêî î‡sî ®ïCî îÄîŸî"î" î#äî'¿î)ˆî-L î4Lî6¤ î>-îB(îEªîFîî ®ïAxîNîåtî/ïAxîèïAxsîZïAxtî[ïAxîïAxsîùïAxî ûïAxî#×î'Žî,�î1(î3=î7¥î9xî<>î?ËîBÿîF?î ®ï?Ðî¯îîEî�î¦î"gî%î)î*?î/˜î3Wî7eî9¢î<Óî@Puî ìï…î@%îAæîCéî ®ï.•îîêî‘îYîžî¯î!ãî&…î( î+¯î/î2´î6Lî9î?¤îC£îF–î ®ï,íî)îQîîu î!Sî&Sî*—î.Lî0íî5tî8¤î;uî ìï)–îfîFsî ®ï&Ëî³îî&î»îSî#&î%�î)àî.î2tî5»î7•îEƒî ®ï%#î²î\î÷îî �î#5î%¦î'“î+�î0¥ î9hî<<î?2îCªîFÁî ®ï#|î'îùî²îÕî"Oî$£î' uî ìï $îàî÷sî ®ïYîrîîîùîQî[î%|î(î-èî04 î6Ùî9”î:ìî=8îA‰îE˜î ®ï²î*î#îÂî�î•î#|î&î'úî+øî-—î0)î5 î9î:oî;Šî@ÓîElî ®ï î¤îáîî�rî ìïßî Vîñsî ®ï‡îœîÅîÁî,î$ÿî'Rî)Þî+ñ î3©î8/î;Îî>9îBîGáî ®ïà î=î«î¶î î#�î%6î*Šî0bî3Äî6 î<éî? îB¯îDèî ®ï9 î ®ï ·uî Áï ·îqï ·sîöï ·îYï ·îoï 5îìî—îŸî:î¤î#! î)šî.�î02qî5(ï 5î5Øï 5sî7\ï 5î7Õï 5qî9¤ï 5î:ï 5sî;ðï 5î<‹ï 5 îCOîGÖvî)Èïöÿ 9TVm$6ptrthataresmallerthan64KareinterpretedasbeingMDSpointers.&ars[ptr,len]AsciiReadShort-Like&ar,butdoesnotinterpretvaluesofptrthataresmallerthan64KasMDSpointers.&clob[gf,pc]CLearOctalBreak-Clearsthebreakpointsetatthenumericallyspecifiedglobalframeandprogramcounter.&fm[pattern]FindMatching-Ifthepattern(asaROPEliteral)doesnotcontainaperiod,&fmfindsandprintsthenamesoftheglobalframeswhosenamesmatchthepattern(casedoesnotmatter).Ifthepatterndoescontainaperiod,&fmfindsthematchingcomponentsofmatchingglobalframes.&lob[]ListOctalBreaks-Listallofthecurrentbreakpointsthatweresetby&sob.&ofc[gf,pc,b0,b1,b2,b3,...,b9]OctalFindCode-Startingatthespecifiedglobalframeandprogramcounter,findtheprogramcounterforthegivencodebytes.&or[ptr,len_4,width_16,base_8]OctalRead-Displaysthecontentsofmemoryinthegivenbasestartingatptrforthenumberofunitsgivenbylen.Thevalueofwidthmustbein{1,2,4,8,16,32}.Thevalueofbasemustbein[2..36].Valuesofptrthataresmallerthan64KareinterpretedasbeingMDSpointers.&orc[gf,pc,len]OctalReadCode-Displaysthecodebytes(inoctal,unfortunately),startingatthegivenglobalframeandprogramcounterforlenbytes.&ors[ptr,len]OctalReadShort-Like&or,butdoesnotinterpretvaluesofptrthataresmallerthan64KasMDSpointers.&ow[ptr,word,len]OctalWrite-Writesthegiven16-bitwordintothegivenaddressforthenumberofwordsgivenbylen.Valuesofptrthataresmallerthan64KareinterpretedasbeingMDSpointers.&ows[ptr,word,len]OctalWriteShort-Like&ow,butdoesnotinterpretvaluesofptrthataresmallerthan64KasMDSpointers.&pgf[gf]PrintGlobalFrame-Printsthecomponentsofthespecifiedglobalframe.&plf[lf]PrintLocalFrame-Printsthecomponentsofthespecifiedlocalframe.&sob[gf,pc]SetOctalBreak-Setsabreakpointatthespeicifedglobalframeandprogramcounter.&tgf[gf]3qîoïb)sî˜ïb)îïb)îgîºî‚î¨î!®î$ î+î,Âî0Œî4Mî ®ï_£uî Áï_£îqï_£sî…ï_£îèï_£îoï]îçîŒîRîUî‹î!ªî$1î'gî)âî/Žî3Áqî5€ï]î60ï]sî7¯ï]î8ï]î:ƒî<ÜîAªîDÕîGáîoï[vî/î ®ïXðuî ÁïXðîgïXðsî5ïXðî™ïXðîoïVjîÅî�î¡î¼î!î#� î*žî,Ùî.�î1 î8©î>ƒîBÃîFØîoïTÃîþî ®ïR=uî ÁïR=î/ïR=sîCïR=î¦ïR=îoïO¸îÝîî'î»î+î"ûî%4î&oî*Úî/Pî2’î5î:î;Cî@îCTîFØîoïNîkîÛî.î÷îfî"™î'$î+aî/µî3éî6Xî;'î>žîAÞîDcîoïLiîîuîGî‰î {î!·î&|î)Êî-Oî/Áî5Ñ î=�î?[îElîoïJÂî ®ïH<uî ÁïH<î$ïH<sî�ïH<îóïH<îoïE¶î1îÛîVîSîî î!¾î$î(ç î0\î3*î6{î8˜î:”î ®ïC0uî ÁïC0î|ïC0sî�ïC0îóïC0îoï@ªîîSîëîØîóî!zî#Éî)sî-…î1jî4î9�î>ÕîA²îDîoï?îpî­î îÁî î ®ï<}uî Áï<}î|ï<}sîï<}îdï<}îúîNîÛîhîIîÖîî".î#»îoï9øîî»î»îKî¬î%î&×î,Fî-öî0Wqî4 ï9øî4½ï9øsî7ï9øî7—ï9øî;þqî=˜ï9øî>Hï9øsî?Ãï9øî@<ï9øîBîDcîoï8Pî1î¡î^qîbï8PîÅï8Psîï8Pî�ï8Pî pî$"qî%ãï8Pî&Ëï8Psî)˜ï8Pî*Âï8Pî- î/î0¸î:Æî=§îAYqîCï8PîCÊï8PsîF'ï8PîGQï8Pîoï6©î`îîôîpqî)ï6©îÙï6©sî Rï6©î Àï6©î# î%sî*;î-aî0gî2º î9Íî;{î?FîCî ®ï4#uî Áï4#î|ï4#sî¦ï4#î ï4# îoï1�îî¦îFî;î Àî#î&Tî)ßî+ýî/žî8ûî=Üî?kîAÁîElîoï/öîfîî¬î ¬qî"êï/öî#Mï/ösî%*ï/öî%ñï/öî ®ï-puî Áï-pî|ï-psî�ï-pîóï-pîoï*êîî»î}î|î­î!Þî$aî'’î* î/°î3àqî5šï*êî6Jï*êsî7Äï*êî83ï*êî:”î<éîA²îDÚîGáîoï)Cî/î ®ï&½uî Áï&½î|ï&½sîdï&½îÇï&½ îoï$7î=îAîbîëînî#Fî'aî+ î. î0Œî4dî9qî;Òî>UîC¥îE‚îoï"�î#qîï"�î‚ï"�sîÜï"�î<ï"�î·qîpï"�î ï"�sî ™ï"�î!ï"�î#gî%»î*‚î-©î0®î3 î:î;Âî?�îCMî ®ï uî Áï î|ï sîóï îVï îoï…î)îîêî÷î7î"ïî%€î(Àî+Eî0ûî59qî7ï…î7²ï…sî9:ï…î9©ï…î<î>|îCSîF‰îoïÝîîÝî ®ïWuî ÁïWîqïWsî�ïWîóïWîoïÒîâî~îâîàî ×î#7 î*ãî,œî.ûî4·î8Úî ®ïLuî ÁïLîqïLsîCïLî¦ïLîoïÆîâî¬îîî î"e î*î+Êî.*î3æî7,î ®ï@uî Áï@îPï@sî¼ï@îï@îoï »îÏîyîoîmîPîz î%kî'î)cî/î3Aî78î9ïî?~î ®ï 5uî Áï 5î:ï 5sîYï 5î¼ï 5vî)Èï«TVm$fTrustGlobalFrame-"Trusts"thegivennumberasaglobalframe.Thisallowsexaminingorsettingnamedcomponents,asin&tgf[gf].name.&tlf[lf]TrustLocalFrame-"Trusts"thegivennumberasalocalframe.Thisallowsexaminingorsettingnamedcomponents,asin&tgf[lf].name.V.ShortfallsPerformanceisonlymoderatelyacceptable.AlthoughthereissubstantialcachingofresultsinAMTypesandinBugBane,thefirsttimethroughformanyexpressionsmaytakealongtime,particularlyifthesymbolsarenotavailableonyourlocaldisk.Patienceistheonlycurrentrecommendation,althoughwearecertainlyconcernedaboutperformance.Onename-oneglobalframe.Recompilingandreloadingamodulewillworkonlywithverysimplesystems.BugBaneonlyprovidesalinearsearchspaceforglobalframenames(lastloaded,firstfound).Thereforeyoucanonlyfindoneinstanceofaglobalframewithagivenname.Peculiarnameinterpretation.BugBanehasbothbetterandworseinterpretationofnamesthanthecompilerorCoPilot.Unlikethecompiler,BugBaneknowsnothingaboutOPEN,somanynamesthatcanbeleftunqualifiedincompiledprogramsmustbefullyqualifiedforinterpretedexpressions.BugBanewillsearchfornamesbothinthecurrentcallstackandintheglobalframetable.Opaquetypesarenotfullysupported.Themappingbetweenopaqueandconcretetypesisnotsuppliedbytheruntimesystem.Thisleadstotypeclasheswhenyoutrytohandavalueofopaquetypetoaprocedurethatexpectsaconcretetype,andviceversa.Thereisonlyoneautomaticcoercionpracticed,whichiswhenaREFopaqueispassedtoaroutinethatexpectsaREFconcrete.Inthisonecase,theobjectcarriestheconcretetype,andthecoercionismadeautomatically.Inothercases,LOOPHOLEshouldbeusedasawork-around.Somesafeexpressionsarenotyetsupported.SELECTexpressionsarenotsupported.Veryfewexpressionsinvolvingtypesaresupported,andtheremayalwaysbeafewshortfallshere.Statementsarenotsupported,socatchphrasesinexpressionswillnotwork.Variantrecordconstructorsarelimitedtopositionalnotation(keywordnotationisnotsupported).LISTconstructorsareonlypartiallyimplemented,sincetheyignorethezoneoption,andonlyworkforLISTOFREFANY.Objectnotationissupportedforprocedureinvocation,butmaynotdoallthatthecompilerdoes.Inparticular,NILasthefirstargumentinobjectnotationwillnotwork.Selectionfrominterfacesisonlypartiallyimplemented.ThemostlikelyresultofnothavingtheappropriatemoduleloadedornothavingtheinterfaceexportedtothetoplevelisthatNILwillbereturned.ItisalsotheresultforINLINEprocedures.TherearenoplansforBugBanetointerpretmorethanexpressions.Sometypeconstructorsarenotsupported.4sîoïb)îîºî î î"±î%î(Êî-øî/¨î0Ôî4ùî9Ðî<ìîAîGËîoï`‚îÕî[ î `î"î#¼qî&Ëï`‚î'{ï`‚sî'êï`‚î(Mï`‚î ®ï]÷uî Áï]÷î:ï]÷sî ï]÷îoï]÷îoï[mî6îîŸîºî"fî$ãî(´î-þî/Éî1î4sî9î<¶îAîGËîoïYÅîÕî[ î `î"î#¼qî&ËïYÅî'.ïYÅsî'�ïYÅî(ïYÅrî ìïUŽî · uî ìïR& îùîpîs îx sî ìïOPîîšî îÜî àî"œî&ïî( î/î1Èî3yî9°î<î>îîBîGRî ìïM¨î º îúîîýî*îGî"È î*î+yî-Ûî3+î5‚î7úî=¸î?ÁîCîFIî ìïLîfîÑî1îKîî%ðî+­î-Ôî0'î5Âî<[î@< uî ìïHžî ñî™îŒî,îCsî ìïEÇ î îËîäîî!î#Íî'Qî*qî-“î0¨î5î:ýî@ßîDî ìïD î îíî#îÔî î+î!î%\î(Qî-!î/õî5Nî;ªî>]î@äîCùîFãî ìïByî9îòîî?î5îPîzî".uî ìï?îYîsî ìï%îB]îE�îG/î ìï7Iî¶î@î³îkîîxî›î#’uî ìï3æîîŠîéî]îv sî ìï1î ÊîŠîþîãî î%î(¹î**î,¤î2:î4;î6 î;ÜîA>îD]îGàî ìï/hî î«îiî*î[îîšî Íî$€î&Bî++î.Dî/üî1/î7»î:“î?pî@¤îF'î ìï-Áî «î‹îÿîî|î�îQî%¯î+; î1…î5šî7î:Êtî;üï-Áî<Ðï-Ásî>²ï-Áî?nï-ÁîCšîE î ìï,î ¡î Òî¡îvîRtî‚ï,îVï,sî8ï,îÒï,î#›î%qî(î*Ìî.î0î4Ÿî9î;fî@çîDUîGî ìï*rîpîÜîœ îêîºî#Ytî'$ï*rî'Ýï*rsî-Üï*rî.`ï*rî2Xî4Iî7…î93î:\ uî ìï'î Áî™ îÞî=î±îù tî ìï$9sî·ï$9î\ï$9 î îtî î"�î%ôî(« î/ÿî6î9Çî<2 îCîEçî ìï"‘î óîZîNî{î î î! î(î*[î,Ó î3§î5nî9î=óî?¤ îFãî ìï êî aî ìï_îÖî% îÒî&î!Øî#‡ î)Ñî/?î5Rî:Áî<,î>¡ tî ìïÕsî ÜïÕî wïÕ î—îùî!î’ î(Jî+Ëî.èî3:î5¨î8ûî=¼î@‚îC©îG4tî ìï.î ÑîÑî�sîï.î ìï£îrîõîvîîUî$í î,î.žî1·î4Aî6]î8bî;Eî=¹îCŠîGÀî ìïü tîzïüîbïüsîïïüî•ïüî�îýîÕîÿî!­î%Æî+4î-ßî0Tî ìïqîîÎ îAîöîYî% î.Æî1çî5�î9•î=ªî?¬îBkîG/î ìïÊ î{îªîUîHîìî$—î'%î,úî2æî4Ãî7Rî9÷î=lî?tîBïÊîBíïÊsîD ïÊîE�ïÊîGzî ìï#îcîÚîFîîrî=tîzï#îäï#sî"ûï#î#Âï# î ìï ˜î îîAîHîæî$îî®î%Tî(çî, uî ìï 5î Áîº î�îîîb vî)Èïö [TVm${AMTypesdoesnotallowtheconstructionoftypesonthefly,soBugBanedoesnotsupporttypeconstructors.ThismeansthattypeconstructorssuchasPOINTERTOFoocannotbeinterpreted.BugBanedoestreattypesasexpressionswherepossible,sotypeconstructorssuchasFooDefs.FooPointerarelegal(assumingthatthesymbolsareavailabletoBugBane).ThedifferenceisthatwithFooDefs.FooPointersufficientinformationispassedfromthecompilertotheruntimetoallowinterpretationofthetype.Someunsafeconstructsarenotsupported.Inparticular:DESCRIPTORconstructorsandoverlaidrecordconstructors.UNSPECIFIEDandLONGUNSPECIFIEDarediscouraged,sincetheyarebothobsoleteandbuggy(CODE[LONGUNSPECIFIED]willcrashthecompiler,forexample).AlthoughLOOPHOLEissupported,nocheckingforlengthsisprovided,soyoucanreallydoterriblethingsbytypingthewrongthing.Itis,ofcourse,yourmachine.Proceduretypeequivalenceisonlypartiallyimplemented.WhilethisisessentiallyanAMTypesproblem,itdoesimpactBugBaneusers.Proceduretypesmustmatchexactlyinorderforaproceduretobeanargument.Ifyoucan'tgettheinterpretertounderstand,useLOOPHOLE(sigh).Remotedebuggingisabitbuggy.We'reworkingonit.ItisnotpossibletopassROPEorATOMconstantstoremoteprocedures,forexample.LIST,CONS,andNEWdonotworkfortheremoteworld.Contextreportingisunreliable.Thereareseveralpartstothisproblem.1:Thecompilerperformscertainoptimizations,suchascross-jumpingandconstantfolding,thatkeeptheobjectcodefrombeinglinearlyrelatedtothesourcecode.Thisdrawbackwillnotbeovercomeforsometime.2:Thereisalong-standingbuginreportinglocationsinsideofcatchphrases.3:ContextreportinginvolvingINLINEprocedureandcross-jumpedcodeisunreliable.4:Duetoalong-standingbugintheformatoffine-graintables,thesourcepositionofthelaststatementinaprocedureisnotknown.Therefore,whensettingbreakpointsonthelaststatement,makesurethattheselectionpointstothefirstcharacterofthelaststatement.Theabstractmachinehassomeroughspots.Thisisasubsetoftheknowproblems.1:Theevalstackisnotalwaysemptybetweenstatements.Ifthevalueofavariablehasbeenplacedonthestackinonestatement,itmaybeleftonthestackforthenextstatement.Attemptstosetthatvariablemaynotworkforthelatterstatement.2:Itmaynotbepossibletoformtheaddressofavariablethatdoesnotoccupyawholeword.3:Theprogramcounterusedtoreportbreakpointsmaybewrongby1,whichmaycausethepreviousstatementtobereportedasthelocationofthebreakpoint.VI.RecentchangesforCedar4.2Remotedebugging5sî ìïb)î›îîÈîµîX î%jî'gî+?î-Šî0-î2Úî4âî;î>vîA/îFî ìï`‚ îFîIîvî-î% î&»î)Õtî+lï`‚î,ï`‚î0àsî2Íï`‚î3´ï`‚qî5˜ï`‚î63ï`‚sî9îï`‚î:µï`‚î;Ç îC‡î ìï^Úî î8îÂîf î˜î ¦î&5î'ïî*ô î2—î5¾î7aîDîFIî ìï]3îkîBîªîÿî[î#î$Õî,î.ø î5wî6ëî9Âî<æî ìï[Œ îê îtîàîFî ­î# î(Çî*vî,Õî2 î3»î7d î@îA¼îDuî ìïXFî Áî î¥îîw sî ìïU�î  tîïU�îïU�sî$ïU�î¿ïU� î#*î&:î+ßî0‡ tî9ÁïU�î:¦ïU� sîB6ïU�îBÛïU�tîEFïU�îEÿïU�î ìïSæ sî2ïSæî×ïSæî¢ î®î >î#kî%Ûî)5î.µî1‰î5Êtî6CïSæî7ïSæsî9‰ïSætî9ìïSæî=Ú sîEžïSæîF£ïSæî ìïR>î €îàîóî0î ìïOÃtî5ïOÃîîïOÃsîïOÃîrïOÃî¥ î î!Ðî'¶î*î/î0›î6ïî8Ýî;¾î>sîBhîD˜î ìïNîîîEî¤îÝîMî Äî"ˆî$Aî(éî,$uî ìïJÖîxîq îÃî9î<î$ž sî ìïHî%îçît î!î2î!¾î'»î)2î,ƒî1+î7(î;ÃîBrîF'î ìïFvqî ÿïFvîšïFvsî™ïFvîüïFvî6îÚîîî!‘î#/î%î&îî-Òî/Cî1éî5+î7cî9± î@pîB î ìïDÏtî aïDÏî ïDÏsîïDÏî“ïDÏuî ìïA‰îîvîíî!î3sî ìï>Ðî+î´îìîƒî,îÊîqî#æî%Ætî(òï>Ðî)Æï>Ðsî,•ï>Ðî-Pï>Ðtî.‹ï>Ðî/^ï>Ðsî2—ï>Ðî32ï>Ðî8½î:�î?w îG î ìï=)tîAï=)îúï=)sî¼ï=)tî˜ï=)îcï=)sîÇï=)î¤ï=)tî[ï=)îDï=)sî�ï=)îHï=)îˆî!ýî%zî'·î*î.¾uî ìï9ãî-îî‰ sî ìï7*î îîAîÒî:îéîŠî ®ï4¯î îûîÍîÀî"] î+Iî.‘î0U î9Aî<îA•îFÁî ®ï3î î¡îÜîDîÌî!¹î&Îî+�î-Qî/Òî4Cî8©î;äîB;îEîGžî ®ï1aîíî*î½î ®ï.æîàîâîMîw î î Íî"{î(yî.4î26î3ïî7„î ®ï,kîàîîtî ï,kî †ï,ksî$�ï,kî%dï,kî+ î-× î6?î9†î:ò î ®ï)ðîîIîî] îî îî"ºî%7î)Ðî+§ î2î6qî8îî=[îB»îD’îGî ®ï(HîéîœîÌîTîÅî @î%¬ î,kî0%î4� î< î>î@|îC î ®ï&¡îbî[î)î‰î.î"Rî$î&_î)8î/ î0Ùî39î5¹ uî ìï#[î Åîîsîòîzî!esî ìï ¢î îrîœîËî„îãî¢î ®ï'î$îî#î¸îFîÝî!dî%¿î+P î3*î4Îî7Pî;î<öî>BîC›îF2î ®ï€îîî‚îüî°îb î#÷î%Tî(^î*Uî,Ñî.Þî1Dî4½î7î9gî<} îCœî ®ïÙî\îyîGî~î�îöî!sî#±î&î)¤ î ®ï^îàîWî[îÐîÁîî±î"î$xî)bî+î,Dî1{î4Iî7yî9îî>¢î?ÌîCÙî ®ïãî7î;îöî"î Šî"dî&´ î.Tî1„î3 î8î:,î;åî@îCNîG/î ®ï;î=îrî!îî!¡î#Oî%¯î*æî,Ÿî.þ rî ìï"î Vîëwî ìï åî î qî ìï 5îÚvî)Èïý TVm$�Variousbugfixesshouldimproveremotedebugging.BugfixesMinorbugfixesonly(particularlytooctalcommands).StructuralmergeTheoctalcommandsmentionedabovearenowastandardpartofInterpreterPackage,whichisapartofthebootfile.AdditionalfeaturesExpressionsoftheformv[tag],wherevisanoverlaidorcomputedvariantrecordandtagisthenameofoneofthevariants,nowcoercetherecordtobeofthespecifiedvarianttype.forCedar4.1RemotedebuggingRemotedebuggingissupportedthroughtheuseofDebugTool,aprogrambyAndrewBirrell.Sincethistoolisinthebootfile,previousmethodsofremotedebuggingarenowinoperative.Therehavebeensignificantbugfixesinthisarea,especiallytoremoveproblemswhentheremoteworldhasbeenbooted,andtheuseofinterfaces.StructuralsplitBugBane.bcdandBBV.bcdhavebeenrearrangedintoBugBaneBelow(lower-levelmodules)andBugBaneAbove(higher-levelmodules).BugBaneBelowexportseverythingthatBugBaneusedtoexportexceptBBObjectLocation,BBDisableBreaks,BBAction,BBBreak,BBFocus,andBBNub.BugBaneAboveexportseverythingthatBBVusedtoexport,plustheformerBugBaneinterfacesnotexportedbyBugBaneBelow.Mostclientsshouldnotnoticethedifference.BugfixesPerformancehasimprovedsomewhat.Afewminorbugshavebeenrepaired.Errormessageshavebeenslightlyimproved.AdditionalfeaturesArrayconstructors,includingALL[expr],aresupported.NEW[type_expr]issupported.MAX[expr,...]andMIN[expr,...]aresupported.forCedar4.0RemotedebuggingRemotedebuggingissupportedthroughtheuseofDebugTest,aprogrambyAndrewBirrell.TheCedardebuggerwillbeautomaticallysetupifCedarisinstalledontheCoPilotvolume.ToruntheremotedebuggerintheClientvolume,perform:runAMProcessBasicImpl;runAMProcessImpl;runDebugTestDebugTestRemoteMachineNameBugfixesMinorbugfixesonly.AdditionalfeaturesVariantrecordconstructorsnowwork(positionalnotationonly).forCedar3.56sî ®ïb)îÃî†îÀî<î!ªî&Q qî ìï_pî Ðsî ®ï\ýîñî´îïî î!Ëî#yî&Ë qî ìïZD î^sî ®ïWÑî¢îîî!î%%î'”î*´î+úî1±î4±î6†îB´îFÝîHeî ®ïV*î‘îJîªîÚqî ìïSq îˆsî ®ïPþ îHîî˜uîïPþîµïPþsîlïPþî dïPþuî$˜ïPþsî%ÒïPþî'Zî)fî.Îî0®î77î;ïî@[uîC.ïPþîC§ïPþsîE¨ïPþîF ïPþîG/î ®ïOWîmî&îÒî‹îêîcî!gî%¬î( î,[î. î/úî1³î4î9Îî>jwî ìïLî î qî ìïI`îÚsî ®ïFíîÇînîÇî ,î%Rî'žî*î+§ î35î4Lî9Èî;±î@àîEÚî ®ïEFîCîîbîîWî{î0î"³î(6î)âî.}î5*î7qî:i îBSîFHî ®ïCžî" îÑî«îýîÂî!{î$ä î+/î,õî1õî8î;áî>XîCîGî ®ïA÷î îî·îî‹îD qî ìï?> î^sî ®ï<Ë î:î"î#î!šî%( î,=î/E î8û î@ªîFØî ®ï;$ î“ î¿î%ê î/—î4” î;€î>wîD|îGàî ®ï9}qîIï9}îäï9}sîÒï9}îºï9}î!îî-Wî4Fî:¯îA0îD4î ®ï7Õ î_î) î!âî$¦î'ìî+î,Áî1_î4Nî6£î;)î@ú îGî ®ï6.îiîe îÆî"Nî&“î+î-„î1œî3ü qî ìï3uî Ðsî ®ï1 îµî#îPî$‰î&î(¨î,¸î/÷î36î6Œî<Çî@tîFHî ®ï/[î îÓqî ìï,¢ îˆsî ®ï*/îŸ î«tîÆï*/îšï*/sî! ï*/qî!oï*/sî$ï*/î$iï*/î%Lî'¦ tî/ï*/î/ñï*/sî1Äï*/qî2'ï*/sî5ï*/qî6§ï*/î7Bï*/sî9=ï*/î:,ï*/î;ž tîCï*/îDï*/sîE¹ï*/qîFï*/sîH²ï*/î ®ï(ˆî›tîSï(ˆîdï(ˆsî·ï(ˆqîï(ˆsî°ï(ˆî�ï(ˆî{îÎ wî ìï%Aî î qî ìï"‘îÚsî ®ï îÚî”îî yî%±î(î*†î,@ î3 î4Êî:YîÕîD¿îFùî ®ïÏî î´î¾îlîËî!îî'0î ®ïTîDîáîw î*î,›î ®ïÙqîµïÙî²ïÙî ìï î Ðsî ®ï­îñî´îïqî ìïô îˆsî ®ï ‚î—îç î”î ˜î$ î*Øî0Gwî ìï ;î î vî)ÈïýÿÉTVm$3RemotedebuggingRemotedebuggingisnowsupported,althoughtheuserinterfaceisquiteincomplete.Actionsmaynowcomefromanyenabledworld.Tostartlisteningtoaremotemachine,evaluateBBNubImpl.FindWorld[name:name,new:TRUE],whichwillreturnaworld(WorldVM.World)forthenamedmachine.Anewactionshouldappearfromthatmachine(ifitissetupforremotedebugging).Pleasenotethatinvocationofremoteproceduresandsomeremoteassignments(especiallythoseinvolvingallocationandreference-counting)arenotyetallowed.BugfixesMinorbugfixesonly.RestructuringBBObjectLocationisnowimplementedthroughtheAMModel.ThisinterfacewillprobablydisappearcompletelyinCedar4.0.forCedar3.4Newapproachtoread-eval-printRemovingthedefaultread-eval-printloopandthedefaulterrorreportingprovidesgreaterseparationbetweenBugBanefacilitiesandBugBaneclients(theUserExec&BBV).ThechoiceofwhethertomakeaUserExec"stall"ifitgetsanerror,tomakeitlookatthenewerror,ortoprovidesomeotherserviceisnolongerdictatedbythecodeofBugBane.BBVprovidesdefaultreportingofnewactions(breakpoints&uncaughtsignals).Theuserisabletoselectthe"current"actionthroughthecurrentmenuinterface.Facilitiesfordisplayingthecurrentstackandactionsarealsoprovided.TheUserExecprovidesanworkarea(evaluator)foreachaction.Aworkareaisaread-eval-printloopintheclassicstyle.However,whenabreakpointoruncaughtsignaloccursforthatevaluatorotherworkareasmaybespawnedinresponse.Alloftheseuserinterfacesshouldberegardedasexperimental.SeparationofprintingPrintingofTVsandtypeshasbeenunifiedunderthecontroloftheIOpackagemaintainer(WarrenTeitelman).TheimplementationnolongerappearsinBugBane.RussAtkinsonwillassistinmaintainingthispackageduringthelifeofCedar3.4.However,Warrenshouldbeconsultedaboutformatting.NewfeaturesLOOPHOLEisnowbettersupported.AnimplicitLOOPHOLEwithablanktargetnowdefaultstoLONGCARDINALasthetarget.BBVprovidesbettererrormessages.Itnowreportsthesourceversionitswantedifitcan'tgettherightone.Parsinghasbecomealittlefaster.Thisisduetomorecaseshandledbythequick-killparser,andcachingofintermediatestoragebythelong-windedparser.TheloadstateisusedinsteadoftheGFTtoestablishglobalframesearchorder.Thisprovidestruelast-loaded-first-foundsearchorder.Cachingofglobalframesearchingisnowsubstantiallyimprovedaswell.Non-startedglobalframescanbefoundandmanipulatedmuchlikestartedglobalframes.Itshouldnowbepossibletosetbreakpointsinviewersthatviewremotesources.7qî ìïb&îÚsî ®ï_—îÛî—îî î#Ýî)›î+üî.÷î4Ÿî6 î9˜ îAŠîF‹î ®ï]ðîQî›î¢îâî!®î'¶î*|î.,î4Pî6žî8hî=¯îD+î ®ï\Iqî ï\Iî _ï\Isî"Àï\Iî#¢ï\Itî'ï\Iî'Çï\Isî*:ï\Iî*�ï\Iî+î/’î2Bî6vî7¥î;•îGRî ®ïZ¡î2îÞîˆî:îMî#‹î(,î,Øî0dî3Wî9î;î<{î> î@NîB…îDèî ®ïXú îlîòîdî Š î'�î)¡î.¡ î6î9î<úîAù î ®ïWS î[îûî î#Aî%ùî2î4iî6Þî9'qî ìïT}î Ðsî ®ïQïîñî´îïqî ìïO sî ®ïL‹îúî;î î$;î)Iî+}î2Çî5·î;2î=²îCZî ®ïJä î©îWîowî ìïG�î î qî ìïD§î îØî}sî ®ïBî7î}î î#Bî&Nî(ìî+2î/Áî3î8þî>tîB÷ î ®ï@qî!î îjî &î&î*Qî-.î3\î4ùî9©î<†î@ÐîBŽîGàî ®ï>Êîxî¹îùîSîËî8î"î$"î(î)Èî-“î/î20î3ßî6Uî9Zî=;î?î@ÚîEüî ®ï="îMîÓî?îEîˆî!Áî#½î&î)cî+î ®ï:™îî¢îTî \î"î%î)¾ î1¶î3Xî9aî?:îBîE îF–î ®ï8ñî”î�î$î‡î×î%Gî'ßî,áî0ú î7ì î=õî@j îG/î ®ï7Jîwîêî¡î>î’î!^î ®ï4Àî‘îÅî_î[î ãî#æ î*âî-*î0fî5pî7î:�î=”î? î@?î ®ï3îÚî�îöî+îFî"‚î&>î'o î.gî02î69î:+î>wî@¼îC‘î ®ï1rîMîÊîGîKî;î!áî#�î ®ï.èîî¹îCî< îfî!âî#Òî)Žî+< qî ìï, î¿îcsî ®ï)„îíî™îyî#îªîî"aî'î+î-Xî1þî3©î5ûî8 î=? îDî ®ï'Ý îî î"7î$}î(ÿî.Jî07î7mî; îA/îDîGáî ®ï&5 î<î×îî |î"Ôî%7î&éî*úî.î42î9*î= î?‰îE­î ®ï$Ž qî ìï!¹î tî ®ï*sî…ï*îèï*îîBîa î$î&}tî+¯ï*î,hï*sî2‡ï*î3„ï*î5Èî7î;î?îBHîGœtî ®ïƒî„sî$ïƒîÊïƒîÒî2î ®ïùîþîŒîƒîôî#ªî% î(#î,Êî/)î3xî8?î:î>áî@AîA–îDçîG/î ®ïRîÿî ®ïÈî“îî.î_î˜î"Cî%eî&Øî)˜î+Nî.éî2cî7¹î9¼î<# îBUîFØî ®ï!î®îg îaî î"î$n î,\î ®ï—îyî|î îî/îÖî ‚î"Õî&Fî'èî-vî1Œî5vî9£î>îA(îF«î ®ïðîNîhî"ºî'þî)—î-šî1qî7fî8²î;– îCZî ®ïHî\î ®ï ¾ îHîkîåîqî!aî%oî(& î0î3ìî6—î;î?6î ®ï 5î%î¡î¥î•î×î†î ¢ î(î)Åî.®î1}î4¸î9_vî)Èïö TVm$æCoercionofREFopaquetoREFconcreteatprocedureboundarieshasbeenimproved.CoercionofREFANYvariablestoREFsomethingvalueshasalsobeenimproved.Coercionbetweenopaqueandconcretetypesisnototherwisesupported.RemotedebuggingMostusersshouldnotseeanychangesfromtheBugBanechangesinsupportofremotedebugging.RemotedebuggingisstillnotsupportedinCedar3.4.forCedar3.2NewfeaturesLOOPHOLEissomewhatsupported.Non-RC(referencecontaining)valuesoflessthan3wordsinlengthcanbefreelyLOOPHOLEdbasedonthetargettype.Therefore,LOOPHOLEisonlyusefulwhenconstructingaprocedureargumentorassigningtoavariableineitheraglobalorlocalframe(notadebuggervariable).ExplicittypesforLOOPHOLEarenotyetsupported..Someoctaldebuggingfeatureshavebeenadded.Inparticular,OctalReadandAsciiReadareusefulinattemptingtoexaminevariables..BugBanenowcanaccess(throughRTTypes)symbolsfilesintheCedarreleasethatarenotonthelocaldisk.Thisaccessshouldonlybenoticableiftheserverisdownorespeciallyslow.BugfixesImprovementshavebeenmade(andbugsfixed)insignalhandlingandreporting.Inparticular,featuresregardingcatchframesshouldnowwork.Theinfamousdoubledbreakpointproblem(whereabreakpointwouldimmediatelyrecuruponproceedingit)willnotentirelydisappearuntiltheTrinityreleaseofPilot.Theproblemliesintheinteractionbetweenbreakpointsandpagefaults.Inthemeantime,thecodeistouchedimmediatelybeforeproceedingthebreakpointtoforceitin.8sî ®ïb)î”tîLïb)î ïb)sîüïb)î·ïb)îÚtîˆïb)î\ïb)sî 7ïb)î Òïb)î%±î'Hî-Ë î4Üî7Pî:¬îA»îG¡tî ®ï`‚îWsîIï`‚îùï`‚îûtî ï`‚îtï`‚sîIï`‚îÎï`‚î"äî' î)uî,9î/�î6‹î¹îA¿îEÃî ®ïL î|î²î@î"uî$Eî*7î+ñî-&î2hî4"î8î9Oî=}î?MîBžîF î ®ïJuî ×îà îlî‚î#tî%TïJuî& ïJusî, ïJuî,²ïJuî.`î0Õî3 î ®ïGúî­î(î î aî#Ñî'Wî,ªî.£ î5Zî9.î<öî?×îCsîG;î ®ïFSîÆît îZî î � î ®ïCØî�î™î*î>î!õî(rî-Äî0¸î2kî4Ñî8ïî={î@OîB¨îE#îG/î ®ïB1îôî¾îØîåîaî"{î$lî*Tî+´î.î2 î3Œî7Wî9 î?Oqî ìï?oî Ðsî ®ï<ô îäîJîÆî ¥î#õî'[î+rî-?î1Iî7$î9û îAîC î ®ï;MîÚîî˜î î$�î'“î ®ï8Òî¼îðî‹ î"²î(mî-5î.• î5½î:" îB0îEûî ®ï7* îÂî”îBî¹î»î%óî)<î+žî0<î4Åî6€î:§î=‚îCîEîG/î ®ï5ƒ î~îã î Nî"ûî&8î*Àî,…î.Ûî5‰î7ßî;î<~îA· î ®ï3Üîý îîn î!_î# î&Šî'ávî)ÈïFTVm$€ÿ TIMESROMANþŸÿ HELVETICAþŸÿ TIMESROMANþŸÿ TIMESROMANþæÿ TIMESROMANþŸÿ TIMESROMANþYÿ TIMESROMANþŸÿ TIMESROMANýÌB ,C Ö# å-g4 ‰=ÜCj/F Dšþµaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ BugBane.tioga27-May-83 17:50:41