Ë ‚Ö¦i™ãóv—dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZGd„de«Zgd¢Zd„Zd„ZGd „d e«ZGd „d e«ZGd „de«ZdZGd„dej<ej>«Z e�Pgd¢Z!e!D],Z"ee#e de"z«jjI«dzz ZŒ.ee jJjz Z[!["d#d„Z&d#d„Z'd„Z(d„Z)ddœd„Z*d$d„Z+d„Z,dZ-d„Z.d„Z/d Z0d!„Z1e2d"k(rddl3Z3e3jb«yy)%a½ The Python Debugger Pdb ======================= To use the debugger in its simplest form: >>> import pdb >>> pdb.run('') The debugger's prompt is '(Pdb) '. This will stop in the first function call in . Alternatively, if a statement terminated with an unhandled exception, you can use pdb's post-mortem facility to inspect the contents of the traceback: >>> >>> import pdb >>> pdb.pm() The commands recognized by the debugger are listed in the next section. Most can be abbreviated as indicated; e.g., h(elp) means that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel', nor as 'H' or 'Help' or 'HELP'). Optional arguments are enclosed in square brackets. Alternatives in the command syntax are separated by a vertical bar (|). A blank line repeats the previous command literally, except for 'list', where it lists the next 11 lines. Commands that the debugger doesn't recognize are assumed to be Python statements and are executed in the context of the program being debugged. Python statements can also be prefixed with an exclamation point ('!'). This is a powerful way to inspect the program being debugged; it is even possible to change variables or call functions. When an exception occurs in such a statement, the exception name is printed but the debugger's state is not changed. The debugger supports aliases, which can save typing. And aliases can have parameters (see the alias help entry) which allows one a certain level of adaptability to the context under examination. Multiple commands may be entered on a single line, separated by the pair ';;'. No intelligence is applied to separating the commands; the input is split at the first ';;', even if it is in the middle of a quoted string. If a file ".pdbrc" exists in your home directory or in the current directory, it is read in and executed as if it had been typed at the debugger prompt. This is particularly useful for aliases. If both files exist, the one in the home directory is read first and aliases defined there can be overridden by the local file. This behavior can be disabled by passing the "readrc=False" argument to the Pdb constructor. Aside from aliases, the debugger is not directly programmable; but it is implemented as a class from which you can derive your own debugger class, which you can make as fancy as you like. Debugger commands ================= éN)ÚUnioncó—eZdZdZy)ÚRestartzBCauses a debugger to be restarted for the debugged python program.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óú/usr/lib64/python3.12/pdb.pyrr[s„ÙLØr r) ÚrunÚpmÚPdbÚrunevalÚrunctxÚruncallÚ set_traceÚ post_mortemÚhelpcó@—tjdtj|«z«} tj|«}|5t |d¬«D]&\}}|j|«sŒ|||fccddd«S ddd«y#t $rYywxYw#1swYyxYw)Nzdef\s+%s(\s*\[.+\])?\s*[(]é)Ústart)ÚreÚcompileÚescapeÚtokenizeÚopenÚOSErrorÚ enumerateÚmatch)ÚfuncnameÚfilenameÚcreÚfpÚlinenoÚlines r Ú find_functionr'bs’€Ü �*‰*Ð2´R·Y±Y¸xÓ5HÑHÓ I€CðÜ �]‰]˜8Ó $ˆò Ü% b°×2‰LˆF�DØ�y‰y˜�Ø ¨6Ð1Ñ1÷ ‰Ù2÷ ð øô òÙðú÷ ð ús)­BÁ%BÁ*BÁ:B BÂBÂBcó†—ttj|««}|j«|D]\}}||k\sŒ |cSy©Nr)ÚlistÚdisÚfindlinestartsÚreverse)ÚcodeÚlastiÚ linestartsÚir%s r Ú lasti2linenor2osB€Ü”c×(Ñ(¨Ó.Ó/€JØ×ÑÔÛ‰ ˆˆ6Ø �A‹:ØŠMð ð r có—eZdZdZd„Zy)Ú_rstrz#String that doesn't quote its repr.có—|S©Nr ©Úselfs r Ú__repr__z_rstr.__repr__zs€Øˆ r N)rrrr r9r r r r4r4xs „Ù-ór r4cóT‡—eZdZˆfd„Zd„Zed„«Zed„«Zed„«ZˆxZ S)Ú _ScriptTargetcóp•—t‰|�|tjj |««}||_|Sr6)ÚsuperÚ__new__ÚosÚpathÚrealpathÚorig)ÚclsÚvalÚresÚ __class__s €r r>z_ScriptTarget.__new__s0ø€ä‰g‰o˜c¤2§7¡7×#3Ñ#3°CÓ#8Ó9ˆðˆŒàˆ r có�—tjj|«s,td|jd«t j d«tjj|«r,td|jd«t j d«tjj|«t jd<y)NzError:zdoes not existrzis a directoryr) r?r@ÚexistsÚprintrBÚsysÚexitÚisdirÚdirnamer7s r Úcheckz_ScriptTarget.checkˆsv€Ü�w‰w�~‰~˜dÔ#Ü �(˜DŸI™IÐ'7Ô 8Ü �H‰H�QŒKÜ �7‰7�=‰=˜Ô Ü �(˜DŸI™IÐ'7Ô 8Ü �H‰H�QŒKô—g‘g—o‘o dÓ+Œ�‰�Š r có—|Sr6r r7s r r"z_ScriptTarget.filename“s€àˆ r có(—td|td¬«S)NÚ__main__)rÚ__file__Ú __builtins__Ú__spec__)ÚdictrSr7s r Ú namespacez_ScriptTarget.namespace—s€äØØÜ%Øô  ð r có†—tj|«5}d|j«›d|›d�cddd«S#1swYyxYw)Nz exec(compile(z, z , 'exec')))ÚioÚ open_codeÚread)r8r$s r r.z_ScriptTarget.code s4€ä �\‰\˜$Ô  2Ø" 2§7¡7£9 -¨r°$°¸ÐD÷ × Ò ús –7·A) rrrr>rNÚpropertyr"rVr.Ú __classcell__)rFs@r r;r;~sKø„ôò ,ðñóððñ óð ðñEóôEr r;cóv—eZdZd„Zej d„«Zed„«Zed„«Z ed„«Z ed„«Z y)Ú _ModuleTargetcóö— |jy#t$r-}td|›�«tjd«Yd}~yd}~wt $r,t j«tjd«YywxYw)Nz ImportError: r)Ú_detailsÚ ImportErrorrIrJrKÚ ExceptionÚ tracebackÚ print_exc)r8Úes r rNz_ModuleTarget.check§sY€ð Ø �M‹MøÜò Ü �M ! Ð%Ô &Ü �H‰H�Q�K‰KûÜò Ü × Ñ Ô !Ü �H‰H�QŽKð ús‚ � A8˜#AÁ5A8Á7A8có,—ddl}|j|«Sr))ÚrunpyÚ_get_module_details)r8rgs r r`z_ModuleTarget._details±s€ãØ×(Ñ(¨Ó.Ð.r có.—|jjSr6)r.Ú co_filenamer7s r r"z_ModuleTarget.filename¶s€à�y‰y×$Ñ$Ð$r có&—|j\}}}|Sr6©r`©r8ÚnameÚspecr.s r r.z_ModuleTarget.codeºó€àŸ=™=шˆd�D؈ r có&—|j\}}}|Sr6rlrms r Ú_specz_ModuleTarget._spec¿rpr có—tdtjjtjj |j ««|j j|j j|j t¬«S)NrQ)rrRÚ __package__Ú __loader__rTrS) rUr?r@ÚnormcaseÚabspathr"rrÚparentÚloaderrSr7s r rVz_ModuleTarget.namespaceÄsY€äØÜ—W‘W×%Ñ%¤b§g¡g§o¡o°d·m±mÓ&DÓEØŸ ™ ×)Ñ)Ø—z‘z×(Ñ(Ø—Z‘ZÜ%ô  ð r N) rrrrNÚ functoolsÚcached_propertyr`r[r"r.rrrVr r r r^r^¦sq„òð×Ññ/óð/ðñ%óð%ðñóððñóððñ óñ r r^z -> cóÈ—eZdZdZ dXd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZeZdYd„Z d„Z!e Z"eZ#eZ$d„Z%eZ&d „Z'd!„Z(d"„Z)eZ*d#„Z+eZ,d$„Z-eZ.d%„Z/eZ0d&„Z1e1Z2eZ3eZ4d'„Z5e5Z6e5Z7d(„Z8d)„Z9e9Z:d*„Z;e;Zd,„Z?e?Z@d-„ZAeAZBd.„ZCeCZDd/„ZEeEZFd0„ZGeGxZHZId1„ZJeJZKd2„ZLeZMd3„ZNeNZOeNZPd4„ZQd5„ZReRZSd6„ZTeTZUd7„ZVdZd8„ZWd9„ZXd:„ZYd;„ZZd<„Z[d=„Z\eZ]eZ^eZ_d>„Z`e`Zad?„ZbebZcd@„ZdeZed[dA„ZfdB„ZgeZhdC„ZieZjdD„ZkdE„ZldF„ZmdG„ZndH„ZodI„ZpgdJ¢ZqdK„ZresfdL„ZtdM„ZueuZvdN„ZwdO„ZxdP„ZydQeze{e|ffdR„Z}dSe~fdT„ZdU„Z€dV„Z�dW„Z‚y)\rNcóF—tjj||¬«tjj||||«t j d«|rd|_d|_i|_ i|_ d|_ d|_ i|_ ddl}|jd«d|_||_g|_|r� t)t*j,j/d«d ¬ «5}|j&j1|«ddd« t)d d ¬ «5}|j&j1|«ddd«i|_i|_i|_d|_d|_y#t $rYŒÇwxYw#1swYŒnxYw#t2$rYŒ|wxYw#1swYŒWxYw#t2$rYŒewxYw) N)Úskipzpdb.Pdbrz(Pdb) ÚFz `@#$%^&*()=+[{]}\|;:'",<>?z~/.pdbrczutf-8)Úencodingz.pdbrc)ÚbdbÚBdbÚ__init__ÚcmdÚCmdrJÚauditÚ use_rawinputÚpromptÚaliasesÚ displayingÚ mainpyfileÚ_wait_for_mainpyfileÚ tb_linenoÚreadlineÚset_completer_delimsraÚ allow_kbdintÚnosigintÚrcLinesrr?r@Ú expanduserÚextendrÚcommandsÚcommands_dopromptÚcommands_silentÚcommands_definingÚ commands_bnum) r8Ú completekeyÚstdinÚstdoutr~r‘ÚreadrcrŽÚrcFiles r rƒz Pdb.__init__Ûsy€ä �‰×ј DÐÔ)Ü �‰×ј˜{¨E°6Ô:Ü � ‰ �)ÔÙ Ø !ˆDÔ ØˆŒ ؈Œ ؈ŒØˆŒØ$)ˆÔ!؈Œð Û à × )Ñ )Ð*MÔ Nð"ˆÔØ ˆŒ ðˆŒ Ù ð Üœ"Ÿ'™'×,Ñ,¨ZÓ8À7ÕKÈvØ—L‘L×'Ñ'¨Ô/÷Lð ܘ(¨WÕ5¸Ø—L‘L×'Ñ'¨Ô/÷6𠈌 Ø!#ˆÔà!ˆÔà!&ˆÔà!ˆÕøô5ò Ù ð ú÷LÐKûäò Ùð ú÷6Ð5ûäò Ùð úsf EÂ:*E9Ã$E-ÄE9Ä FÄFÄ2FÅ E*Å)E*Å-E6Å2E9Å9 FÆFÆFÆ FÆ F ÆF cóŒ—|jrt‚|jd«|j«|j |«y)Nz- Program interrupted. (Use 'cont' to resume).)r�ÚKeyboardInterruptÚmessageÚset_stepr)r8ÚsignumÚframes r Úsigint_handlerzPdb.sigint_handler s3€Ø × Ò Ü#Ð #Ø � ‰ ÐEÔFØ � ‰ ŒØ �‰�uÕr cób—tjj|«|j«yr6)r�r‚ÚresetÚforgetr7s r r§z Pdb.resets€Ü �‰� ‰ �dÔØ � ‰ � r cóú—d|_g|_d|_t|d«r2|jr&|jj j dd«d|_i|_|jj«y)NrÚcurframeÚ__pdb_convenience_variables) r%ÚstackÚcurindexÚhasattrrªÚ f_globalsÚpopÚcurframe_localsr�Úclearr7s r r¨z Pdb.forgetsa€ØˆŒ ؈Œ ؈Œ Ü �4˜Ô $¨¯ªØ �M‰M× #Ñ #× 'Ñ 'Ð(EÀtÔ L؈Œ Ø!ˆÔØ �‰×ÑÕr cóž—|j«|j||«\|_|_|rRt |j j |j«}||j|j <|j}|rŒR|j|jd|_ |jj|_ |j|jd|j«|jrV|jD�cgc]3}|j«r!|j«j!d«s|‘Œ5c}|_g|_yycc}w)NrÚ_frameÚ#)r¨Ú get_stackr¬r­r2Útb_frameÚf_codeÚtb_lastir�Útb_nextrªÚf_localsr±Úset_convenience_variabler’ÚstripÚ startswithÚcmdqueue)r8ÚfÚtbr%r&s r Úsetupz Pdb.setups€Ø � ‰ Œ Ø$(§N¡N°1°bÓ$9Ñ!ˆŒ �D”MÙô" "§+¡+×"4Ñ"4°b·k±kÓBˆFØ*0ˆD�N‰N˜2Ÿ;™;Ñ 'Ø—‘ˆBò 🠙  4§=¡=Ñ1°!Ñ4ˆŒ ð $Ÿ}™}×5Ñ5ˆÔØ ×%Ñ% d§m¡m°X¸t¿}¹}ÔMà �<Š<à!%§¢óÙ!-˜Ø—:‘:”<¨¯ © « ×(?Ñ(?ÀÔ(Dò ñˆDŒMðˆD�Lð ùòsÄ8E cóˆ—|jry|j|«r$|jd«|j|d«yy)znThis method is called when there is the remote possibility that we ever need to stop in this function.Nz--Call--)rŒÚ stop_herer¡Ú interaction)r8r¤Ú argument_lists r Ú user_callz Pdb.user_call9s=€ð × $Ò $Ø Ø �>‰>˜%Ô Ø �L‰L˜Ô $Ø × Ñ ˜U DÕ )ð !r cóØ—|jr:|j|j|jj«k7ryd|_|j |«r|j |d«yy)z;This function is called when we stop or break at this line.NF)rŒr‹Úcanonicr¸rjÚ bp_commandsrÅ)r8r¤s r Ú user_linez Pdb.user_lineBsX€à × $Ò $Ø—‘ 4§<¡<°· ± ×0HÑ0HÓ#IÒIØØ(-ˆDÔ %Ø × Ñ ˜EÔ "Ø × Ñ ˜U DÕ )ð #r cóÖ—t|dd«rÜ|j|jvrÄ|j}d|_|j}|j |d«|j|D]}|j |«Œ||_|j |s(|j|j|j«|j|r|j«|j«yy)z¾Call every command that was set for the current active breakpoint (if there is one). Returns True if the normal interaction function must be called, False otherwise.Ú currentbpFrNr) ÚgetattrrÍr•ÚlastcmdrÂÚonecmdr—Úprint_stack_entryr¬r­r–Ú_cmdloopr¨)r8r¤rÍÚ lastcmd_backr&s r rÊzPdb.bp_commandsKs¼€ô �4˜ eÔ ,Ø�~‰~ §¡Ñ.ØŸ™ˆI؈DŒNØŸ<™<ˆLØ �J‰J�u˜dÔ #ØŸ ™  iÔ0�Ø— ‘ ˜DÕ!ð1à'ˆDŒLØ×'Ñ'¨ Ò2Ø×&Ñ& t§z¡z°$·-±-Ñ'@ÔAØ×%Ñ% iÒ0Ø— ‘ ”Ø �K‰KŒMØ Ør có¨—|jry||jd<|j|d|«|jd«|j |d«y)z7This function is called when a return trap is set here.NÚ __return__Ú_retvalz --Return--)rŒr»r¼r¡rÅ)r8r¤Ú return_values r Ú user_returnzPdb.user_returncsJ€à × $Ò $Ø Ø'3ˆ�‰�|Ñ$Ø ×%Ñ% e¨Y¸ ÔEØ � ‰ �\Ô"Ø ×ј Õ%r cóú—|jry|\}}}||f|jd<|j|d|«|s |turdnd}|j |›|j |«›�«|j ||«y)zoThis function is called if an exception occurs, but only if we are to stop at or just below this level.NÚ __exception__Ú _exceptionz Internal r)rŒr»r¼Ú StopIterationr¡Ú _format_excrÅ)r8r¤Úexc_infoÚexc_typeÚ exc_valueÚ exc_tracebackÚprefixs r Úuser_exceptionzPdb.user_exceptionls‡€ð × $Ò $Ø Ø-5Ñ*ˆ�)˜]Ø*2°IÐ*=ˆ�‰�Ñ'Ø ×%Ñ% e¨\¸9ÔEñ&3Ø(0´MÑ(AñØHJð à � ‰ ™v t×'7Ñ'7¸ Ô'BÐCÔDØ ×ј  Õ.r có†— d|_|j«d|_y#t$r|jd«YnwxYwŒA)NTFz--KeyboardInterrupt--)r�Úcmdloopr r¡r7s r rÒz Pdb._cmdloop€sI€Øð 6ð%)�Ô!Ø— ‘ ”Ø$)�Ô!ØøÜ$ò 6Ø— ‘ Ð4Ö5ð 6úðs ƒ"¢?¾?c ó<—|jj|j«}|ru|j«D]a\}}|j |«}||usŒ||k7sŒ"|||<|j d|›d|j ||«›d|j ||«›d�«Œcyy)Núdisplay ú: z [old: Ú])rŠÚgetrªÚitemsÚ_getval_exceptr¡Ú _safe_repr)r8rŠÚexprÚoldvalueÚnewvalues r Ú _show_displayzPdb._show_displayŽs•€Ø—_‘_×(Ñ(¨¯©Ó7ˆ Ù Ø",×"2Ñ"2Ö"4‘��hØ×.Ñ.¨tÓ4�ð 8Ò+°¸HÓ0DØ'/�J˜tÑ$Ø—L’LÚ"&¨¯©¸À$Õ(GØ"&§/¡/°(¸DÕ"Að"CõDñ#5ð r cóÈ—tjr> tjtjtj«dt_|j ||«|j jd«|j«|j r,|j ddk(r|j j«|j«y#t$rYŒ‘wxYw)NÚ_pdbcmd_print_frame_statuséÿÿÿÿ) rÚ_previous_sigint_handlerÚsignalÚSIGINTÚ ValueErrorrÂr¿ÚappendrÒr°r¨)r8r¤rcs r rÅzPdb.interactionœs£€ä × 'Ò 'ð 4Ü— ‘ œfŸm™m¬S×-IÑ-IÔJð04”Ô,Ø � ‰ �5˜)Ô$ð � ‰ ×ÑÐ9Ô:Ø � ‰ Œà �=Š=˜TŸ]™]¨2Ñ.Ð2NÒNØ �M‰M× Ñ Ô Ø � ‰ � øôò Ùð ús’2Cà C!à C!có>—|�|jt|««yy)z{Custom displayhook for the exec in default(), which prevents assignment of the _ variable in the builtins. N)r¡Úrepr)r8Úobjs r Ú displayhookzPdb.displayhook²s€ð ˆ?Ø �L‰Lœ˜c›Õ #ð r cóV—|dddk(r|ddj«}|j}|jj} t |dzdd«}t j }t j}t j} |jt _|j t _|jt _t|||«|t _|t _|t _y#|t _|t _|t _wxYw#|j«YyxYw)NrÚ!Ú úÚsingle) r½r±rªr¯rrJrœr›rýÚexecÚ _error_exc)r8r&ÚlocalsÚglobalsr.Ú save_stdoutÚ save_stdinÚsave_displayhooks r Údefaultz Pdb.defaultºsß€Ø ��ˆ8�sŠ? 4¨¨ 8§>¡>Ó#3˜DØ×%Ñ%ˆØ—-‘-×)Ñ)ˆð ܘ4 $™;¨ °8Ó<ˆDÜŸ*™*ˆKÜŸ™ˆJÜ"Ÿ™Ð ð 3Ø ŸJ™J”” Ø!Ÿ[™[”” Ø"&×"2Ñ"2””Ü�T˜7 FÔ+à(”” Ø&”” Ø"2”•øð)”” Ø&”” Ø"2”•ûð Ø �O‰OÖ ús%¿ADÂA C.à !DÃ.#DÄDÄD(có—d|vr|Sdx}}g} tjtj|«j«D][}|\}}}} } |t j k(r |dk(r|| }}Œ(||k(sŒ.|t jk(sŒB|j|d| d|f«Œ] |s|Sd} g} |D]#\}} } | j|| |d| ›d�z«| } Œ%| j|| d«dj| «S#tj$r|cYSwxYw) zÇReplace the convenience variables in 'line' with their values. e.g. $foo is replaced by __pdb_convenience_variables["foo"]. Note: such pattern in string literals will be skippedÚ$rôrrz__pdb_convenience_variables["z"]Nr) rÚgenerate_tokensrXÚStringIOrŽÚtokenÚOPÚNAMErùÚ TokenErrorÚjoin)r8r&Ú dollar_startÚ dollar_endÚreplace_variablesÚtÚ token_typeÚ token_stringrÚendÚ_Úlast_endÚ line_piecesrns r Ú_replace_convenience_variablesz"Pdb._replace_convenience_variablesÏs8€ð �d‰?؈Kà$&Ð&ˆ �zØÐð Ü×-Ñ-¬b¯k©k¸$Ó.?×.HÑ.HÖI�Ø:;Ñ7� ˜L¨%°°aؤ§¡Ò)¨l¸cÒ.AØ/4°c *‘LؘjÓ(¨Z¼5¿:¹:Ó-Eà%×,Ñ,¨l¸1©o¸sÀ1¹vÀ|Ð-TÕUñ Jñ!؈KàˆØˆ Û 1Ñ ˆE�3˜Ø × Ñ ˜t H¨UÐ3Ð8UÐVZÐU[Ð[]Ð6^Ñ^Ô _؉Hð!2ð ×ј4   ˜?Ô+à�w‰w�{Ó#Ð#øô×"Ñ"ò ØŠKð úsŽAC4Á.C4ÂC4Ã4D Ä D cób—|j«s|S|j«}|d|jvr‡|j|d}d}|ddD]%}|jdt |«z|«}|dz }Œ'|jddj |dd««}|j«}|d|jvrŒ‡|ddk7r[|j d«}|dk\rE||d zdj«}|jjd|«|d|j«}|j|«}|S) z*Handle alias expansion and ';;' separator.rrNÚ%z%*Ú Úaliasz;;é) r½Úsplitr‰ÚreplaceÚstrrÚfindÚlstripr¿ÚinsertÚrstripr)r8r&ÚargsÚiiÚtmpArgÚmarkerÚnexts r Úprecmdz Pdb.precmdðs-€à�z‰zŒ|؈KØ�z‰z‹|ˆØ�1‰g˜Ÿ™Ñ%Ø—<‘<  Q¡Ñ(ˆD؈Bؘq˜r›(�Ø—|‘| C¬#¨b«'¡MØ&,ó.�à�a‘‘ð#ð—<‘<  c§h¡h¨t°A°B¨xÓ&8Ó9ˆDØ—:‘:“<ˆDð�1‰g˜Ÿ™Ò%ð �‰7�gÒ Ø—Y‘Y˜t“_ˆFؘŠ{à˜F 1™H˜I�×-Ñ-Ó/�Ø— ‘ ×$Ñ$ Q¨Ô-ؘG˜V�}×+Ñ+Ó-�ð×2Ñ2°4Ó8ˆàˆ r có—|jsd|jd«r3|j|«\}}}t||«rt ||«|«St j j||«S|j|«S)zÒInterpret the argument as though it had been typed in response to the prompt. Checks whether this line is typed at the normal prompt or in a breakpoint command list definition. Ú_pdbcmd) r˜r¾Ú parseliner®rÎr„r…rÐÚhandle_command_def)r8r&ÚcommandÚargs r rÐz Pdb.onecmd sr€ð×%Ò%Ø�‰˜yÔ)Ø%)§^¡^°DÓ%9Ñ"�˜˜dܘ4 Ô)Ø1œ7 4¨Ó1°#Ó6Ð6Ü—7‘7—>‘> $¨Ó-Ð -à×*Ñ*¨4Ó0Ð 0r cóÀ—|j|«\}}}|sy|dk(rd|j|j<y|dk(ry|j|j}|r|j |dz|z«n|j |« t |d|z«}|j|jvrd|j|j<yy#t $r|j}YŒJwxYw)z8Handles one command line during command list definition.FÚsilentTrr!Údo_) r3r—r™r•rùrÎÚAttributeErrorr rÚcommands_resumingr–)r8r&r„r6ÚcmdlistÚfuncs r r4zPdb.handle_command_defsÜ€àŸ™¨Ó-‰ˆˆS�$ÙØØ �(Š?Ø7;ˆD× Ñ  ×!3Ñ!3Ñ 4ØØ �EŠ\ØØ—-‘- × 2Ñ 2Ñ3ˆÙ Ø �N‰N˜3˜s™7 3™;Õ 'à �N‰N˜3Ô ð ܘ4 ¨¡Ó-ˆDð �=‰=˜D×2Ñ2Ñ 2Ø9>ˆD× "Ñ " 4×#5Ñ#5Ñ 6ØØøô ò Ø—<‘<ŠDð úsÂCÃCÃCcó2—t||j¬«y)N©Úfile©rIrœ©r8Úmsgs r r¡z Pdb.message9s€Ü ˆc˜Ÿ ™ Ö$r có4—td||j¬«y)Nz***r?rArBs r Úerrorz Pdb.error<s€Ü ˆe�S˜tŸ{™{Ö+r cób—d|jvri|jd<||jd|<y)Nr«)r¯)r8r¤rnÚvalues r r¼zPdb.set_convenience_variableAs1€Ø (°·±Ñ ?Ø=?ˆE�O‰OÐ9Ñ :Ø?Dˆ�‰Ð5Ñ6°tÒ¤c¨!£f×&7Ñ&7¸Ô&=ô�A•Ð$Hò?ð ?ùó?s§1Acó—|jsgSi|jj¥|j¥}d|vry|jd«} ||d}|ddD]}t ||«}Œ dj|dd«dz} t|«D� cgc]} | j|d«sŒ| | z‘Œc} S|j«D� cgc]} | j|«sŒ| ‘Œc} S#t t f$rgcYSwxYwcc} wcc} w)NÚ.rrrô) rªr¯r±r$rÎÚKeyErrorr:rÚdirr¾Úkeys) r8rSr&rTrUÚnsÚdottedrüÚpartrâÚns r rOzPdb._complete_expressioncs €à�}Š}؈IðA�— ‘ ×'Ñ'Ð @¨4×+?Ñ+?Ð @ˆØ �$‰;ð—Z‘Z “_ˆFð Ø˜ ™‘m�Ø" 1 R›L�DÜ! # tÓ,‘Cñ)ð—X‘X˜f S b˜kÓ*¨SÑ0ˆFÜ(+¨C¬ÓM© 1°A·L±LÀÈÁÕ4L�F˜Q“J¨ÑMÐ Mð "Ÿw™wœyÓ?™y˜!¨A¯L©L¸Õ,>’A˜yÑ?Ð ?øô œnÐ-ò Ø’ ð üòNùò@s*Á C  C7Â&C7ÃC<ÃC<à C4Ã3C4cót—|j|j|j«|j«yr6)rÑr¬r­rñ©r8r6s r rózPdb._pdbcmd_print_frame_status~s)€Ø ×јtŸz™z¨$¯-©-Ñ8Ô9Ø ×ÑÕr có�—|s'ttjj«dz }n t |«} |j |«||_||jvr-|j||j||j|f}nd}g|j|<d|j|<d|j|<|j}d|_ d|_ |j«d|_ ||_ y#|j d«YyxYw#t$r}|j d|z«Yd}~yd}~wwxYw#t$rt|r7|d|j|<|d|j|<|d |j|<n'|j|=|j|=|j|=|j d «YŒÍwxYw#d|_ ||_ wxYw) a:(Pdb) commands [bpnumber] (com) ... (com) end (Pdb) Specify a list of commands for breakpoint number bpnumber. The commands themselves are entered on the following lines. Type a line containing just 'end' to terminate the commands. The commands are executed when the breakpoint is hit. To remove all commands from a breakpoint, type commands and follow it immediately with end; that is, give no commands. With no bpnumber argument, commands refers to the last breakpoint set. You can use breakpoint commands to start your program up again. Simply use the continue command, or step, or any other command that resumes execution. Specifying any command resuming execution (currently continue, step, next, return, jump, quit and their abbreviations) terminates the command list (as if that command was immediately followed by end). This is because any time you resume execution (even with a simple next or step), you may encounter another breakpoint -- which could have its own command list, leading to ambiguities about which list to execute. If you use the 'silent' command in the command list, the usual message about stopping at a breakpoint is not printed. This may be desirable for breakpoints that are to print a specific message and then continue. If none of the other commands print anything, you will see no sign that the breakpoint was reached. rz.Usage: commands [bnum] ... endNzcannot set commands: %sTFz(com) rr#z1command definition aborted, old commands restored)Úlenr�r[r\ÚintrEÚget_bpbynumberrør™r•r–r—rˆr˜rår )r8r6ÚbnumÚerrÚold_command_defsÚ prompt_backs r Ú do_commandszPdb.do_commands†sÌ€ñJÜ”s—~‘~×0Ñ0Ó1°AÑ5‰Dð ܘ3“x�ð Ø × Ñ  Ô %ð "ˆÔà �4—=‘=Ñ Ø $§ ¡ ¨dÑ 3Ø $× 6Ñ 6°tÑ <Ø $× 4Ñ 4°TÑ :ð <Ñ ð $Ð Ø ˆ� ‰ �dÑØ'+ˆ×јtÑ$Ø%*ˆ×јTÑ"à—k‘kˆ ؈Œ Ø!%ˆÔð &Ø �L‰LŒNð&+ˆDÔ "Ø%ˆD�KøðO Ø— ‘ ÐMÔNÙûôò Ø �J‰JÐ0°3Ñ6Ô 7Ü ûð ûô*!ò LáØ&6°qÑ&9�— ‘ ˜dÑ#Ø/?ÀÑ/B�×&Ñ& tÑ,Ø-=¸aÑ-@�×$Ñ$ TÒ*à—M‘M $Ð'Ø×*Ñ*¨4Ð0Ø×(Ñ(¨Ð.Ø �J‰JÐJÖ Kð Lûð&+ˆDÔ "Ø%ˆD�KúsG« C3·D ÃD5Ã3DÄ D2ÄD-Ä-D2Ä5A:F2Æ/F5Æ1F2Æ2F5Æ5GcóÌ—|s_|jrR|jd«tjjD]$}|sŒ|j|j ««Œ&yd}d}d}|j d«}|dkDrT||dzdj«}|j|«x}r|jd|›d|›�«y|d|j«}|jd«} d} | dk\r`|d| j«}|j|«} | s|jd |z«y| }|| dzdj«} t|«}n t|«}|s|j5«}|j7||«}|rt|j9||||| «}|r|j|«y|j;||«d }|jd|j<|j>|j@fz«yy#t$r|jd |z«YywxYw#t$rÆ t||j j"|j$«} n #|} YnxYw t'| d «r | j(} | j*} | j,} | j.}| j0}nB#|j3|«\}}}|s|jd |z«YYy|} t|«}YnxYwY�ŒŒwxYw)a³b(reak) [ ([filename:]lineno | function) [, condition] ] Without argument, list all breaks. With a line number argument, set a break at this line in the current file. With a function name, set a break at the first executable line of that function. If a second argument is present, it is a string specifying an expression which must evaluate to true before the breakpoint is honored. The line number may be prefixed with a filename and a colon, to specify a breakpoint in another file (probably one that hasn't been loaded yet). The file is searched for on sys.path; the .py suffix may be omitted. z!Num Type Disp Enb WhereNrJrrúInvalid condition rèrIz%r not found from sys.pathzBad lineno: %sÚ__func__zJThe specified object %r is not a function or was not found along sys.path.rôzBreakpoint %d at %s:%d)!Úbreaksr¡r�r[r\Úbpformatr'r(Ú_compile_error_messagerEr*ÚrfindÚ lookupmodulerlrøÚevalrªr¯r±r®ruÚ__code__Úco_nameÚco_firstlinenorjÚlineinfoÚ defaultFileÚ checklineÚ set_breakÚ get_breaksÚnumberr@r&)r8r6Ú temporaryr]r"r%ÚcondÚcommaroÚcolonr!rÀr=r.ÚokÚlnr&s r Údo_breakz Pdb.do_breakÛsØ€ñ Ø�{Š{Ø— ‘ Ð@ÔAÜŸ.™.×3Ô3�BÚØŸ ™  R§[¡[£]Õ3ð4ð ðˆØˆØˆØ—‘˜“ ˆØ �1Š9à�u˜Q‘w�x�=×'Ñ'Ó)ˆDØ×1Ñ1°$Ó7Ð7ˆsÐ7Ø— ’ º¹sÐCÔDØØ�f�u�+×$Ñ$Ó&ˆCà— ‘ ˜#“ˆØˆØ �AŠ:ؘ6˜E�{×)Ñ)Ó+ˆHØ×!Ñ! (Ó+ˆAÙØ— ‘ Ð7¸(ÑBÔCØà�Ø�e˜A‘g�h�-×&Ñ&Ó(ˆCð ܘS›‘ð  %ܘS›�ñ4Ø×'Ñ'Ó)ˆHà�~‰~˜h¨Ó/ˆÙ à—.‘. ¨4°¸DÀ(ÓKˆCÙØ— ‘ ˜3•à—_‘_ X¨tÓ4°RÑ8�Ø— ‘ Ð5Ø Ÿi™i¨¯©°"·'±'Ð:ñ;õ<ð øôIò Ø— ‘ Ð+¨cÑ1Ô2Ùð ûôò %ðÜ Ø $§ ¡ × 7Ñ 7Ø $× 4Ñ 4ó6‘DøðØ’Dúð%ܘt ZÔ0Ø#Ÿ}™}˜ØŸ=™=�Dð $Ÿ|™|�HØ!×0Ñ0�FØ#×/Ñ/‘Høð%à)-¯©°sÓ);Ñ&�R˜ 2ÙØŸ ™ ð$FØHKñ$LôMâØ!�HÜ  ›W’Fýð1 %úsaÄ> G1Å HÇ1HÈHÈ K#È+I É K#É IÉK#ÉAJÊK#Ê-KË K#Ë KËK#Ë"K#có€—|jjj}|dk(r|jr |j}|S)zProduce a reasonable default.z)rªr¸rjr‹)r8r"s r r€zPdb.defaultFile<s3€à—=‘=×'Ñ'×3Ñ3ˆØ �zÒ ! d§o¢oØ—‘ˆH؈r có(—|j|d«y)z·tbreak [ ([filename:]lineno | function) [, condition] ] Same arguments as break, but sets a temporary breakpoint: it is automatically deleted when first hit. rN)r‹ris r Ú do_tbreakz Pdb.do_tbreakHs€ð � ‰ �c˜1Õr cóÀ—d}|jd«}t|«dk(r|dj«}n$t|«dk(r|dj«}n|S|dk(r|S|jd«}|ddk(r|d=t|«dk(r|S|j«}t|«dk(r|d}n|j |d«}|r|}|d}t ||«} | xs|S) N)NNNÚ'rrérr`r8)r$rkr½r€rzr') r8Ú identifierÚfailedÚidstringÚidÚpartsÚfnameÚitemrÀÚanswers r rz Pdb.lineinfoRsó€Ø#ˆà×#Ñ# CÓ(ˆÜ ˆx‹=˜AÒ à˜!‘×"Ñ"Ó$‰BÜ �‹]˜aÒ à˜!‘×"Ñ"Ó$‰BàˆMØ �Š8˜F�]Ø—‘˜“ ˆà �‰8�vÒ Ø�a�Ü�5‹z˜QŠØ� à× Ñ Ó"ˆÜ ˆu‹:˜Š?ؘ‘8‰Dð×!Ñ! %¨¡(Ó+ˆAÙØ�ؘ‘8ˆDܘt UÓ+ˆØÒ˜Ðr có—t|dd«}|r |jnd}tj|||«}|s|j d«y|j «}|r|ddk(s|dddk(s|dddk(r|j d «y|S) zÈCheck whether specified line seems to be executable. Return `lineno` if it is, 0 if not (e.g. a docstring, comment, blank line or EOF). Warning: testing is not comprehensive. rªNz End of filerrµr‘z"""z'''zBlank or comment)rÎr¯Ú linecacheÚgetliner¡r½rE)r8r"r%r¤rWr&s r r�z Pdb.checkliness�€ô˜˜j¨$Ó/ˆÙ#(�—’¨dˆÜ× Ñ  ¨6°5Ó9ˆÙØ �L‰L˜Ô 'ØØ�z‰z‹|ˆá˜˜a™ CšØ�2�Aˆh˜%Ò D¨¨! H°Ò$5Ø �J‰JÐ)Ô *ØØˆ r cóì—|j«}|D]8} |j|«}|j«|jd|z«Œ:y#t$r}|j |«Yd}~Œ[d}~wwxYw)z‡enable bpnumber [bpnumber ...] Enables the breakpoints given as a space separated list of breakpoint numbers. z Enabled %sN)r$rmÚenabler¡rørE©r8r6r+r1r]ros r Ú do_enablez Pdb.do_enable‰si€ð �y‰y‹{ˆÛˆAð 0Ø×(Ñ(¨Ó+�ð— ‘ ” Ø— ‘ ˜\¨BÑ.Õ/ñøôò Ø— ‘ ˜3—‘ûð úó—AÁ A3ÁA.Á.A3cóì—|j«}|D]8} |j|«}|j«|jd|z«Œ:y#t$r}|j |«Yd}~Œ[d}~wwxYw)aOdisable bpnumber [bpnumber ...] Disables the breakpoints given as a space separated list of breakpoint numbers. Disabling a breakpoint means it cannot cause the program to stop execution, but unlike clearing a breakpoint, it remains in the list of breakpoints and can be (re-)enabled. z Disabled %sN)r$rmÚdisabler¡rørErŸs r Ú do_disablezPdb.do_disable›si€ð�y‰y‹{ˆÛˆAð 1Ø×(Ñ(¨Ó+�ð— ‘ ” Ø— ‘ ˜]¨RÑ/Õ0ñøôò Ø— ‘ ˜3—‘ûð úr¡có—|jdd«} |d}|j|«x}r|jd|›d|›�«y |j |dj ««}||_|s|jd|jz«y|jd|jz«y#t$rd}YŒwwxYw#t$r|jd «Yyt$r}|j|«Yd}~yd}~wwxYw) a$condition bpnumber [condition] Set a new condition for the breakpoint, an expression which must evaluate to true before the breakpoint is honored. If condition is absent, any existing condition is removed; i.e., the breakpoint is made unconditional. r!rrtrèNrz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.úBreakpoint number expected) r$rxrEÚ IndexErrorrmr½r†r¡r„rø)r8r6r+r†ror]s r Ú do_conditionzPdb.do_condition°sò€ð�y‰y˜˜aÓ ˆð ؘ‘7ˆDØ×1Ñ1°$Ó7Ð7ˆsÐ7Ø— ’ º¹sÐCÔDØð8ð QØ×$Ñ$ T¨!¡W§]¡]£_Ó5ˆBð ˆBŒGÙØ— ‘ ÐBÀRÇYÁYÑNÕOà— ‘ ÐCÀbÇiÁiÑOÕPøôò ØŠDð ûôò 5Ø �J‰JÐ3Ö 4Üò Ø �J‰J�s�O‰Oûð ús/”/B/Á"CÂ/ B=Â<B=ÃC?ÃC?Ã$C:Ã:C?cóê—|j«} t|dj««} |j|dj««}||_|dkDr.|dkDrd|z}nd}|j d||j fz«y|j d|j z«y#d}YŒ‚xYw#t$r|jd«Yyt$r}|j|«Yd}~yd}~wwxYw) a—ignore bpnumber [count] Set the ignore count for the given breakpoint number. If count is omitted, the ignore count is set to 0. A breakpoint becomes active when the ignore count is zero. When non-zero, the count is decremented each time the breakpoint is reached and the breakpoint is not disabled and any associated condition evaluates to true. rrz %d crossingsz 1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.r¦N) r$rlr½rmÚignorer¡r„r§rErø)r8r6r+Úcountr]Úcountstrros r Ú do_ignorez Pdb.do_ignoreÏsé€ð�y‰y‹{ˆð ܘ˜Q™Ÿ ™ ›Ó(ˆEð *Ø×$Ñ$ T¨!¡W§]¡]£_Ó5ˆBð ˆBŒIØ�qŠyؘ1’9Ø-°Ñ5‘Hà+�HØ— ‘ ÐDØ&¨¯ © Ð2ñ3õ4ð— ‘ ÐLØ!Ÿy™yñ)õ*øð% ØŠEûôò 5Ø �J‰JÐ3Ö 4Üò Ø �J‰J�s�O‰Oûð ús(’B*¯"B3Â*B0Â3C2ÃC2ÃC-Ã-C2cóZ—|s„ td«}|j«j«}|dvrUtj j D�cgc]}|sŒ|‘Œ }}|j«|D]}|jd|z«Œyd|vr�|jd«}|d|}||dzd} t|«}|j||«dd}|j||«}|r|j|«yD]}|jd|z«Œy|j«} | D]9} |j!|«}|j#|«|jd|z«Œ;y#t$rd}Y�ŒZwxYwcc}w#t$rd|z}YŒ¦wxYw#t$r}|j|«Yd}~Œ‡d}~wwxYw) a.cl(ear) [filename:lineno | bpnumber ...] With a space separated list of breakpoint numbers, clear those breakpoints. Without argument, clear all breaks (but first ask confirmation). With a filename:lineno argument, clear all breaks at that line in that file. zClear all breaks? Úno)ÚyÚyesz Deleted %sNrIrzInvalid line number (%s))ÚinputÚEOFErrorr½rRr�r[r\Úclear_all_breaksr¡ryrlrƒÚ clear_breakrørEr$rmÚclear_bpbynumber) r8r6Úreplyr]Úbplistr1r"r%roÚ numberlists r Údo_clearz Pdb.do_clearós¸€ñð ÜÐ2Ó3�ð—K‘K“M×'Ñ'Ó)ˆEؘ Ñ$Ü'*§~¡~×'@Ò'@ÓGÑ'@ ÂBš"Ð'@�ÐGØ×%Ñ%Ô'Û �BØ—L‘L °Ñ!2Õ3ð!à Ø �#‰:à— ‘ ˜#“ˆAؘ2˜A�wˆHØ�a˜‘c�d�)ˆCð 9ܘS›�🙨°6Ó:¹1Ð=�Ø×&Ñ& x°Ó8�ÙØ— ‘ ˜3”ð ó!�BØ—L‘L °Ñ!2Õ3ð!à Ø—Y‘Y“[ˆ ÛˆAð 0Ø×(Ñ(¨Ó+�ð×%Ñ% aÔ(Ø— ‘ ˜\¨BÑ.Õ/ñøô9ò Ø“ð üòHøôò 7Ø0°3Ñ6’ð 7ûôò Ø— ‘ ˜3—‘ûð úsG„ EÁ E-ÁE-Â* E2Ä"FÅ E*Å)E*Å2FÆFÆ F*ÆF%Æ%F*có$—|j«y)zãw(here) Print a stack trace, with the most recent frame at the bottom. An arrow indicates the "current frame", which determines the context of most commands. 'bt' is an alias for this command. N)Úprint_stack_traceris r Údo_wherez Pdb.do_where's€ð ×ÑÕ r có6—||_|j|jd|_|jj|_|j |jd|j«|j |j|j«d|_y)Nrr´)r­r¬rªr»r±r¼rÑr%)r8r„s r Ú _select_framezPdb._select_frame2sp€àˆŒ ØŸ ™  4§=¡=Ñ1°!Ñ4ˆŒ Ø#Ÿ}™}×5Ñ5ˆÔØ ×%Ñ% d§m¡m°X¸t¿}¹}ÔMØ ×јtŸz™z¨$¯-©-Ñ8Ô9؈� r có—|jdk(r|jd«y t|xsd«}|dkrd}nt d|j|z «}|j |«y#t$r|jd|z«YywxYw)zƒu(p) [count] Move the current frame count (default one) levels up in the stack trace (to an older frame). rz Oldest frameNrúInvalid frame count (%s))r­rErlrøÚmaxr¿©r8r6r«Únewframes r Údo_upz Pdb.do_up;sˆ€ð �=‰=˜AÒ Ø �J‰J�~Ô &Ø ð ܘš˜q“MˆEð �1Š9؉Hä˜1˜dŸm™m¨eÑ3Ó4ˆHØ ×ј8Õ$øôò Ø �J‰JÐ1°CÑ7Ô 8Ù ð ús£A%Á%BÂBcó”—|jdzt|j«k(r|jd«y t |xsd«}|dkrt|j«dz }n/t t|j«dz |j|z«}|j|«y#t $r|jd|z«YywxYw)z†d(own) [count] Move the current frame count (default one) levels down in the stack trace (to a newer frame). rz Newest frameNrÁr)r­rkr¬rErlrøÚminr¿rÃs r Údo_downz Pdb.do_downPs¯€ð �=‰=˜1Ñ ¤ D§J¡J£Ò /Ø �J‰J�~Ô &Ø ð ܘš˜q“MˆEð �1Š9ܘ4Ÿ:™:“¨Ñ*‰Häœ3˜tŸz™z›?¨QÑ.°· ± ÀÑ0EÓFˆHØ ×ј8Õ$øôò Ø �J‰JÐ1°CÑ7Ô 8Ù ð ús¹B'Â'CÃCcóø—|r7 t|«}||jjkr|jd«yd}|j |j|«y#t$r|jd|z«YywxYw)aOunt(il) [lineno] Without argument, continue execution until the line with a number greater than the current one is reached. With a line number, continue execution until a line with a number greater or equal to that is reached. In both cases, also stop when the current frame returns. úError in argument: %rNz7"until" line number is smaller than current line numberr)rlrørErªÚf_linenoÚ set_until)r8r6r%s r Údo_untilz Pdb.do_untiles}€ñ ð ܘS›�𘟙×/Ñ/Ò/Ø— ‘ ð)ô*ààˆFØ �‰�t—}‘} fÔ-Øøôò Ø— ‘ Ð2°SÑ8Ô9Ùð ús„ AÁA9Á8A9có$—|j«y)z¨s(tep) Execute the current line, stop at the first possible occasion (either in a function that is called or in the current function). r)r¢ris r Údo_stepz Pdb.do_step~s€ð � ‰ ŒØr có:—|j|j«y)zyn(ext) Continue execution until the next line in the current function is reached or it returns. r)Úset_nextrªris r Údo_nextz Pdb.do_next‰s€ð � ‰ �d—m‘mÔ$Ør cóö—|rEddl}tjdd} |j|«t_|tjddt ‚#t$r!}|j d|›d|›�«Yd}~yd}~wwxYw)arun [args...] Restart the debugged python program. If a string is supplied it is split with "shlex", and the result is used as the new sys.argv. History, breakpoints, actions and debugger options are preserved. "restart" is an alias for "run". rNrz Cannot run rè)ÚshlexrJÚargvr$rørEr)r8r6rÔÚargv0res r Údo_runz Pdb.do_run“sj€ñ Û Ü—H‘H˜Q˜q�MˆEð Ø Ÿ;™; sÓ+””ð!ŒC�H‰H�R�aˆLäˆ øô ò Ø— ’ ²#±qÐ9Ô:Üûð ús›AÁ A8ÁA3Á3A8có:—|j|j«y)zQr(eturn) Continue execution until the current function returns. r)Ú set_returnrªris r Ú do_returnz Pdb.do_return©s€ð �‰˜Ÿ ™ Ô&Ør cóÊ—|js8 tjtj|j«t_|j«y#t $rYŒwxYw)z^c(ont(inue)) Continue execution, only stop when a breakpoint is encountered. r)r‘rör÷r¥rrõrøÚ set_continueris r Ú do_continuezPdb.do_continue²sW€ð �}Š}ð ä—M‘M¤&§-¡-°×1DÑ1DÓEôÔ,ð ×ÑÔØøôò ñ ð  úsŽ7AÁ A"Á!A"cóü—|jdzt|j«k7r|jd«y t |«} ||j _|j|jd|f|j|j<|j|j|j«y#t$r}|jd|z«Yd}~yd}~wwxYw#t$r|jd«YywxYw)a¤j(ump) lineno Set the next line that will be executed. Only available in the bottom-most frame. This lets you jump back and execute code again, or jump forward to skip code that you don't want to run. It should be noted that not all jumps are allowed -- for instance it is not possible to jump into the middle of a for loop or out of a finally clause. rz)You can only jump within the bottom frameNrzJump failed: %sz)The 'jump' command requires a line number) r­rkr¬rErlrªrËrÑrø)r8r6res r Údo_jumpz Pdb.do_jumpÅsÖ€ð �=‰=˜1Ñ ¤ D§J¡J£Ò /Ø �J‰JÐBÔ CØ ð 2Ü�c“(ˆCð 2ð*-�— ‘ Ô&Ø,0¯J©J°t·}±}Ñ,EÀaÑ,HÈ#Ð,M�— ‘ ˜4Ÿ=™=Ñ)Ø×&Ñ& t§z¡z°$·-±-Ñ'@ÕAøÜò 2Ø— ‘ Ð,¨qÑ0×1Ñ1ûð 2ûôò DØ �J‰JÐBÖ Cð Dús*¹ CÁA.B4Â4 CÂ=CÃCÃC;Ã:C;có6—tjd«|jj}|j}t |j |j|j«}d|jj«z|_ |jd« tj|j|||f«|jd«tj|j «|j"|_y#t$r|j«YŒ]wxYw)zÇdebug code Enter a recursive debugger that steps through the code argument (which is an arbitrary expression or statement to be executed in the current environment). Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)rJÚsettracerªr¯r±rršr›rœrˆr½r¡Ú call_tracingr rbrÚtrace_dispatchrÏ)r8r6rrÚps r Údo_debugz Pdb.do_debugãsÓ€ô � ‰ �TÔØ—-‘-×)Ñ)ˆØ×%Ñ%ˆÜ �× Ñ  $§*¡*¨d¯k©kÓ :ˆØ˜TŸ[™[×.Ñ.Ó0Ñ0ˆŒØ � ‰ Ð2Ô3ð Ü × Ñ ˜QŸU™U S¨'°6Ð$:Ô ;ð � ‰ Ð1Ô2Ü � ‰ �T×(Ñ(Ô)Ø—y‘yˆ� øô ò Ø �O‰OÖ ð úsÂ#C<Ã<DÄDcó2—d|_|j«y)z^q(uit) | exit Quit from the debugger. The program being executed is aborted. Tr)Ú_user_requested_quitÚset_quitris r Údo_quitz Pdb.do_quitús€ð %)ˆÔ!Ø � ‰ ŒØr cóT—|jd«d|_|j«y)z>EOF Handles the receipt of EOF as a command. rTr)r¡rçrèris r Údo_EOFz Pdb.do_EOFs$€ð � ‰ �RÔØ$(ˆÔ!Ø � ‰ ŒØr c óÄ—|jj}|j}|j|jz}|j t jzr|dz}|j t jzr|dz}t|«D]S}|j|}||vr*|j|›d|j|||«›�«Œ@|j|›d�«ŒUy)zIa(rgs) Print the argument list of the current function. rú = z = *** undefined ***N) rªr¸r±Ú co_argcountÚco_kwonlyargcountÚco_flagsÚinspectÚ CO_VARARGSÚCO_VARKEYWORDSÚrangeÚ co_varnamesr¡rí)r8r6ÚcorUrgr1rns r Údo_argsz Pdb.do_argss¸€ð �]‰]× !Ñ !ˆØ×#Ñ#ˆØ �N‰N˜R×1Ñ1Ñ 1ˆØ �;‰;œ×+Ñ+Ò +°°1±¨QØ �;‰;œ×/Ñ/Ò /°Q°q±S°Ü�q–ˆAØ—>‘> !Ñ$ˆDØ�t‰|Ø— ‘ ª$°·±ÀÀTÁ ÈDÔ0QÐRÕSà— ‘ ºÐ?Õ@ñ r có —d|jvr/|j|j|jdd««y|jd«y)zRretval Print the return value for the last return of a function. rÕÚretvalzNot yet returned!N)r±r¡rírEris r Ú do_retvalz Pdb.do_retval"sA€ð ˜4×/Ñ/Ñ /Ø �L‰L˜Ÿ™¨×)=Ñ)=¸lÑ)KÈXÓVÕ Wà �J‰JÐ*Õ +r có†— t||jj|j«S#|j «‚xYwr6)r{rªr¯r±rris r Ú_getvalz Pdb._getval-s:€ð ܘ˜TŸ]™]×4Ñ4°d×6JÑ6JÓKÐ Køð Ø �O‰OÔ Ø ús ‚*-­Acó— |€+t||jj|j«St||j|j«S#t $r'}t d|j|«z«cYd}~Sd}~wwxYw)Nz** raised %s **)r{rªr¯r±r»Ú BaseExceptionr4rÝ)r8r6r¤Úexcs r rìzPdb._getval_except4sq€ð D؈}ܘC §¡×!8Ñ!8¸$×:NÑ:NÓOÐOä˜C §¡°%·.±.ÓAÐAøÜò DÜÐ*¨T×-=Ñ-=¸cÓ-BÑBÓCÕ Cûð Dús"‚,A¯ AÁ BÁA;Á5BÁ;Bcól—tj«}|j|j|««yr6)rJÚ exceptionrErÝ©r8rÿs r rzPdb._error_exc=s$€Ü�m‰m‹oˆØ � ‰ �4×#Ñ# CÓ(Õ)r có”— |j|«} |j||««y#YyxYw#|j«YyxYwr6)rür¡r)r8r6r=rDs r Ú _msg_val_funczPdb._msg_val_funcAsD€ð Ø—,‘,˜sÓ#ˆCð Ø �L‰L™˜c›Õ #øð Ù ûð Ø �O‰OÖ ús‚,”3¬0³Ac óˆ— t|«S#t$r+}td|›d|j|«›d�«cYd}~Sd}~wwxYw)Nz *** repr(z ) failed: z ***)rûrbr4rÝ)r8rürîres r rízPdb._safe_reprKsJ€ð Pܘ“9Ð øÜò Pܘ9 T F¨*°T×5EÑ5EÀaÓ5HÐ4IÈÐNÓOÕ Oûð Pús‚ � A– <¶A¼Acó0—|j|t«y)zAp expression Print the value of the expression. N)rrûris r Údo_pzPdb.do_pQs€ð ×ј3¤Õ%r cóD—|j|tj«y)zIpp expression Pretty-print the value of the expression. N)rÚpprintÚpformatris r Údo_ppz Pdb.do_ppXs€ð ×ј3¤§¡Õ/r có —d|_d}|r„|dk7r d|vrQ|jd«\}}t|j««}t|j««}||kr.||z}n(t|j««}t d|dz «}nD|j�|dk(r$t d|jjdz «}n|jdz}|€|dz}|jjj}|jd «r7|jjjd «}t|t «r|}|j#|«} t%j&||jj«}|j)||dz ||||j«t+|t-|««|_t-|«|kr|j/d «yy#t $r|j d|z«YywxYw#t0$rYywxYw) a°l(ist) [first[, last] | .] List source code for the current file. Without arguments, list 11 lines around the current line or continue the previous listing. With . as argument, list 11 lines around the current line. With one argument, list 11 lines starting at that line. With two arguments, list the given range; if the second argument is less than the first, it is a count. The current line in the current frame is indicated by "->". If an exception is being debugged, the line where the exception was originally raised or propagated is indicated by ">>", if it differs from the current line. r*Nr`rJrérÊé zÇ=G>È H È H có.—|jjj}|j|«} |j |j«\}}|j||||j«y#t $r}|j |«Yd}~yd}~wwxYw)z]ll | longlist List the whole source code for the current function or frame. N)rªr¸rjrÚ_getsourcelinesrrEr)r8r6r"rrr%ros r Ú do_longlistzPdb.do_longlistœs€€ð —=‘=×'Ñ'×3Ñ3ˆØ×(Ñ(¨Ó2ˆ ð Ø ×0Ñ0°·±Ó?‰MˆE�6ð ×ј% ¨°D·M±MÕBøôò Ø �J‰J�sŒOÜ ûð ús³A0Á0 BÁ9BÂBcóÞ— |j|«} |j|«\}}|j ||«y#YyxYw#ttf$r}|j |«Yd}~yd}~wwxYw)z_source expression Try to get source code for the given object and display it. N)rürrÚ TypeErrorrEr)r8r6rürr%ros r Ú do_sourcez Pdb.do_source«sn€ð  Ø—,‘,˜sÓ#ˆCð Ø ×0Ñ0°Ó5‰MˆE�6ð ×ј% Õ(øð Ù ûôœÐ#ò Ø �J‰J�sŒOÜ ûð ús‚;”A»?ÁA,ÁA'Á'A,cóv—|r)|j}|jj|d«}ndx}}t||«D]{\}}t |«j d«} t | «dkr| dz } ||vr| dz } n| dz } ||k(r| dz } n ||k(r| dz } |j| dz|j«z«Œ}y ) zPrint a range of lines.rôr‘ér!ÚBz->z>>Ú N) rËr�rêrr&Úrjustrkr¡r*) r8rrrvr¤Úcurrent_linenoÚ exc_linenor%r&Úss r rzPdb._print_lines½s€á Ø"Ÿ^™^ˆNØŸ™×+Ñ+¨E°2Ó6‰Jà*,Ð ,ˆN˜ZÜ% e¨UÖ3‰LˆF�DÜ�F“ ×!Ñ! !Ó$ˆAÜ�1‹v˜ŠzØ�S‘�Ø˜ÑØ�S‘‘à�S‘�ؘÒ'Ø�T‘ ‘ؘ:Ò%Ø�T‘ �Ø �L‰L˜˜T™ D§K¡K£MÑ1Õ 2ñ4r cóò— |j|«}d} |jj}|r|j d|j z«y |j}|r|j d|j z«y|j tur,|j d|j›d|j›�«y|j t|««y#YyxYw#t$rYŒºwxYw#t$rYŒ›wxYw)zCwhatis expression Print the type of the argument. Nz Method %sz Function %szClass r`) rürur|rbr¡r}rFÚtyperr)r8r6rGr.s r Ú do_whatisz Pdb.do_whatisÒsä€ð  Ø—L‘L Ó%ˆEðˆð Ø—>‘>×*Ñ*ˆDñ Ø �L‰L˜ t§|¡|Ñ3Ô 4Ø ð Ø—>‘>ˆDñ Ø �L‰L˜¨¯©Ñ5Ô 6Ø à �?‰?œdÑ "Ø �LŠL¨%×*:Ó*:¸E×