grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ž ö f†Uc@s×dZddlZddlZddlZdddgZGdd„deƒZGdd„dƒZdd „ZGd d„dƒZ d d „Z d d„Z Gdd„deƒZ dd„Z dd„Zdd„ZdS(uDebugger basicsiNuBdbQuituBdbu BreakpointcBs|EeZdZdZdS(uBdbQuitu Exception to give up completely.N(u__name__u __module__u __qualname__u__doc__(u __locals__((u(/opt/alt/python33/lib64/python3.3/bdb.pyuBdbQuit scBs6|EeZdZdZdXdd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%d&„ZdXd'd(„Zd)d*„Zd+d,„Zd-d.„ZdXd/d0„Zd1d2„Zd3d4„ZdYdXdXd5d6„Zd7d8„Z d9d:„Z!d;d<„Z"d=d>„Z#d?d@„Z$dAdB„Z%dCdD„Z&dEdF„Z'dGdH„Z(dIdJ„Z)dKdL„Z*dMdNdO„Z+dXdXdPdQ„Z,dXdXdRdS„Z-dTdU„Z.dVdW„Z/dXS(ZuBdbuÕGeneric Python debugger base class. This class takes care of details of the trace facility; a derived class should implement user interaction. The standard debugger class (pdb.Pdb) is an example. cCs:|rt|ƒnd|_i|_i|_d|_dS(N(usetuNoneuskipubreaksufncacheuframe_returning(uselfuskip((u(/opt/alt/python33/lib64/python3.3/bdb.pyu__init__s  u Bdb.__init__cCsr|d|dd…dkr"|S|jj|ƒ}|sntjj|ƒ}tjj|ƒ}||j|iÿÿÿÿ(ufncacheugetuosupathuabspathunormcase(uselfufilenameucanonic((u(/opt/alt/python33/lib64/python3.3/bdb.pyucanonicsu Bdb.canoniccCs3ddl}|jƒd|_|jddƒdS(Ni(u linecacheu checkcacheuNoneubotframeu _set_stopinfo(uselfu linecache((u(/opt/alt/python33/lib64/python3.3/bdb.pyureset%s   u Bdb.resetcCsÍ|jr dS|dkr&|j|ƒS|dkrB|j||ƒS|dkr^|j||ƒS|dkrz|j||ƒS|dkr�|jS|dkr |jS|dkr³|jStdt|ƒƒ|jS( Nulineucallureturnu exceptionuc_callu c_exceptionuc_returnu*bdb.Bdb.dispatch: unknown debugging event:(uquittingu dispatch_lineu dispatch_calludispatch_returnudispatch_exceptionutrace_dispatchuprinturepr(uselfuframeueventuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyutrace_dispatch+s$         uBdb.trace_dispatchcCsG|j|ƒs|j|ƒr@|j|ƒ|jr@t‚q@n|jS(N(u stop_hereu break_hereu user_lineuquittinguBdbQuitutrace_dispatch(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu dispatch_line?s   uBdb.dispatch_linecCsm|jdkr"|j|_|jS|j|ƒp=|j|ƒsDdS|j||ƒ|jrft‚n|jS(N( ubotframeuNoneuf_backutrace_dispatchu stop_hereubreak_anywhereu user_calluquittinguBdbQuit(uselfuframeuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyu dispatch_callEs  uBdb.dispatch_callc Csd|j|ƒs||jkr]z||_|j||ƒWdd|_X|jr]t‚q]n|jS(N(u stop_hereu returnframeuframe_returningu user_returnuNoneuquittinguBdbQuitutrace_dispatch(uselfuframeuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyudispatch_returnRs   uBdb.dispatch_returncCs;|j|ƒr4|j||ƒ|jr4t‚q4n|jS(N(u stop_hereuuser_exceptionuquittinguBdbQuitutrace_dispatch(uselfuframeuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyudispatch_exception\s  uBdb.dispatch_exceptioncCs.x'|jD]}tj||ƒr dSq WdS(NTF(uskipufnmatchuTrueuFalse(uselfu module_nameupattern((u(/opt/alt/python33/lib64/python3.3/bdb.pyuis_skipped_modulefsuBdb.is_skipped_modulecCsœ|jr(|j|jjdƒƒr(dS||jkrZ|jdkrJdS|j|jkSx;|dk r—||jk r—||j kr‹dS|j }q]WdS(Nu__name__iFiÿÿÿÿT( uskipuis_skipped_moduleu f_globalsugetuFalseu stopframeu stoplinenouf_linenouNoneubotframeuTrueuf_back(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu stop_herels  u Bdb.stop_herecCsÈ|j|jjƒ}||jkr(dS|j}||j|krj|jj}||j|krjdSnt|||ƒ\}}|rÀ|j|_ |r¼|j r¼|j t |jƒƒndSdSdS(NFT(ucanonicuf_codeu co_filenameubreaksuFalseuf_linenouco_firstlinenou effectiveunumberu currentbpu temporaryudo_clearustruTrue(uselfuframeufilenameulinenoubpuflag((u(/opt/alt/python33/lib64/python3.3/bdb.pyu break_here|s   uBdb.break_herecCstdƒ‚dS(Nu)subclass of bdb must implement do_clear()(uNotImplementedError(uselfuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyudo_clear’su Bdb.do_clearcCs|j|jjƒ|jkS(N(ucanonicuf_codeu co_filenameubreaks(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyubreak_anywhere•suBdb.break_anywherecCsdS(unThis method is called when there is the remote possibility that we ever need to stop in this function.N((uselfuframeu argument_list((u(/opt/alt/python33/lib64/python3.3/bdb.pyu user_call›su Bdb.user_callcCsdS(u9This method is called when we stop or break at this line.N((uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu user_line su Bdb.user_linecCsdS(u5This method is called when a return trap is set here.N((uselfuframeu return_value((u(/opt/alt/python33/lib64/python3.3/bdb.pyu user_return¤suBdb.user_returncCsdS(umThis method is called if an exception occurs, but only if we are to stop at or just below this level.N((uselfuframeuexc_info((u(/opt/alt/python33/lib64/python3.3/bdb.pyuuser_exception¨suBdb.user_exceptionicCs(||_||_d|_||_dS(NF(u stopframeu returnframeuFalseuquittingu stoplineno(uselfu stopframeu returnframeu stoplineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu _set_stopinfo­s   uBdb._set_stopinfocCs3|dkr|jd}n|j|||ƒdS(uxStop when the line with the line no greater than the current one is reached or when returning from current frameiN(uNoneuf_linenou _set_stopinfo(uselfuframeulineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_until¸s u Bdb.set_untilcCsK|jr7|jj}|r7|j r7|j|_q7n|jddƒdS(uStop after one line of code.N(uframe_returninguf_backuf_traceutrace_dispatchu _set_stopinfouNone(uselfu caller_frame((u(/opt/alt/python33/lib64/python3.3/bdb.pyuset_stepÀs   u Bdb.set_stepcCs|j|dƒdS(u2Stop on the next line in or below the given frame.N(u _set_stopinfouNone(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyuset_nextÌsu Bdb.set_nextcCs|j|j|ƒdS(u)Stop when returning from the given frame.N(u _set_stopinfouf_back(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_returnÐsuBdb.set_returncCsq|dkrtjƒj}n|jƒx(|rR|j|_||_|j}q+W|jƒtj |jƒdS(upStart debugging from `frame`. If frame is not specified, debugging starts from caller's frame. N( uNoneusysu _getframeuf_backuresetutrace_dispatchuf_traceubotframeuset_stepusettrace(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_traceÔs       u Bdb.set_tracecCsm|j|jddƒ|jsitjdƒtjƒj}x+|re||jk re|`|j}q>WndS(Niiÿÿÿÿ( u _set_stopinfoubotframeuNoneubreaksusysusettraceu _getframeuf_backuf_trace(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_continueãs  uBdb.set_continuecCs/|j|_d|_d|_tjdƒdS(NT(ubotframeu stopframeuNoneu returnframeuTrueuquittingusysusettrace(uself((u(/opt/alt/python33/lib64/python3.3/bdb.pyuset_quitîs   u Bdb.set_quitc CsŽ|j|ƒ}ddl}|j||ƒ}|sAd||fS|jj|gƒ}||krr|j|ƒnt|||||ƒ} dS(NiuLine %s:%d does not exist(ucanonicu linecacheugetlineubreaksu setdefaultuappendu Breakpoint( uselfufilenameulinenou temporaryucondufuncnameu linecacheulineulistubp((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_breakûs  u Bdb.set_breakcCsJ||ftjkr,|j|j|ƒn|j|sF|j|=ndS(N(u Breakpointubplistubreaksuremove(uselfufilenameulineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu _prune_breakss uBdb._prune_breakscCs�|j|ƒ}||jkr&d|S||j|krGd||fSx/tj||fdd…D]}|jƒqeW|j||ƒdS(NuThere are no breakpoints in %suThere is no breakpoint at %s:%d(ucanonicubreaksu BreakpointubplistudeleteMeu _prune_breaks(uselfufilenameulinenoubp((u(/opt/alt/python33/lib64/python3.3/bdb.pyu clear_break s$uBdb.clear_breakcCsiy|j|ƒ}Wn/tk rD}zt|ƒSWYdd}~XnX|jƒ|j|j|jƒdS(N(uget_bpbynumberu ValueErrorustrudeleteMeu _prune_breaksufileuline(uselfuargubpuerr((u(/opt/alt/python33/lib64/python3.3/bdb.pyuclear_bpbynumbers  uBdb.clear_bpbynumbercCsz|j|ƒ}||jkr&d|SxC|j|D]4}tj||f}x|D]}|jƒqTWq4W|j|=dS(NuThere are no breakpoints in %s(ucanonicubreaksu BreakpointubplistudeleteMe(uselfufilenameulineublistubp((u(/opt/alt/python33/lib64/python3.3/bdb.pyuclear_all_file_breaks!s uBdb.clear_all_file_breakscCsA|js dSx$tjD]}|r|jƒqqWi|_dS(NuThere are no breakpoints(ubreaksu Breakpointu bpbynumberudeleteMe(uselfubp((u(/opt/alt/python33/lib64/python3.3/bdb.pyuclear_all_breaks+s  uBdb.clear_all_breakscCs£|stdƒ‚nyt|ƒ}Wn"tk rItd|ƒ‚YnXytj|}Wn"tk rtd|ƒ‚YnX|dkrŸtd|ƒ‚n|S(NuBreakpoint number expectedu Non-numeric breakpoint number %su!Breakpoint number %d out of rangeuBreakpoint %d already deleted(u ValueErroruintu Breakpointu bpbynumberu IndexErroruNone(uselfuargunumberubp((u(/opt/alt/python33/lib64/python3.3/bdb.pyuget_bpbynumber3s   uBdb.get_bpbynumbercCs/|j|ƒ}||jko.||j|kS(N(ucanonicubreaks(uselfufilenameulineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu get_breakBsu Bdb.get_breakcCsH|j|ƒ}||jkrD||j|krDtj||fpGgS(N(ucanonicubreaksu Breakpointubplist(uselfufilenameulineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu get_breaksGsuBdb.get_breakscCs1|j|ƒ}||jkr)|j|SgSdS(N(ucanonicubreaks(uselfufilename((u(/opt/alt/python33/lib64/python3.3/bdb.pyuget_file_breaksMs uBdb.get_file_breakscCs|jS(N(ubreaks(uself((u(/opt/alt/python33/lib64/python3.3/bdb.pyuget_all_breaksTsuBdb.get_all_breakscCsög}|r'|j|kr'|j}nxB|dk rk|j||jfƒ||jkr_Pn|j}q*W|jƒtdt |ƒdƒ}x2|dk rÃ|j|j|j fƒ|j}q’W|dkrìtdt |ƒdƒ}n||fS(Nii( utb_frameutb_nextuNoneuappenduf_linenoubotframeuf_backureverseumaxulenu tb_lineno(uselfufutustackui((u(/opt/alt/python33/lib64/python3.3/bdb.pyu get_stackZs      u Bdb.get_stacku: c Cs2ddl}ddl}|\}}|j|jjƒ}d||f}|jjrh||jj7}n |d7}d|jkr‘|jd} nd} | r³||j| ƒ7}n |d7}d|jkrù|jd} |d7}||j| ƒ7}n|j |||j ƒ} | r.||| j ƒ7}n|S(Niu%s(%r)uu__args__u()u __return__u->( u linecacheureprlibucanonicuf_codeu co_filenameuco_nameuf_localsuNoneureprugetlineu f_globalsustrip( uselfu frame_linenoulprefixu linecacheureprlibuframeulinenoufilenameusuargsurvuline((u(/opt/alt/python33/lib64/python3.3/bdb.pyuformat_stack_entryls*      uBdb.format_stack_entrycCsÂ|dkr$ddl}|j}n|dkr9|}n|jƒt|tƒrgt|ddƒ}ntj|j ƒz-yt |||ƒWnt k r¢YnXWdd|_ tjdƒXdS(NiuuexecT(uNoneu__main__u__dict__uresetu isinstanceustrucompileusysusettraceutrace_dispatchuexecuBdbQuituTrueuquitting(uselfucmduglobalsulocalsu__main__((u(/opt/alt/python33/lib64/python3.3/bdb.pyurunŠs         uBdb.runcCsž|dkr$ddl}|j}n|dkr9|}n|jƒtj|jƒz-yt|||ƒSWntk r~YnXWdd|_ tjdƒXdS(NiT( uNoneu__main__u__dict__uresetusysusettraceutrace_dispatchuevaluBdbQuituTrueuquitting(uselfuexpruglobalsulocalsu__main__((u(/opt/alt/python33/lib64/python3.3/bdb.pyurunevalœs         u Bdb.runevalcCs|j|||ƒdS(N(urun(uselfucmduglobalsulocals((u(/opt/alt/python33/lib64/python3.3/bdb.pyurunctx¬su Bdb.runctxcOsj|jƒtj|jƒd}z,y|||Ž}Wntk rJYnXWdd|_tjdƒX|S(NT(uresetusysusettraceutrace_dispatchuNoneuBdbQuituTrueuquitting(uselfufuncuargsukwdsures((u(/opt/alt/python33/lib64/python3.3/bdb.pyuruncall²s    u Bdb.runcallNF(0u__name__u __module__u __qualname__u__doc__uNoneu__init__ucanonicuresetutrace_dispatchu dispatch_lineu dispatch_calludispatch_returnudispatch_exceptionuis_skipped_moduleu stop_hereu break_hereudo_clearubreak_anywhereu user_callu user_lineu user_returnuuser_exceptionu _set_stopinfou set_untiluset_stepuset_nextu set_returnu set_traceu set_continueuset_quituFalseu set_breaku _prune_breaksu clear_breakuclear_bpbynumberuclear_all_file_breaksuclear_all_breaksuget_bpbynumberu get_breaku get_breaksuget_file_breaksuget_all_breaksu get_stackuformat_stack_entryurunurunevalurunctxuruncall(u __locals__((u(/opt/alt/python33/lib64/python3.3/bdb.pyuBdb sX                          cCstƒjƒdS(N(uBdbu set_trace(((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_traceÀsu set_tracecBs�|EeZdZdZdZiZdgZddddd„Z dd„Z dd„Z d d „Z dd d „Z d d„Zdd„ZdS(u Breakpointu•Breakpoint class. Implements temporary breakpoints, ignore counts, disabling and (re)-enabling, and conditionals. Breakpoints are indexed by number through bpbynumber and by the file,line tuple using bplist. The former points to a single instance of class Breakpoint. The latter points to a list of such instances since there may be more than one breakpoint per line. icCsÈ||_d|_||_||_||_||_d|_d|_ d|_ t j |_ t j d7_ |jj|ƒ||f|jkr®|j||fj|ƒn|g|j||fs   ÿ´ Z  0