3 \~"@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z Gddde Zdddddd d d d g Zd dZddZddZGdddeZdZGdddejejZedk r^d dddddddddd d!d"d#d$d%d&d'dd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6g"Zx*eD]"Zeeed7ejjd87Zq(Weejj7Z[[dHd9dZdId:dZ d;dZ!dd Z$d?dZ%d@Z&dAdBZ'dCd Z(dDZ)dEdFZ*e+dGkrddl,Z,e,j*dS)KNc@s eZdZdS)RestartN)__name__ __module__ __qualname__rr/usr/lib64/python3.6/pdb.pyrUsrrunpmPdbrunevalrunctxruncall set_trace post_mortemhelpcCsxtjdtj|}y t|}Wntk r4dSX|4x,t|ddD]\}}|j|rJ|||fSqJWWdQRXdS)Nzdef\s+%s\s*[(])start)recompileescapeopenOSError enumeratematch)funcnamefilenameZcrefplinenolinerrr find_function\s  rcCsXtj|\}}tj|r,|j|jkr,|dfStj|r>|dfStj||d|dfS)Nr)inspectZ findsourceZisframe f_globalsf_localsZismoduleZgetblock)objlinesrrrrgetsourcelinesis  r%cCs8ttj|}|jx|D]\}}||kr|SqWdS)Nr)listdisZfindlinestartsreverse)codeZlastiZ linestartsirrrr lasti2linenors r+c@seZdZddZdS)_rstrcCs|S)Nr)selfrrr__repr__}sz_rstr.__repr__N)rrrr.rrrrr,{sr,z -> c@seZdZdZdddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZeZdd8d9Zd:d;ZeZ eZ!eZ"dd?Z%d@dAZ&dBdCZ'eZ(dDdEZ)eZ*dFdGZ+eZ,dHdIZ-eZ.dJdKZ/e/Z0eZ1eZ2dLdMZ3e3Z4e3Z5dNdOZ6dPdQZ7e7Z8dRdSZ9e9Z:dTdUZ;e;ZdXdYZ?e?Z@dZd[ZAeAZBd\d]ZCeCZDd^d_ZEeEZFZGd`daZHeHZIdbdcZJeZKdddeZLeLZMeLZNdfdgZOdhdiZPePZQdjdkZReRZSdldmZTddndoZUdpdqZVdrdsZWeZXeZYeZZdtduZ[e[Z\dvdwZ]e]Z^dxdyZ_eZ`fdfdzd{Zad|d}ZbeZcd~dZdeZeddZfddZgddZhddZiddZjddZkddddddgZlddZmenfddZoddZpepZqddZrddZsddZtddZudS)r NtabFTc $CsJtjj||dtjj|||||r,d|_d|_i|_i|_d|_ d|_ i|_ yddl }|j dWntk rzYnXd|_||_g|_|r(dtjkrtjd}y.ttjj|d} |jj| WdQRXWntk rYnXy$td} |jj| WdQRXWntk r&YnXi|_i|_i|_d|_d|_dS) N)skiprz(Pdb) Fz `@#$%^&*()=+[{]}\|;:'",<>?HOMEz.pdbrc)bdbBdb__init__cmdCmdZ use_rawinputpromptaliases displaying mainpyfile_wait_for_mainpyfile tb_linenoreadlineZset_completer_delims ImportError allow_kbdintnosigintrcLinesosenvironrpathjoinextendrcommandscommands_dopromptcommands_silentcommands_defining commands_bnum) r- completekeystdinstdoutr0rAZreadrcr>ZenvHomeZrcFilerrrr5sH   z Pdb.__init__cCs*|jr t|jd|j|j|dS)Nz- Program interrupted. (Use 'cont' to resume).)r@KeyboardInterruptmessageset_stepr)r-Zsignumframerrrsigint_handlers  zPdb.sigint_handlercCstjj||jdS)N)r3r4resetforget)r-rrrrUs z Pdb.resetcCs&d|_g|_d|_d|_|jjdS)Nr)rstackcurindexcurframer=clear)r-rrrrVs z Pdb.forgetcCsl|j|j||\|_|_x*|rFt|jj|j}||j|j<|j }qW|j|jd|_ |j j |_ |j S)Nr)rVZ get_stackrWrXr+tb_framef_codetb_lastir=tb_nextrYr"curframe_locals execRcLines)r-ftbrrrrsetups   z Pdb.setupcCsh|js dS|j}|jg|_xD|rb|jj}|r |ddkr |j|r |jt|7_dSq WdS)Nr#T)rBr(popstriponecmdreversed)r-rBrrrrr`s  zPdb.execRcLinescCs.|jr dS|j|r*|jd|j|ddS)Nz--Call--)r<Z stop_hererQ interaction)r-rSZ argument_listrrr user_calls   z Pdb.user_callcCsH|jr.|j|j|jjks$|jdkr(dSd|_|j|rD|j|ddS)NrF)r<r;canonicr\ co_filenamef_lineno bp_commandsri)r-rSrrr user_lines  z Pdb.user_linecCst|ddr|j|jkr|j}d|_|j}|j|dx|j|D]}|j|qBW||_|j|sv|j|j|j |j |r|j |j dSdS)N currentbpFrr) getattrrprHlastcmdrcrgrJprint_stack_entryrWrXrI_cmdlooprV)r-rSrpZ lastcmd_backrrrrrns      zPdb.bp_commandscCs.|jr dS||jd<|jd|j|ddS)N __return__z --Return--)r<r"rQri)r-rSZ return_valuerrr user_returns   zPdb.user_returncCsj|jr dS|\}}}||f|jd<| r4|tkr4dnd}|jd|tj||djf|j||dS)NZ __exception__z Internal r1z%s%sr)r<r" StopIterationrQ tracebackformat_exception_onlyrfri)r-rSexc_infoexc_type exc_value exc_tracebackprefixrrruser_exception's zPdb.user_exceptionc CsDx>yd|_|jd|_PWqtk r:|jdYqXqWdS)NTFz--KeyboardInterrupt--)r@cmdlooprPrQ)r-rrrrt;sz Pdb._cmdloopcCsb|jj|j}|r^xJ|jD]>\}}|j|}||k r||kr|||<|jd|||fqWdS)Nzdisplay %s: %r [old: %r])r:getrYitems_getval_exceptrQ)r-r:exprZoldvalueZnewvaluerrrpreloopHs z Pdb.preloopcCsZtjrtjtjtjdt_|j||r4|jdS|j|j|j|j |jdS)N) r _previous_sigint_handlersignalSIGINTrcrVrsrWrXrt)r-rSryrrrriUs zPdb.interactioncCs|dk r|jt|dS)N)rQrepr)r-r#rrr displayhookcszPdb.displayhookc Cs|dddkr|dd}|j}|jj}ydt|ddd}tj}tj}tj}z(|jt_|jt_|jt_t|||Wd|t_|t_|t_XWn4tj dd}|j t j |dj YnXdS)Nr! zZsinglerw)r_rYr!rsysrOrNrexecr{errorryrzrf) r-rlocalsglobalsr)Z save_stdoutZ save_stdinZsave_displayhookr{rrrdefaultks(  z Pdb.defaultcCs|js |S|j}xx|d|jkr|j|d}d}x0|ddD] }|jdt||}|d7}qDW|jddj|dd}|j}qW|ddkr|jd}|dkr||ddj}|jj ||d|j }|S) Nrr%z%* aliasz;;r) rfsplitr9replacestrrFfindlstripcmdqueueappendrstrip)r-rargsZiiZtmpArgZmarkernextrrrprecmds&     z Pdb.precmdcCs"|jstjj||S|j|SdS)N)rKr6r7rghandle_command_def)r-rrrrrgsz Pdb.onecmdc Cs|j|\}}}|sdS|dkr0d|j|j<dS|dkrBg|_dS|j|j}|rf|j|d|n |j|yt|d|}Wntk r|j}YnX|j |j krd|j |j<g|_dSdS)NZsilentTendrrdo_F) Z parselinerJrLrrHrrqAttributeErrorrrcommands_resumingrI)r-rr6argZcmdlistfuncrrrrs,      zPdb.handle_command_defcCst||jddS)N)file)printrO)r-msgrrrrQsz Pdb.messagecCstd||jddS)Nz***)r)rrO)r-rrrrrsz Pdb.errorc Cs|jjdrgSy|j||||}Wntk r>g}YnXtj|d}xP|D]H}tjj|rt|j|dqTtjj |rT|j jdrT|j|dqTW|S) N:,*/.py.pyw)rr)rr) rfendswith_complete_expression ExceptionglobrCrEisdirrisfilelower)r-textrbegidxendidxZretglobsfnrrr_complete_locations   zPdb._complete_locationcsfddttjjDS)Ncs.g|]&\}}|dk rt|jrt|qS)N)r startswith).0r*bp)rrr sz*Pdb._complete_bpnumber..)rr3 Breakpoint bpbynumber)r-rrrrr)rr_complete_bpnumberszPdb._complete_bpnumberc s|js gS|jjj}|j|jdkrjdy0|d}xddD]}t||}qPWWnttfk r|gSXdj dddfddt |DSfdd|j DSdS) N.rrcs"g|]}|jdr|qS)rrw)r)rn)dottedrrrrsz,Pdb._complete_expression..csg|]}|jr|qSr)r)rr)rrrrsrwrw) rYr!copyupdater_rrqKeyErrorrrFdirkeys)r-rrrrnsr#partr)rrrrrs    zPdb._complete_expressioncCs(|sttjjd}n"y t|}Wn|jddS||_||jkrf|j||j||j |f}nd}g|j|<d|j|<d|j |<|j }d|_ d|_ zzy |j Wnht k r|r|d|j|<|d|j|<|d|j |<n|j|=|j|=|j |=|jdYnXWdd|_ ||_ XdS) Nrz.Usage: commands [bnum] ... endTFz(com) rrz1command definition aborted, old commands restored)lenr3rrintrrLrHrIrJr8rKrrP)r-rZbnumZold_command_defsZ prompt_backrrr do_commandss@%       zPdb.do_commandsrcCs@|s<|jr8|jdx"tjjD]}|r|j|jqWdSd}d}d}|jd}|dkr~||ddj}|d|j}|j d}d} |dkr|d|j}|j |} | s|j d|dS| }||ddj}y t |}Wn$t k r|j d|dSXny t |}Wnt k ryt||jj|j} Wn|} YnXy.t| drl| j} | j} | j} | j}| j}Wn@|j|\} }}| s|j d |dS| } t |}YnXYnX|s|j}|j||}|r<|j||||| }|r|j |n*|j||d }|jd |j|j|jfdS) Nz!Num Type Disp Enb Whererrrrz%r not found from sys.pathzBad lineno: %s__func__zJThe specified object %r is not a function or was not found along sys.path.zBreakpoint %d at %s:%drw) breaksrQr3rrZbpformatrrrrfind lookupmodulerr ValueErrorevalrYr!r_hasattrr__code__co_nameco_firstlinenorllineinfo defaultFile checklineZ set_break get_breaksnumberrr)r-rZ temporaryrrrcondZcommaZcolonrrarr)oklnrerrrrrdo_breakTs~             z Pdb.do_breakcCs"|jjj}|dkr|jr|j}|S)Nz)rYr\rlr;)r-rrrrrs zPdb.defaultFilecCs|j|ddS)Nr)r)r-rrrr do_tbreaksz Pdb.do_tbreakc Csd}|jd}t|dkr(|dj}nt|dkrB|dj}n|S|dkrR|S|jd}|ddkr~|d=t|dkr~|S|j}t|dkr|d}n|j|d}|r|}|d}t||} | p|S) N'rrr1rr-)NNN)rrrfrrr) r-Z identifierZfailedZidstringidpartsZfnameitemraZanswerrrrrs.         z Pdb.lineinfocCst|dr|jjnd}tj|||}|s6|jddS|j}| sp|ddksp|dddksp|dddkr~|jddS|S) NrYz End of filerrdrz"""z'''zBlank or comment)rrYr! linecachegetlinerQrfr)r-rrrrrrrrs   z Pdb.checklinecCsl|j}x^|D]V}y|j|}Wn,tk rL}z|j|WYdd}~XqX|j|jd|qWdS)Nz Enabled %s)rget_bpbynumberrrenablerQ)r-rrr*rrrrr do_enables z Pdb.do_enablecCsl|j}x^|D]V}y|j|}Wn,tk rL}z|j|WYdd}~XqX|j|jd|qWdS)Nz Disabled %s)rrrrdisablerQ)r-rrr*rrrrr do_disable s zPdb.do_disablecCs|jdd}y |d}Wntk r0d}YnXy|j|dj}WnHtk rf|jdYnXtk r}z|j|WYdd}~Xn.X||_|s|jd|jn|jd|jdS)NrrrzBreakpoint number expectedz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.) r IndexErrorrrfrrrrQr)r-rrrrrrrr do_condition!s   zPdb.do_conditioncCs|j}yt|dj}Wnd}YnXy|j|dj}WnHtk rb|jdYnvtk r}z|j|WYdd}~XnLX||_|dkr|dkrd|}nd}|jd||j fn|jd|j dS)NrrzBreakpoint number expectedz %d crossingsz 1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.) rrrfrrrrignorerQr)r-rrcountrrZcountstrrrr do_ignore<s(   z Pdb.do_ignorec !Cs|sxy td}Wntk r(d}YnX|jj}|d krtddtjjD}|jx|D]}|jd|q^WdSd|kr|j d}|d|}||d d}y t |}Wnt k rd |}YnX|j ||}|j ||}|r|j|nx|D]}|jd|qWdS|j} xd| D]\}y|j|}Wn.t k rl}z|j|WYdd}~XnX|j||jd|q,WdS) NzClear all breaks? noyyescSsg|] }|r|qSrr)rrrrrrmsz Pdb.do_clear..z Deleted %srrzInvalid line number (%s))rr)inputEOFErrorrfrr3rrZclear_all_breaksrQrrrrZ clear_breakrrrZclear_bpbynumber) r-rZreplyZbplistrr*rrrZ numberlistrrrdo_clear_sF              z Pdb.do_clearcCs |jdS)N)print_stack_trace)r-rrrrdo_wheresz Pdb.do_wherecCs>||_|j|jd|_|jj|_|j|j|jd|_dS)Nr)rXrWrYr"r_rsr)r-rrrr _select_frames  zPdb._select_framec Csx|jdkr|jddSyt|p"d}Wn"tk rJ|jd|dSX|dkrZd}ntd|j|}|j|dS)Nrz Oldest framerzInvalid frame count (%s))rXrrrmaxr)r-rrnewframerrrdo_ups  z Pdb.do_upc Cs|jdt|jkr"|jddSyt|p,d}Wn"tk rT|jd|dSX|dkrnt|jd}ntt|jd|j|}|j|dS)Nrz Newest framezInvalid frame count (%s)r)rXrrWrrrminr)r-rrrrrrdo_downs z Pdb.do_downc Csf|rPy t|}Wn"tk r2|jd|dSX||jjkrT|jddSnd}|j|j|dS)NzError in argument: %rz7"until" line number is smaller than current line numberr)rrrrYrmZ set_until)r-rrrrrdo_untils   z Pdb.do_untilcCs |jdS)Nr)rR)r-rrrrdo_stepsz Pdb.do_stepcCs|j|jdS)Nr)Zset_nextrY)r-rrrrdo_nexts z Pdb.do_nextcCs<|r4ddl}tjdd}|j|t_|tjdd<tdS)Nrr)shlexrargvrr)r-rr Zargv0rrrdo_runs  z Pdb.do_runcCs|j|jdS)Nr)Z set_returnrY)r-rrrr do_returns z Pdb.do_returnc Cs>|js2ytjtj|jt_Wntk r0YnX|jdS)Nr)rArrrTr rrZ set_continue)r-rrrr do_continueszPdb.do_continuecCs|jdt|jkr"|jddSy t|}Wntk rL|jdYnnXy:||j_|j|jd|f|j|j<|j|j|jWn0tk r}z|jd|WYdd}~XnXdS)Nrz)You can only jump within the bottom framez)The 'jump' command requires a line numberrzJump failed: %s) rXrrWrrrrYrmrs)r-rerrrdo_jump"s   z Pdb.do_jumpcCsztjd|jj}|j}t|j|j|j}d|j j |_ |j dtj |j |||f|j dtj|j|j|_dS)Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)rsettracerYr!r_r rMrNrOr8rfrQ call_tracingrZtrace_dispatchrr)r-rrrprrrdo_debug?s    z Pdb.do_debugcCsd|_|jdS)NTr)_user_requested_quitset_quit)r-rrrrdo_quitRsz Pdb.do_quitcCs|jdd|_|jdS)Nr1Tr)rQrr)r-rrrrdo_EOF]s z Pdb.do_EOFcCs|jj}|j}|j}|jd@r&|d}|jd@r8|d}xJt|D]>}|j|}||krp|jd|||fqB|jd|fqBWdS)Nrz%s = %rz%s = *** undefined ***)rYr\r_ co_argcountco_flagsrange co_varnamesrQ)r-rcodictrr*namerrrdo_argsfs   z Pdb.do_argscCs.d|jkr |jt|jdn |jddS)NruzNot yet returned!)r_rQrr)r-rrrr do_retvalws z Pdb.do_retvalc CsNyt||jj|jStjdd}|jtj|dj YnXdS)Nrrrw) rrYr!r_rr{rryrzrf)r-rr{rrr_getvals z Pdb._getvalc Cshy.|dkrt||jj|jSt||j|jSWn4tjdd}tj|dj }t d|SdS)Nrrz** raised %s **rw) rrYr!r_r"rr{ryrzrfr,)r-rrSr{rrrrrszPdb._getval_exceptc Cs*y|jt|j|Wn YnXdS)N)rQrr%)r-rrrrdo_pszPdb.do_pc Cs,y|jtj|j|Wn YnXdS)N)rQpprintZpformatr%)r-rrrrdo_ppsz Pdb.do_ppcCsdd|_d}|r|dkry^d|krX|jd\}}t|j}t|j}||krr||}nt|j}td|d}Wqtk r|jd|dSXn0|jdks|dkrtd|jj d}n |jd}|dkr|d}|jj j }|j |}yZt j||jj}|j||d||||jt|t||_t||krF|jdWntk r^YnXdS) Nr&rrrzError in argument: %r z[EOF])rrrrrfrrrrrYrmr\rlget_file_breaksrgetlinesr! _print_linesrrrQrP)r-rZlastfirstr breaklistr$rrrdo_lists>        z Pdb.do_listcCsh|jjj}|j|}yt|j\}}Wn*tk rP}z|j|dSd}~XnX|j||||jdS)N)rYr\rlr+r%rrr-)r-rrr/r$rrrrr do_longlists   zPdb.do_longlistcCsjy|j|}Wn dSyt|\}}Wn.ttfk rX}z|j|dSd}~XnX|j||dS)N)r%r%r TypeErrorrr-)r-rr#r$rrrrr do_sources z Pdb.do_sourcec Cs|r|j}|jj|d }nd }}xt||D]|\}}t|jd} t| dkrX| d7} ||krj| d7} n| d7} ||kr| d7} n||kr| d7} |j| d|jq.WdS) NrrrrBz->z>> rwrw) rmr=rrrrjustrrQr) r-r$rrrSZcurrent_linenoZ exc_linenorrsrrrr-s    zPdb._print_linescCsy|j|}Wn dSd}y |j}Wntk r<YnX|rV|jd|jdSy |jj}Wntk rvYnX|r|jd|jdS|jtkr|jd|j|j fdS|jt|dS)Nz Function %sz Method %sz Class %s.%s) r%rrrQrr __class__typerr)r-rvaluer)rrr do_whatiss.   z Pdb.do_whatiscCsp|s<|jdx\|jj|jijD]}|jd|q$Wn0|j|}||jj|ji|<|jd||fdS)NzCurrently displaying:z%s: %rzdisplay %s: %r)rQr:rrYrr setdefault)r-rrvalrrr do_display4s  zPdb.do_displayc CsT|r@y|jj|ji|=WqPtk r<|jd|YqPXn|jj|jddS)Nznot displaying %s)r:rrYrrre)r-rrrr do_undisplayGs zPdb.do_undisplaycsfdd|jj|jiDS)Ncsg|]}|jr|qSr)r)rr)rrrrWsz*Pdb.complete_undisplay..)r:rrY)r-rrrrr)rrcomplete_undisplayVszPdb.complete_undisplaycCs*|jjj}|j|jtjd|ddS)Nz *interactive*)Zlocal)rYr!rrr_r)interact)r-rrrrr do_interactZs  zPdb.do_interactcCs|j}t|dkrLt|jj}x$|D]}|jd||j|fq(WdS|d|jkrt|dkr|jd|d|j|dfndj|dd|j|d<dS)Nrz%s = %srr)rrsortedr9rrQrF)r-rrrrrrrdo_aliasds  "z Pdb.do_aliascCs6|j}t|dkrdS|d|jkr2|j|d=dS)Nr)rrr9)r-rrrrr do_unaliass  zPdb.do_unaliascsfdd|jDS)Ncsg|]}|jr|qSr)r)ra)rrrrsz(Pdb.complete_unalias..)r9)r-rrrrr)rrcomplete_unaliasszPdb.complete_unaliasrr r rrrc Cs8yx|jD]}|j|q WWntk r2YnXdS)N)rWrsrP)r- frame_linenorrrrs  zPdb.print_stack_tracecCs6|\}}||jkrd}nd}|j||j||dS)Nz> z )rYrQZformat_stack_entry)r-rHZ prompt_prefixrSrrrrrrss  zPdb.print_stack_entrycCs|stjj||Sy}xtjj |rtj |}qWtjj||}tjj|r|SqWdS)Nrr1z.py) rCrEisabsexistsrFrrkr;splitextislinkreadlink)r-rrarootZextdirnamefullnamerrrrs"   zPdb.lookupmodulec Cstddl}|jj|jjd|tdd|_|j||_d|_t |d}d|j |jf}WdQRX|j |dS)Nr__main__)r__file__ __builtins__TFrbzexec(compile(%r, %r, 'exec'))) rW__dict__rZrrYr<rkr;rrreadr)r-rrWr statementrrr _runscripts    zPdb._runscript)r/NNNFT)r)N)vrrrrr5rTrUrVrcr`rjrornrvrrtrrirrrrgrrQrrrrrZcomplete_commandsrrZdo_bZcomplete_breakZ complete_brZcomplete_tbreakrrrZcomplete_enablerZcomplete_disablerZcomplete_conditionrZcomplete_ignorerZdo_clZcomplete_clearZ complete_clrZdo_wZdo_btrrZdo_urZdo_drZdo_untr Zdo_sr Zdo_nr Z do_restartrZdo_rrZdo_cZdo_contrZdo_jrZcomplete_debugrZdo_qZdo_exitrr#Zdo_ar$Zdo_rvr%rr&r(Zcomplete_printZ complete_pZ complete_ppr0Zdo_lr1Zdo_llr3Zcomplete_sourcer-r;Zcomplete_whatisr>Zcomplete_displayr?r@rBrDrErGrr line_prefixrsrIZdo_hrMrNrr^rrrrr s /     M ]!!.    1 ! #    whereZdownZupbreakZtbreakrZrrrZ conditionrHsteprZuntilZjumpreturnZretvalcontinuer&ZlonglistrrZppZwhatissourceZdisplayZ undisplayrArZunaliasdebugquitrz cCstj|||dS)N)r r)r]rrrrrr#scCstj|||S)N)r r )Z expressionrrrrrr &scCst|||dS)N)r)r]rrrrrr )scOstj||S)N)r r )rkwdsrrrr -scCstjtjjdS)N)r rr _getframef_backrrrrr0scCsB|dkrtjd}|dkr$tdt}|j|jd|dS)NrzAA valid traceback must be passed if no exception is being handled)rr{rr rUri)trrrrr5s cCsttjdS)N)rrlast_tracebackrrrrr Cszimport x; x.main()cCs ttdS)N)rTESTCMDrrrrtestKsrncCsddl}|jtdS)Nr)pydocZpagerrL)rorrrrOsausage: pdb.py [-c command] ... pyfile [arg] ... Debug the Python program given by pyfile. Initial commands are read from .pdbrc files in your home directory and in the current directory, if they exist. Commands supplied with -c are executed after commands from .pdbrc files. To let the script run until an exception occurs, use "-c continue". To let the script run up to a given line X in the debugged file, use "-c 'until X'".c Csddl}|jtjdddddg\}}|s>tttjdg}x<|D]4\}}|dkrjtttjqH|dkrH|j|qHW|d}tjj |std |d tjd|tjdd<tjj |tjd<t }|j j |xy|j||jrPtd Wqtk r0td |dtddj|Yqtk r`tdddttjdYqtk rtjtjdYqtjtdtdtjd}|jd|td|dYqXqWdS)Nrrzhc:--helpz --command=r-h-c --commandzError:zdoes not existz*The program finished and will be restartedZ Restartingzwith arguments:r5rz/The program exited via sys.exit(). Exit status:)rz2Uncaught exception. Entering post mortem debuggingz1Running 'cont' or 'step' will restart the programz#Post mortem debugger finished. The z will be restarted)rqrp)rrrs)getoptrr r_usageexitrrCrErPrUr rBrGr^rrrF SystemExitr{ SyntaxErrorry print_excri) rtZoptsrrHoptZoptargr;pdbrkrrrmain`sV             r|rW)NN)NN)N)-rCrrr6r3r'r)rr'rr ryrrr__all__rr%r+rr,r_r4r7r rLZ _help_orderZ_commandrqrfrMrr r r rrr rmrnrrur|rr{rrrrFsr      "    <