fUc@sdZddlZddlZddlZdddgZGdddeZGdddZdd ZGd ddZ d d Z d dZ GdddeZ ddZ ddZddZdS(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|EeZdZdZdXddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#Zd$d%d&ZdXd'd(Zd)d*Zd+d,Zd-d.ZdXd/d0Zd1d2Zd3d4ZdYdXdXd5d6Zd7d8Z d9d:Z!d;d<Z"d=d>Z#d?d@Z$dAdBZ%dCdDZ&dEdFZ'dGdHZ(dIdJZ)dKdLZ*dMdNdOZ+dXdXdPdQZ,dXdXdRdSZ-dTdUZ.dVdWZ/dXS(ZuBdbuGeneric 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|dddkr"|S|jj|}|sntjj|}tjj|}||j|i(ufncacheugetuosupathuabspathunormcase(uselfufilenameucanonic((u(/opt/alt/python33/lib64/python3.3/bdb.pyucanonicsu Bdb.canoniccCs3ddl}|jd|_|jdddS(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@tq@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|||jrftn|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]tq]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|||jr4tq4n|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|jjdr(dS||jkrZ|jdkrJdS|j|jkSx;|dk r||jk r||j krdS|j }q]WdS(Nu__name__iFiT( 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 |jndSdSdS(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_herecCstddS(Nu)subclass of bdb must implement do_clear()(uNotImplementedError(uselfuarg((u(/opt/alt/python33/lib64/python3.3/bdb.pyudo_clearsu Bdb.do_clearcCs|j|jj|jkS(N(ucanonicuf_codeu co_filenameubreaks(uselfuframe((u(/opt/alt/python33/lib64/python3.3/bdb.pyubreak_anywheresuBdb.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_callsu 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_linesu 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_returnsuBdb.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_exceptionsuBdb.user_exceptionicCs(||_||_d|_||_dS(NF(u stopframeu returnframeuFalseuquittingu stoplineno(uselfu stopframeu returnframeu stoplineno((u(/opt/alt/python33/lib64/python3.3/bdb.pyu _set_stopinfos   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_untils u Bdb.set_untilcCsK|jr7|jj}|r7|j r7|j|_q7n|jdddS(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_steps   u Bdb.set_stepcCs|j|ddS(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_nextsu 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_returnsuBdb.set_returncCsq|dkrtjj}n|jx(|rR|j|_||_|j}q+W|jtj |jdS(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_traces       u Bdb.set_tracecCsm|j|jdd|jsitjdtjj}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_continues  uBdb.set_continuecCs/|j|_d|_d|_tjddS(NT(ubotframeu stopframeuNoneu returnframeuTrueuquittingusysusettrace(uself((u(/opt/alt/python33/lib64/python3.3/bdb.pyuset_quits   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_breaks  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||fddD]}|jqeW|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|jdS(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]}|jqTWq4W|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|jqqWi|_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|stdnyt|}Wn"tk rItd|YnXytj|}Wn"tk rtd|YnX|dkrtd|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_breakscCsg}|r'|j|kr'|j}nxB|dk rk|j||jf||jkr_Pn|j}q*W|jtdt |d}x2|dk r|j|j|j f|j}qW|dkrtdt |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|jt|trgt|dd}ntj|j z-yt |||Wnt k rYnXWdd|_ tjdXdS(NiuuexecT(uNoneu__main__u__dict__uresetu isinstanceustrucompileusysusettraceutrace_dispatchuexecuBdbQuituTrueuquitting(uselfucmduglobalsulocalsu__main__((u(/opt/alt/python33/lib64/python3.3/bdb.pyuruns         uBdb.runcCs|dkr$ddl}|j}n|dkr9|}n|jtj|jz-yt|||SWntk r~YnXWdd|_ tjdXdS(NiT( uNoneu__main__u__dict__uresetusysusettraceutrace_dispatchuevaluBdbQuituTrueuquitting(uselfuexpruglobalsulocalsu__main__((u(/opt/alt/python33/lib64/python3.3/bdb.pyurunevals         u Bdb.runevalcCs|j|||dS(N(urun(uselfucmduglobalsulocals((u(/opt/alt/python33/lib64/python3.3/bdb.pyurunctxsu Bdb.runctxcOsj|jtj|jd}z,y|||}Wntk rJYnXWdd|_tjdX|S(NT(uresetusysusettraceutrace_dispatchuNoneuBdbQuituTrueuquitting(uselfufuncuargsukwdsures((u(/opt/alt/python33/lib64/python3.3/bdb.pyuruncalls    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                          cCstjdS(N(uBdbu set_trace(((u(/opt/alt/python33/lib64/python3.3/bdb.pyu set_tracesu set_tracecBs|EeZdZdZdZiZdgZdddddZ ddZ ddZ d d Z dd d Z d dZddZdS(u BreakpointuBreakpoint 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