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.MultipleprocessespZ^8#%P)/q%3Y3(z"U%($+j.xr QsQhQtu!1&@'*T.p 7`8:J@BHCu O Ci!%u ,u 37E<? F NW K7Mx"Z&*-04]57z8<?DKG J)    $(f /0}39CG H K s!u##% +13W6|r DP 2)s @ 8 > %r'-/4U:<?AEvG ?K WD$ %H ,'1D3 8:b<@BFt = 3t~!1$'*J0H6 ;:tQ; ;s|;Y;q;|; y$:'+.15;s 8Nq8N8L| #n)+5/d2t 6s 6t 6q66{+="')(*.~/3t 3s 3t 3s3q339 }"$H(*+1W3 1se1t1s1x1qf11 %"( .}s.}t.}s.}.}q.}.}3V &*{-k/;t +s+t6+sY++qo++"t )pq )p)pt)psq()p)pR?"t)p )pq")p &s&tq&sE&"&q&&:t&&sN&t*&<&s&t &!&s#&t#&$&s&]&t'9&(&q*i&t $cs $ctx$csqT$c$cMs "3#%&'r 1 Qu s  #R !a')+158&<(>?B G< W1Z"&&y)@*035:>@D  k w#),279T;? F  -  h="'f,.A1J479>@!BF> j  #&( /5I69=7@,B| 3 =Vr"v',. 6:O? F em"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<BE `.Tb&$Z&(+-q0V 7@D ]3 jJ!&,/59;B4GR [zo !#)=*,0Q3 7"8<[> EG Y   Wb > "%+ 3 :g<BF Uo!%y&(.107-:H r Q p>s N8}"U&%*,06;>` C L ZEnY!7#),7/448?:>BDG J)Gi #3%(+w.z1G3 5~:] AC:H# IB y1B #P)bu E s C""#')-L 4L6 >-B(EF AxNt/AxAxsZAxt[AxAxsAx Ax#',1(3=79x<>?BF? ?E"g%)*?/3W7e9<@Pu @%AC .Y!&( +/26L9?CF ,)Qu !S&S*.L05t8;u )fFs &&S#&%).2t57E %#\ #5%'+0 9h<<?2CF #|'"O$' u $s YrQ[%|(-04 69:=8AE *##|&'+-0)5 9:o;@El  r  Vs ,$'R)+ 38/;>9BG  = #%6*0b36 <? BD 9 u q s Y o 5:#! ).02q5( 55 5s7\ 57 5q9 5: 5s; 5< 5 COGv) 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]3qob)sb)b)g!$ +,04M _u _q_s__o]RU!$1'g)/3q5]60]s7]8]:<ADGo[v/ Xu XgXs5XXoVj!# *,.1 8>BFoT R=u R=/R=sCR=R=oO'+"%4&o*/P25:;C@CTFoNk.f"'$+a/36X;'>ADcoLiuG {!&|)-O/5 =?[EloJ H<u H<$H<sH<H<oE1VS !$( 0\3*6{8: C0u C0|C0sC0C0o@S!z#)s-1j49>ADo?p   <}u <}|<}s<}d<}NhI".#o9K%&,F-0Wq4 949s7979;q=9>H9s?9@<9BDco8P1^qb8P8Ps8P8P p$"q%8P&8Ps)8P*8P- /0:=AYqC8PC8PsF'8PGQ8Po6`pq)66s R6 6# %s*;-a0g2 9;{?FC 4#u 4#|4#s4# 4# o1F; #&T)+/8=?kAElo/f q"/#M/s%*/%/ -pu -p|-ps-p-po*}|!$a'* /3q5*6J*s7*83*:<ADGo)C/ &u &|&sd&& o$7=Abn#F'a+ . 04d9q;>UCEo"#q""s"<"qp" "s "!"#g%*-03 :;?CM u | s V o)7"%(+E059q77s9:9<>|CSFo Wu WqWsWWo~ #7 *,.48 Lu LqLsCLLo "e *+.*37, @u @P@s@@o yomPz %k')c/3A789?~ 5u 5: 5sY 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.4sob)  "%(-/049<AGo`[ `"#q&`'{`s'`(M` ]u ]:]s ]o]o[m6"f$(-/14s9<AGoY[ `"#q&Y'.Ys'Y(Yr U u R& ps x s OP  "&(/13y9<>BGR M *G" *+y-3+57=?CFI Lf1K%+-0'5<[@< u H ,Cs E  !#'Q*q-05:@D D # +!%\(Q-!/5N;>]@CF By9?5Pz".u ?Ys %B]EG/ 7I@kx#u 3]v s 1 %(**,2:4;6;A>D]G /h i*[ $&B++.D/1/7:?p@F' - |Q%+; 157:t;-<-s>-?n-CE  , vRt,V,s8,,#%q(*.049;f@DUG *rp #Yt'$*r'*rs-*r.`*r2X4I793:\ u '  = t $9s$9\$9  t "%( /69<2 CE " ZN{  ! (*[, 35n9=? F  a _% &!# )/?5R:<,> t s  w ! (J+.3:58=@CG4t . s. rvU$ ,.14A6]8b;E=CG  tzbs!%+4-0T q AY% .159=?BkG/  {UH$'%,247R9=l?tBBsDEGz #cFr=tz##s"###  AH$%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-24;>vA/F ` FIv-% &)t+l`,`0s2`3`q5`63`s9`:`; C ^ 8f  &5'* 257aDFI ]3kB[#$,. 5w69< [  tF # (*v,2 37d @ADu XF  w s U  tUUs$UU #*&:+0 t9U:U sB6UBUtEFUEU S s2SS  >#k%)5.15t6CS7Ss9St9S= sESFS R> 0 Ot5OOsOrO !'*/068;>sBhD NEM "$A(,$u Jxq 9<$ s H%t !2!')2,1+7(;BrF' Fvq FvFvsFvFv6!#/%&-/C15+7c9 @pB Dt aD DsDDu Av!3s >+,q#%t(>)>s,>-P>t.>/^>s2>32>8:?w G  =)tA=)=)s=)t=)c=)s=)=)t[=)D=)s=)H=)!%z'*.u 9- s 7* A: 4 "] +I.0U 9A<AF 3 D!&+-Q/4C8;B;EG 1a* .Mw   "{(y.42637 ,kt ,k ,ks$,k%d,k+ - 6?9: )I]  "%7)+ 26q8=[BDG (HT @% ,k0%4 < >@|C &b[)."R$&_)8/ 0395 u #[ sz!es  r '$#F!d%+P 3*47P;<>BCF2 b #%T(^*U,.1D479g<} C \yG~!s#&) ^W["$x)b+,D1{4I7y9>?C 7;" "d& .T138:,;@CNG/ ;=r!!#O%*,. r " Vw   q 5v) 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!%%'*+146BFHe V*Jq Sq s P HuPPslP dPu$Ps%P'Z)f.077;@[uC.PCPsEPF PG/ OWm&c!g%( ,[. /149>jw L  q I`s Fn ,%R'*+ 354L9;@E EFCbW{0"(6).}5*7q:i BSFH C" !{$ +/,18;>XCG A D q ?> ^s < :"#!%( ,=/E 8 @F ;$  % /4 ;>wD|G 9}qI9}9}s9}9}!-W4F:A0D4 7 _) !$'+,1_4N6;)@ G 6.ie "N&+-13 q 3u s 1 #P$&(,/366<@tFH /[ q , s */ t*/*/s! */q!o*/s$*/$i*/%L' t/*//*/s1*/q2'*/s5*/q6*/7B*/s9=*/:,*/; tC*/D*/sE*/qF*/sH*/ (tS(d(s(q(s(({ w %A  q "s  y%(*,@ 34:YDF  l!'0 TDw *, 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 _ #)+.46 9 AF ]Q!'*|.,4P68h=D+ \Iq\I _\Is"\I#\It'\I'\Is*:\I*\I+/2B6v7;GR Z2:M#(,,0d3W9;<{> @NBD X ld '). 69<A WS [ #A%24i69'q T} s Qq O s L; $;)I+}25;2=CZ J Wow G  q D }s B7} #B&N(+2/38>tB @q! j &&*Q-.3\49<@BG >xS8"$"()-/2036U9Z=;?@E ="M?E!#&)c+ :T \"%) 13X9a?:BE F 8$%G',0 7 =@j G/ 7Jw>!^ 4_[ # *-*0f5p7:=? @? 3+F"&>'o .g0269:+>w@C 1rMGK;!# .C< f!#)+< q , cs )y#"a'+-X1358 =? D '  "7$}(.J077m; A/DG &5 < |"%7&*.429*=?E $ q ! t *s**Ba $&}t+*,h*s2*3*57;?BHGt s$2 #% (#,/)3x8?:>@AADG/ R ._"C%e&)+N.2c79<# BUF !g a "$n ,\ y|/ "&F'-v15v9>A(F Nh"')-1q7f8; CZ H\ Hkq!a%o(& 036;?6 5% ().1}49_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)tLb) b)sb)b)tb)\b)s 7b) b)%'H- 47P:AGt `WsI``t`t`sI``"' )u,9/6AE L |@"u$E*7+-&2h4"89O=}?MBF Ju  l#t%TJu& Jus, Ju,Ju.`03 G(  a#'W,. 5Z9.<?CsG; FSt Z  C*>!(r-02k48={@OBE#G/ B1a"{$l*T+.2 37W9 ?Oq ?o s < J #'[+r-?1I7$9 AC ;M $' 8 "(m-5. 5:" B0E 7* B%)<+0<46:=CEG/ 5 ~ N"&8*,.57;<~A 3 n !_# &'v)FTVm$ TIMESROMAN HELVETICA TIMESROMAN TIMESROMAN TIMESROMAN TIMESROMANY TIMESROMAN TIMESROMANB ,C # -g4 =Cj/F Da BugBane.tioga27-May-83 17:50:41