ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g&@s ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddZ e \ZZZedkredeeefesedd evrejd kred ed pd edpdvredejejejdZdZddZeZddZed\ZZes2ededej\ZZ de vrbdZ!ee!e "ddZ#e#Z$dZ%e&e j'dGd d!d!ej(Z)Gd"d#d#e)Z*e&e d$Gd%d&d&e)Z+Gd'd(d(e)Z,Gd)d*d*e)Z-Gd+d,d,e)Z.Gd-d.d.e)Z/d/d0Z0e1d1kre2dS)2N)support)findfilepython_is_optimizedc Cszgd}tj|tjtjdd}||\}}Wdn1sF0Y|jr~tdd|d|jd|d|Wntyt d Yn0t d |}|durtd ||t | d t | d fS)N)gdb-nxz --versionT)stdoutstderruniversal_newlineszCommand  z failed with exit code z : stdout=z stderr=zCouldn't find gdb on the pathz ^(?:GNU|HP) gdb.*?\b(\d+)\.(\d+)zunable to parse GDB version: %r) subprocessPopenPIPE communicate returncode ExceptionjoinOSErrorunittestSkipTestresearchintgroup)cmdprocversionrmatchr,/opt/python39/lib/python3.9/test/test_gdb.pyget_gdb_versions.*    r!zFgdb versions before 7.0 didn't support python embedding. Saw %s.%s: %sz3test_gdb only works on source builds at the moment.ZClangdarwinzDtest_gdb doesn't work correctly when python is built with LLVM clangZPGO_PROF_USE_FLAGZxxxZPY_CORE_CFLAGSz&test_gdb is not reliable on PGO buildsz python-gdb.pyZ123cCs4td}|sdS|}d|vo2tdd|DS)NZCFLAGSFz-mcetcss$|]}|do|d VqdS)z-fcf-protection)z=nonez=returnN) startswithendswith).0flagrrr Qs z!cet_protection..) sysconfigget_config_varsplitany)Zcflagsflagsrrr cet_protectionIs r/cOs|rtj}||nd}d}ttfdkr>|ddtf7}tj||tj tj tj |d}|| \}}Wdn1s0Y| dd| ddfS)N)rz--batchrr"z-iexzadd-auto-load-safe-path )stdinrrenvzutf-8replace) osenvironcopyupdategdb_major_versiongdb_minor_versioncheckout_hook_pathr rrrdecode)argsZenv_varsr3Zbase_cmdrouterrrrr run_gdbYs     *r@z9--eval-command=python import sys; print(sys.version_info)z*gdb not built with embedded python support--argszauto-loading has been declinedz3gdb security settings prevent use of custom hooks: cCs>td\}}td|}|s&td|dd}d|vS)Nz+--eval-command=python print(dir(gdb.Frame))z .*\[(.*)\].*z1Unable to parse output from gdb.Frame.select testr z, z'select')r@rrrrrr,)r_mZ gdb_frame_dirrrr gdb_has_frame_selects    rD builtin_idznot useful for PGOc@sDeZdZddedddfddZd ddZddZd d Zd d ZdS) DebuggerTestsNFc Csdd|ddg}ttfdkr&|dg7}|rBtr8|dg7}||7}n |dg7}d d |D}|d tjg7}|t|s|d g7}|r|d |g7}n|r||g7}t|dt i\} } |s| D]} t | tj dqd| vrt ddD]} | | vrt | dq| S)Nzset breakpoint pending yeszbreak %szset print address offrunr0zset print entry-values nonext backtracecSsg|] }d|qS)z--eval-command=%sr)r'rrrr z1DebuggerTests.get_stack_trace..rAz-Sz-cPYTHONHASHSEED)filez PC not savedzKgdb cannot walk the frame object because the Program Counter is not present)z!(frame information optimized out)z*Unable to read information on python framez found in gdb output)r9r:CET_PROTECTIONsys executableextendr _args_from_interpreter_flagsr@rL splitlinesprintrrr) selfsourcescript breakpointcmds_after_breakpoint import_site ignore_stderrcommandsr=r>r?linepatternrrr get_stack_tracesB          zDebuggerTests.get_stack_tracecCsP|pdg}|j|t||d}td|tj}|sB|d||f|d|fS)Nz backtrace 1)rXrYrZzS#0\s+builtin_id\s+\(self\=.*,\s+v=\s*(.*?)?\)\s+at\s+\S*[A-Za-z]+/[A-Za-z0-9_-]+\.czUnexpected gdb output: %r %sr )r_ BREAKPOINT_FNrrDOTALLfailr)rUrVrYrZ gdb_outputrCrrr get_gdb_reprs  zDebuggerTests.get_gdb_reprcCs |j||d||fddS)Nz%r did not end with %rmsg) assertTruer&)rUactualZexp_endrrr assertEndsWith!s  zDebuggerTests.assertEndsWithcCs,t||tj}|s(|jd||fddS)Nz%r did not match %rre)rrrarb)rUrhr^rCrrr assertMultilineMatches&sz$DebuggerTests.assertMultilineMatchescCstdS)Nz gdb_sample.py)rrUrrr get_sample_script+szDebuggerTests.get_sample_script)NF) __name__ __module__ __qualname__r`r_rdrirjrlrrrr rFs m $rFc@seZdZddZdPrettyPrintTestscCs|d}|t|vdS)Nid(42))r_rgr`rUrcrrr test_getting_backtrace/s z'PrettyPrintTests.test_getting_backtraceNcCsB|dt|d\}}|s&t|}|||d|||fdS)Nzid()z1%r did not equal expected %r; full output was: %s)rdasciirepr assertEqual)rUvalZexp_reprgdb_reprrcrrr assertGdbRepr3szPrettyPrintTests.assertGdbReprcCs6|d|d|d|d|ddS)N*rilJ)lI5rzrkrrr test_int=s     zPrettyPrintTests.test_intcCs"|d|d|ddS)NTFr|rkrrr test_singletonsEs  z PrettyPrintTests.test_singletonscCs0|i|ddid|dddddS)Nfoobarz{'foo': 'bar'}r{)rZdouglasz{'foo': 'bar', 'douglas': 42}r|rkrrr test_dictsKs zPrettyPrintTests.test_dictscCs |g|ttddS)N)rzlistrangerkrrr test_listsRs zPrettyPrintTests.test_listscCsR|d|d|d|d|d|tddtdDdS) NrKs(And now for something hopefully the sames7string with embedded NUL here and then some more texts7this is a tab: this is a slash-N: this is a slash-R: s!this is byte 255: and byte 128:cSsg|]}|qSrr)r'brrr rJcrKz/PrettyPrintTests.test_bytes..)rzbytesrrkrrr test_bytesWs      zPrettyPrintTests.test_bytescsxtdd\}}||ss,td|fdd}ddd|d |d |td dS) Nz--eval-commandz:python import locale; print(locale.getpreferredencoding())zFunable to determine the preferred encoding of embedded Python in GDB: cs@z|Wn"ty0|t|Yn 0|dSN)encodeUnicodeEncodeErrorrzru)textencodingrUrr check_reprus  z1PrettyPrintTests.test_strings..check_reprr$z(And now for something hopefully the samez7string with embedded NUL here and then some more textu☠u 文字化けi!)r@rstrip RuntimeErrorrzchr)rUr>r?rrrr test_stringses$   zPrettyPrintTests.test_stringscCs(|td|dd|ddS)Nz())r z(1,))rrZbaz)rztuplerkrrr test_tupless zPrettyPrintTests.test_tuplescCsttfdkr|d|td|tdgdtjjsf|tddgd|tgdd |d \}}| |d dS) Nr"z.pretty-printing of sets needs gdb 7.3 or laterzset()az{'a'}rz {'a', 'b'}r1rz {4, 5, 6}z&s = set(['a','b']) s.remove('a') id(s)z{'b'}) r9r:skipTestrzsetrOr.ignore_environmentrdrwrUryrcrrr test_setss  zPrettyPrintTests.test_setscCsjttfdkr|d|td|tdgdtjjsf|tddgd|tgdd dS) Nrz4pretty-printing of frozensets needs gdb 7.3 or laterz frozenset()rzfrozenset({'a'})rzfrozenset({'a', 'b'})rzfrozenset({4, 5, 6}))r9r:rrz frozensetrOr.rrkrrr test_frozensetss  z PrettyPrintTests.test_frozensetscCs8|d\}}||d|d\}}||ddS)NzR try: raise RuntimeError("I am an error") except RuntimeError as e: id(e) zRuntimeError('I am an error',)z= try: a = 1 / 0 except ZeroDivisionError as e: id(e) z&ZeroDivisionError('division by zero',)rdrwrrrr test_exceptionssz PrettyPrintTests.test_exceptionscCs0|d\}}td|}|j|d|ddS)Nz8 class Foo: pass foo = Foo() foo.an_int = 42 id(foo)*'Unexpected new-style class rendering %rrerdrrrgrUryrcrCrrr test_modern_classs  z"PrettyPrintTests.test_modern_classcCs0|d\}}td|}|j|d|ddS)NzO class Foo(list): pass foo = Foo() foo += [1, 2, 3] foo.an_int = 42 id(foo)rrrerrrrr test_subclassing_lists  z&PrettyPrintTests.test_subclassing_listcCs0|d\}}td|}|j|d|ddS)NzH class Foo(tuple): pass foo = Foo((1, 2, 3)) foo.an_int = 42 id(foo)rrrerrrrr test_subclassing_tuples  z'PrettyPrintTests.test_subclassing_tuplec Cs`|r|dg}ndg}|j||d\}}|r6||kr6dSd}t||}|s\|d||fdS)NrIrYz<.* at remote 0x-?[0-9a-f]+>$Unexpected gdb representation: %r %s)rdrrrb) rUrVZ corruptionexpreprrYryrcr^rCrrr assertSanes   zPrettyPrintTests.assertSanecCs&|jdddgd\}}||ddS)Nrqzset variable v=0rIrZ0x0rrrrr test_NULL_ptrszPrettyPrintTests.test_NULL_ptrcCs|dddS)Nrqzset v->ob_type=0rrkrrr test_NULL_ob_typesz"PrettyPrintTests.test_NULL_ob_typecCs|jdddddS)Nrqzset v->ob_type=0xDEADBEEF42rrrkrrr test_corrupt_ob_typesz%PrettyPrintTests.test_corrupt_ob_typecCs|jdddddS)Nrqzset v->ob_type->tp_flags=0x0rrrrkrrr test_corrupt_tp_flags%sz&PrettyPrintTests.test_corrupt_tp_flagscCs|jdddddS)Nrqz"set v->ob_type->tp_name=0xDEADBEEFrrrrkrrr test_corrupt_tp_name+sz%PrettyPrintTests.test_corrupt_tp_namecCsFtjjr|d|jddd\}}td|}|j|d|ddS)Nz(need site module, but -S option was usedzid(__builtins__.help)T)rZz!<_Helper at remote 0x-?[0-9a-f]+>zUnexpected rendering %rre)rOr.no_siterrdrrrgrrrr test_builtins_help1s  z#PrettyPrintTests.test_builtins_helpcCs8|d\}}||d|d\}}||ddS)Nz#a = [3, 4, 5] ; a.append(a) ; id(a)z[3, 4, 5, [...]]z-a = [3, 4, 5] ; b = [a] ; a.append(b) ; id(a)z[3, 4, 5, [[...]]]rrrrr test_selfreferential_list?s  z*PrettyPrintTests.test_selfreferential_listcCs|d\}}||ddS)Nz-a = {} ; b = {'bar':a} ; a['foo'] = b ; id(a)z{'foo': {'bar': {...}}}rrrrr test_selfreferential_dictJsz*PrettyPrintTests.test_selfreferential_dictcCs.|d\}}|td|d||fdS)Nz: class Foo: pass foo = Foo() foo.an_attr = foo id(foo)1\) at remote 0x-?[0-9a-f]+>rrdrgrrrrrr 'test_selfreferential_old_style_instanceRs z8PrettyPrintTests.test_selfreferential_old_style_instancecCsX|d\}}|td|d||f|d\}}|td|d||fdS)NzB class Foo(object): pass foo = Foo() foo.an_attr = foo id(foo)rrzR class Foo(object): pass a = Foo() b = Foo() a.an_attr = b b.an_attr = a id(a)zZ\) at remote 0x-?[0-9a-f]+>\) at remote 0x-?[0-9a-f]+>rrrrr 'test_selfreferential_new_style_instance_s$  z8PrettyPrintTests.test_selfreferential_new_style_instancecCs6|d\}}||d|t|dtddS)Nzid(list(range(1000)))a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226...(truncated)iz...(truncated))rdrwlenrrrr test_truncationzs  z PrettyPrintTests.test_truncationcCs.|d\}}|td|d||fdS)Nz$import sys; id(sys.stdout.readlines)zOrrrrrr test_builtin_methods z$PrettyPrintTests.test_builtin_methodcCs6|jdddgd}|td|tjd||fdS)Nz: def foo(a, b, c): pass foo(3, 4, 5) id(foo.__code__)rEz:print (PyFrameObject*)(((PyCodeObject*)v)->co_zombieframe))rXrYzM.*\s+\$1 =\s+Frame 0x-?[0-9a-f]+, for file , line 3, in foo \(\)\s+.*r)r_rgrrrarrrrr test_framess  zPrettyPrintTests.test_frames)N)N) rmrnrorsrzr}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrr rp.s: ,      rp&Python was compiled with optimizationsc@s,eZdZddZddZddZddZd S) PyListTestscCs|||dSr)ri)rUZexpectedrhrrr assertListingszPyListTests.assertListingcCs$|j|dgd}|d|dS)Nzpy-listrWrYz 5 6 def bar(a, b, c): 7 baz(a, b, c) 8 9 def baz(*args): >10 id(42) 11 12 foo(1, 2, 3) r_rlrrUbtrrr test_basic_commands  zPyListTests.test_basic_commandcCs$|j|dgd}|d|dS)Nz py-list 9rzI 9 def baz(*args): >10 id(42) 11 12 foo(1, 2, 3) rrrrr test_one_abs_args  zPyListTests.test_one_abs_argcCs$|j|dgd}|d|dS)Nz py-list 1,3rzR 1 # Sample script for use by test_gdb.py 2 3 def foo(a, b, c): rrrrr test_two_abs_argss  zPyListTests.test_two_abs_argsN)rmrnrorrrrrrrr rs rc@sxeZdZeedeedddZeedddZ eedddZ eedeedd d Z d S) StackNavigationTests$test requires py-up/py-down commandsrcCs&|j|ddgd}||ddS)Npy-uprzp^.* #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) $r_rlrjrrrr test_pyup_commands  z&StackNavigationTests.test_pyup_commandcCs$|j|dgd}||ddS)Npy-downrz$Unable to find a newer python frame r_rlrirrrr test_down_at_bottoms  z(StackNavigationTests.test_down_at_bottomcCs(|j|dgdd}||ddS)Nrrrz%Unable to find an older python frame rrrrr test_up_at_tops  z#StackNavigationTests.test_up_at_topcCs&|j|gdd}||ddS)N)rrrrz^.* #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 10, in baz \(args=\(1, 2, 3\)\) id\(42\) $rrrrr test_up_then_downs  z&StackNavigationTests.test_up_then_downN) rmrnror skipUnlessHAS_PYUP_PYDOWNskipIfrrrrrrrrr rs      rc@seZdZeedddZeedddZddZeeddd Z eedd d Z eedd d Z eedddZ dS) PyBtTestsrcCs$|j|dgd}||ddS)Npy-btraF^.* Traceback \(most recent call first\): File ".*gdb_sample.py", line 10, in baz id\(42\) File ".*gdb_sample.py", line 7, in bar baz\(a, b, c\) File ".*gdb_sample.py", line 4, in foo bar\(a, b, c\) File ".*gdb_sample.py", line 12, in foo\(1, 2, 3\) rrrrr test_bts  zPyBtTests.test_btcCs$|j|dgd}||ddS)N py-bt-fullra>^.* #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \(a=1, b=2, c=3\) bar\(a, b, c\) #[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 12, in \(\) foo\(1, 2, 3\) rrrrr test_bt_fulls  zPyBtTests.test_bt_fullcCs@d}|j|dgd}|d||j|dgd}|d|dS)NaN from threading import Thread class TestThread(Thread): # These threads would run forever, but we'll interrupt things with the # debugger def run(self): i = 0 while 1: i += 1 t = {} for i in range(4): t[i] = TestThread() t[i].start() # Trigger a breakpoint on the main thread id(42) zthread apply all py-btrzWaiting for the GILzthread apply all py-bt-fullr_assertInrUrrcrrr test_threads(s zPyBtTests.test_threadscCsDd}|j|gdd}|d||j|gdd}|d|dS)NzRfrom gc import collect id(42) def foo(): collect() def bar(): foo() bar() )break update_refscontinuerrzGarbage-collecting)rrrrrrrr test_gcHs zPyBtTests.test_gcc CsdD]\}}}dD]}||d|td|d|d|d}|j||ddgd d }|d |||j||d gd d }|d |d||Wdq1s0YqqdS)N))Z meth_varargsr$r )Zmeth_varargs_keywordsr$r )Zmeth_oz[]r )Z meth_noargsr$r )Z meth_fastcallr$r )Zmeth_fastcall_keywordsr$r )Z _testcapiz_testcapi.MethClassz_testcapi.MethClass()z_testcapi.MethStatic().zi import _testcapi def foo(): (zy) def bar(): foo() bar() rrT)rXrYr[z File "", line 7, in foo File "", line 11, in )rrr_rjrrrr test_try_finally_linenos z!PyBtTests.test_try_finally_linenoN) rmrnrorrrrrrrrrrrrrr rs2     7 rc@speZdZeedddZeedeedddZ eedddZ eedd d Z d S) PyPrintTestsrcCs&|j|ddgd}||ddS)Nrz py-print argsrz".*\nlocal 'args' = \(1, 2, 3\)\n.*rrrrr rs  zPyPrintTests.test_basic_commandrcCs&|j|gdd}||ddS)N)rrz py-print cz py-print bz py-print arz3.*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*rrrrr test_print_after_ups  z PyPrintTests.test_print_after_upcCs&|j|ddgd}||ddS)Nrzpy-print __name__rz&.*\nglobal '__name__' = '__main__'\n.*rrrrr test_printing_globals  z!PyPrintTests.test_printing_globalcCs&|j|ddgd}||ddS)Nrz py-print lenrzV.*\nbuiltin 'len' = \n.*rrrrr test_printing_builtins  z"PyPrintTests.test_printing_builtinN) rmrnrorrrrrrrrrrrrr rs"    rc@sDeZdZeedddZeedeedddZ dS) PyLocalsTestsrcCs&|j|ddgd}||ddS)Nr py-localsrz.*\nargs = \(1, 2, 3\)\n.*rrrrr rs  z PyLocalsTests.test_basic_commandrcCs&|j|gdd}||ddS)N)rrrrz.*\na = 1\nb = 2\nc = 3\n.*rrrrr test_locals_after_ups  z"PyLocalsTests.test_locals_after_upN) rmrnrorrrrrrrrrrr rs  rcCs4tjr0tdttftD]}td|qdS)NzGDB version %s.%s:z )rverboserTr9r: gdb_versionrS)r]rrr setUpModules r__main__)3r5platformrr rOr*rrtestrZ test.supportrrr!rr9r:rZis_python_buildZpython_compilerr+pathrdirnamerPr;rLr/rNr@Z gdbpy_versionrBZ gdbpy_errorsrfrrDrr`rZPGOZTestCaserFrprrrrrrrmmainrrrr sz             "(-V#