TheCedarDebugToolVersion4.2Releaseas[Indigo]Documentation>DebugTool.tioga,.pressCamefrom[Indigo]Manual>DebugTool.tioga,.pressLasteditedbyBirrellonJune14,19832:24pmbyHorningonJune7,19834:23pmAbstract:ThistoolappearsautomaticallyinCoCedar,andmaybecreatedinthenormalCedarenvironmentwiththe"Debug"command.Thetoolcanbesetuptoinspecttheenvironmentinwhichitisrunning,ortoteledebuganinstanceofCedarrunningonanothermachine.InCoCedar,thetoolcanbeusedtolookatthenormalCedarenvironmentwhichhasbeenstoppedbyoutloadingittodisk.Thetoolallowsyoutoinspectandmodifythestateofparallelprocesses,andtoenumeratethesetofloadedpackagesandmodules.XEROXXeroxCorporationPaloAltoResearchCenter3333CoyoteHillRoadPaloAlto,California94304DRAFTForInternalXeroxUseOnlyDRAFTpî ìï^kî¤î`qî ìïYuîrî ìïTîosî¬ïTð-î1ârî ìïRØî Lsî¬ïRØð*î0rî ìïQ0î �sî¬ïQ0î³îî(îÒî Fî#ãî'î¬ïO‰î³îWî~î(î Õî$sî'­tî ìïHìsîDïHìî!ïHìî�îpî î& î'Ðî.gî1Vî4{î6™î;ûî=ªî@6îE+î ìïGD îvîªîBîšî%åî(ìî+éî.Úî1î3|î5²î7„î<¾î?V îGáî ìïE�îîJî¹îwî3îÙî Ÿî"žî(qî*î.]î3¸î5Âî;îA]îBùî ìïCöî µîâîî`î=î@îºî ²î#|î(¯î-R î6 î:›î=§îAšîG‰î ìïBN îSî²î‹îî*î,î"Æî%²î'‹î,Êî/Ìî4©î7Gî:ùî<ÒîB î ìï@§î Úîžîúî„îíî±î!�î(;î+)uî ìï8†sî(îï8†î-0 î(îï6Þî,Iî/Xî5ùî(îï57î,‹î1”î4î(îï3�î,Iî/» î6gqî ìï Jî�îCîYî òî'žî,0î1‰î4.øTVm$^THECEDARDEBUGTOOL2TheCedarDebugToolIntroductionThistoolappearsautomaticallyinCoCedar,whereitisinitiallysetuptolookatthenormalCedarenvironment,whichwasoutloadedtodiskwhenyouswappedtoCoCedar.Thetoolcanbecreatedwiththe"Debug"command.Ifyougivethecommandwithnoarguments,itcreatesatoolforinspectingtheenvironmentinwhichthetoolisexecuting.Ifyougivethecommandwiththenameofanothermachineasargument,itcreatesatoolforteledebuggingthatmachine.Theenvironmentwhichthetoolislookingatiscalledthetool's"client".Mostofthetoolisconcernedwithlookingattheparallelprocessesoftheclient;therearealsoafewfacilitiesnotrelatedtoprocesses.Non-process-relatedfacilitiesAtthebottomrightcornerofthemenuarethe"Screen"and"Kill"commands.Thesehavenoeffectiftheclientisthecurrentlyexecutingenvironment.InCoCedar,the"Screen"commandswapsbacktotheclienttoallowyoutolookattheclientdisplay(forabout20seconds,oruntilyoupressthe"swat"key);whenteledebugging,thgiscausesthemachinewhichisbeingdebuggedtoshowtheclient'sscreen.InCoCedar,the"Kill"commandissimilartopressingthebootbutton;whenteledebugging,itissimilartopressingthebootbuttononthemachinewhichisbeingdebugged.Atthebottomleftofthemenuare"ListLoadState"and"ListContext"."ListLoadState"enumeratesthecurrentlyloadedconfigurationsintheclient.Ifyoutypethenameofaconfigurationasthetextbesidethe"Context"button,thenclick"ListContext",itwillenumeratethemodulesinthatconfiguration.ProcessesTheprocessfacilitiesarebasedontheconceptof"freezing"aprocessatsomepointonitscallstack.Thismeansthattheprocesscontinuesexecutionnormally,butwhenitreturnstothatpointonitscallstack,theprocesswillstopexecutinguntilitisthawed.Ofcourse,thereisthespecialcasewhereyoufreezetheprocessatitscurrentframe,soitstopsexecutingimmediately.TheDebugToolallowsyoutofreezeandthawprocesses,andtolookatthefrozenframesofprocesses(evenwhiletherestoftheprocessisstillexecuting).Thereisnowaytolookataprocess(orpartofaprocess)thatisn'tfrozen.Therearefour"Freeze"buttons:"All",whichfreezesallprocessesattheircurrentframe;"Ready",whichfreezesallreadyprocessesattheircurrentframe(i.e.processesthataren'tsuspendedforamonitorlock,conditionvariablewaitorfault);"Process"whichfreezestheprocesswhosenumber(PSBindex)isgiveninoctalasthetextbesidethe"PsbIndex"buttonontherightoftheviewer.Finally,the"Context"buttonwillfreezeallprocessesassociatedwithaperticularconfigurationormodule,freezingthemattheboundaryofthecontext.Moreprecisely,"Context"enumeratesallprocesses,anddetermineseveryprocessthathassomewhereonitscallstackaframewithinthespecifiedmoduleorconfiguration;eachsuchprocessisfrozenatthepointwherecontrolwouldreturntowithinthemoduleorconfiguration;anyprocesscurrentlyexecuting(orwaitingorfaulted)withinthemoduleorconfigurationstopsexecutingimmediately.IfyouclicktheRIGHTmousebuttononthe"FreezeContext"button,thentheentirecallstackofeachsuchprocessisfrozen.ExaminingfrozenprocessesForeachprocessthatisfrozen,theDebugTooldisplaysthreebuttons,labelledwith"Adjust","Thaw",andadescriptionoftheprocess'scurrentstate.Thestatesaysthingslike"ready"or"waitingCV"or"pageFault",followedbythenameoftheframeatwhichtheprocessisfrozenandthepriorityoftheprocess.Thereisnowaytolookatnon-frozenframesoftheprocess.The"ready","waitingCV",etc.arewrappedinparenthesesiftheprocess'scurrentframeisnotfrozen(i.e.iftheprocessisstillexecuting).IfyouclicktheLEFTmousebuttonontheprocess-statebutton,DebugToolgivesabriefsummaryofCEDAR4.2vî!jïgwî"Qïgî#7ïgvî$Zïgwî%Xïgvî)ïgwî*'ïgvî-mïgwî.UïgsîHDïgxî ìï^õî Wî&yî ìï[¦ vî ®ïXXîÈî•î¡ î î!Ãî'íî,î-\î.Èî3Èî5åî7øî9§î<Àî>Yî@¹îEwî ìïV° îLîRî÷î\î!î#êî'—î*Gî/æî1�î7®î:î=Dî?ÈîA²îFtî ìïU î Fî(îÛîXî îñî"Kî(§î+¼î-¼ î4½î6î:�î;³î>{î@² îG/î ìïSb îñî•î˜îîî±î î$Šî&î(¯î+’î-èî4?î7Oî9¥î=Zî? îD î ìïQºî �îîUîÑîñî´îç î&´î)xî/Jî2 î:î>!î@wîC:îD›î ìïPî €î èîÛî6îÛîOîÓî!ˆî#ãî&¬î(î.§î1¾î6­î8Aî:œî?�îE{îG/î ìïNlî&î¯îîÏîùî™ îüî"qî'î(² yî ìïKî= vî ®ïGÎîËîLî8î¬îîøî"zî&}î(òî+tî1sî4Lî8�î?üîD îG‰î ìïF'î ÔîRîÎî«î3î¯î©î%ð î.sî0_î6¥î9!î?îE˜î ìïDî 0îÛî8îõî¡îGîûî¦î!½î#Rî%¯î)lî.î0Ïî4®î6�î;üî=½îAîCµîG/î ìïBØî_îàî� î³î!ýî&/î(†î.î2 î3mî70î=sî?îB›îDòî ìïA1î…î]îŽîöî.î#—î% î)™î+Pî0°î3î6Qî;Dî? îH9î ìï?‰î eîøî´îî‡îÅî!Dî#Xî%Åî+Wî/rî0ìî4Äî<î>î@}îESîGÖî ìï=âî fîbîÐî] î«î }î$ î*cî-ð î5> î<¡î?îEî ìï<; îþîÇîAîsîîâî# î%‡î)bî+5î,z î5î6Ðî9Kî<î@|îB÷î ìï:“î¶îÜîîŠîÊî î"Ëî)�î+ïî1sî3!î5ð yî ìï7Dvî ®ï3öîtî7 îˆîÊî›î!�î#Þî(ãî*‹ î1î24î6öî8}î;ÿî?�îA‚îCKîEÄî ìï2Nî îgîCî±î“î!Ìî(î.Gî0Öî4šî5þî:Àî<|î?YîCîEîGî ìï0§î Ëî>î&îåîóî!1î$‹î%õî'uî,ªî.Ïî3Šî7'î8§î;î?ªîB¬îFØî ìï/î üî^î5îÑî¯î{î!Íî#”î$îî(oî.� î6Ïî9ªî@öîE&îGàî ìï-Xîîýî€ îüîÚî¯î"îî$­î'3î+�î0>î2î8Bî<(î@îBˆîEPîG/î ìï+±îÒîPî îî$î¢î!ºî$¤î&eî)�î+;î,wî1]î3¬î6¢î8mî9©î?îAèîDôî ìï* îî”îÂîÇî`î#•î'Íî,‡î. î4Çî6‰î9úî>íîC†î ìï(bî èîhîFîÿîëîrî"¨î'`î+Eî-èî3Ôî6‘î:aîA îC5îDMî ìï&»î Mî}îÃîÍî¡î!àî(/î,Mî0îî3^î8Bî<€îA½îEKî ìï%î •î†zîqï%î!ï%vîï%î¦ï%îìîˆî}î þî#š î+Aî/ïî22î4Ïî8^î:Sî<ðîAéîG/î ìï#lî‰îÿî¯îÁîµî#¸ î*)î-Hî.w î4± î=(î>ñîDNî ìï!Åî cîéî5îXîÿîKî eî$ î*î0� î7Ãî9  î?äîBˆ î ìï î šîhî1î îÁî Áî"–î%î(ˆî)¬î-�î1Ûî45î9ëî>åî@£ î ìïvî ÿîîÇîî:î´îõî!vî%pî*î.î2$î3´î7Ûî:î>ýî@£ î ìïÏî uî0îõîî,î#èî%“î*�î.Éî1î5ùî7¤ î?ÿîCdî ìï( îî¦îaî¡wîï(îÙï(vî >ï(î!gï(î$œî)î+î-€î2°î8œî=jî@”îBøîFéî ìï€î _îîIîzîNîºyî ìï1îÃîðvî ®ïãî˜îîî)îÓî!®î$Mî+Ôî1Jî5î: î@ îCeî ìï;î^îùî îüî˜îÛî#oî(î+ˆî.Cî1Xî4î8î:©î?¸îA_ î ìï”î ¦ îÁî[îMî¢î!Wî#î%\î)Hî*Öî.Úî1/î5ùî7Zî;”î>Aî@–îE�îG/î ìï íî îîdî_î,îÏîÞîk î&fî*Öî,„î.Øî3ùî6Æî€î?ïîB” î ìï žî †îVî©wî!ï žîÚï žvîƒï žî­ï žîõî î"žî% î-(î2 î9kî<õî>7îA¡îG·î&tïýwî'rïýî(+ïýî+" +TVm$ÚTHECEDARDEBUGTOOL3theprocess'scallstack(fromthepointatwhichitisfrozen).IfyouclicktheRIGHTmousebuttonthere,DebugToolwillcreateanactionareaforthatprocess,whichallowsyoutolookatthefrozenpartsofthecall-stackinmoredetail.The"Thaw"buttonassociatedwithafrozenprocesswillun-freezetheentireprocess.IfyouclicktheLEFTmousebuttononthe"Adjust"button,itwillchangethepointatwhichtheprocess'scall-stackisfrozentobetheboundaryofthemoduleorconfigurationspecifiedinthetextfor"Context"attherightoftheviewer.CLickingtheRIGHTmousebuttontherewillfreezetheentirecallstackoftheprocess.Youcan'tthaworadjustaprocesswhileithasanactionareaproceedtheactionareafirst.They'rereallyfrozen!Ifyouresumeanoutloadedclient(forexample,byproceedingtheactionthatinvokedtheworld-swapdebugger)whilesomeprocessesarefrozen,theyreallyarefrozenwhentheclientresumes.Thiscanbeimportantwhendebuggingparallelcomputations,butitcanbedangerous.Inparticular,bewareofresumingtheclientwhilecriticalsystemprocessesarefrozen!StyleYouwillfindtheDebugToolmorepleasantifyouusethefullpowerofitsprocessenumerationfacilities.Youshouldveryrarelyneedtouse"FreezeAll".Almostalways,youknowwhatsetofmodulesorconfigurationsyou'redebugging;ifyoufreezejusttheprocessesassociatedwiththem,DebugToolwilldothefilteringforyouandyouwon'thavesomuchtroubledecidingwhatprocesstolookat.BugsTherearestillseveralbugs.Pleaseletanimplementorknowifsomethingdoesn'twork.IfCoCedarbreaks,however,youstillhaveachancetolookatyouroutloadedclient.IfCoCedarhasbeeninvokedbyaclientandyouhaven'tresumedtheclientatall(e.g.UserScreen),youcanrestartthedebuggerwithoutlosingtheclientoutloadbybootingyourDebuggervolumewiththe"W"switch.(CoCedardoesthisautomaticallyinthesituationwhereCoPilotsays"inloadedtwice,clicktoboot").Alternatively,youcanreinstallCoCedarbybootingyourdebuggervolumewithnoswitches,inwhichcaseafteroutloadingitselfthedebuggerwillbootyourphysicalvolume.SymboltablesJustlikeCedar,CoCedaroftenmanagestofindthecorrectsymboltableautomaticallyusingtheversionmaps.However,thisisunlikelytobetrueforthemodulesyou'redebugging.CoCedarwillnotautomaticallylookatfilesontheclientvolumeyou'llneedtofetchthemexplicitlyontothedebuggervolumeusingBringOver,ortheClientFileTool.CEDAR4.2vî!jïgwî"Qïgî#7ïgvî$Zïgwî%Xïgvî)ïgwî*'ïgvî-mïgwî.UïgsîHDïgvî ìï_'î DîìîoîÚî²î î!¡î#1î'7î(†î)éî.öî0pî3î6Rwî8ªï_'î9~ï_'vî<Ùï_'î>ï_'îA+îE•î ìï]îHîîî îLî!Xî#©î&‹î+Êî/ëî4,î6öî8¸î;åî=‘î@îDZîGÖî ìï[Øî w î•înî,îzî}î$Þî){ î0î3Xî4­î9î>î@ñîG/î ìïZ1î êî'î»î„îÑwîBïZ1îûïZ1vî ŸïZ1î!ÉïZ1î% î)Žî+§î.î3ûî8×î:?î<üîA¶îD'îGØî ìïX‰î îxî8 î:îµî"î#Æî%Æî(5î.zî0Bî2±î7Àî9” îBîGáî ìïVâî Dîõî+î¼îMî¦îðî ¢î"ûî'°î-¥wî/þïVâî0ÒïVâvî4-ïVâî5WïVâî8€î<ëî@mîCîGî ìïU;î Ýîlîäî¡îî5î Hî#Ÿî'î(Éî,Üî. î2âî6œî7öî:pîî Ñ îèîB î •î"î$îî)î+Þî.^î4| î; î>DîBFî ìïsîBBîC¾î ìï4(î¡î€î:îÞî(îUî"êî$œî'¸î)Tî,’î3î7î8¡î>uî@îîDMî ìï2�î î Uî8îîêîàî!‘î$î'õî)°î+Âî.æ î7"î9ûî<©îAîC†î ìï0ÙîéîÛî+îÜîÍîºî$¶î'âî.4î3î6î8jî;¡î@#îF_î ìï/2î Š îùî¤îî—î"¬î'¨î*‡î0Ùî4Âî7úî9¥î>T îFØî ìï-‹î jî”îXîGîEî!sî'oî,Lî/Zî1Sî7î8£î<¤î?†îB´ î ìï+ãî Hî¨î±î\î�îÈî$yî ìï(•îÕvî ®ï%Fî¦îpîîðî £î&[î()î+6î-µî2fî7Mî:Õ îCgîG/î ìï#Ÿî»î¹îõîžîî"eî$î&î(þî+Cî-ªî36î7v î>�îDgîGî ìï!÷ îdî‚îîîî€î"E î+åî/Gî0úî4rî8 î=ìîA!îC†î ìï PîÕî î�îSî²î&tïýwî'rïýî(+ïýî+"ÿˆTVm$ò ÿ TIMESROMANþŸ ÿ TIMESROMANþŸÿ TIMESROMANþYÿ TIMESROMANþæÿ TIMESROMANþŸÿLOGOü´ÿ HELVETICAþŸÿ HELVETICAþŸÿ HELVETICAþæÿ HELVETICAþÿ HELVETICAý…% � Éj/›HøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDebugTool.tioga14-Jun-83 15:02:32