a XC?hJ@sddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z Gdddej Z Gd d d ZGd d d e ZGd ddZedkrddlmZedddddS)N)*)Frame Scrollbar)macosx) ScrolledList)ListedToplevelc@s4eZdZddZddZddZddZd d Zd S) IdbcCs||_tj|dSN)guibdbBdb__init__)selfr r5/opt/alt/python39/lib64/python3.9/idlelib/debugger.pyr sz Idb.__init__cCsJ||r|dS||}z|j||WntyDYn0dSr ) in_rpc_codeset_step_Idb__frame2messager interactionZTclError)rframemessagerrr user_lines   z Idb.user_linecCs4||r|dS||}|j|||dSr )rrrr r)rrinforrrruser_exceptions   zIdb.user_exceptioncCsB|jjdrdS|j}|jj}d|vr4d|vr4dS||SdS)Nzrpc.pyTidlelibZdebuggerF)f_code co_filenamecountf_backr)rrZ prev_frameZ prev_namerrrr#szIdb.in_rpc_codecCsF|j}|j}|j}tj|}d||f}|jdkrBd||jf}|S)Nz%s:%s?z%s: %s())rrf_linenoospathbasenameco_name)rrcodefilenamelinenor#rrrrZ__frame2message/s   zIdb.__frame2messageN)__name__ __module__ __qualname__r rrrrrrrrr s   rc@seZdZdZZZZd1ddZddZd2ddZ dd Z d3d d Z d d Z ddZ ddZddZddZddZddZddZdZddZddZd d!ZdZdZd"d#Zd$d%Zd4d'd(Zd)d*Zd+d,Zd-d.Zd/d0Z dS)5DebuggerNcCs:|durt|}||_||_d|_|d|_d|_dSNr)rpyshellidbrmake_gui interacting nesting_level)rr-r.rrrr >szDebugger.__init__csVjdkr.jdfdddSzd_jjWd_Sd_0dS)Nrdcs jSr )runrargsrrrhzDebugger.run..)r1 abort_looprootZafterr0r.r3)rr5rr4rr3Hs  z Debugger.runcCsbz |WntyYn0|jr4|jdS|jrJ|jd|_|j|j dSr ) quit Exceptionr0topZbell stackviewercloser-Zclose_debuggerdestroyrZeventrrrr?ps    zDebugger.closecCsB|j}|j|_|j|_}t||_}|jd|jd|d|j|j d|jt ||_ }|j j ddg|_ }t|d|jd|_}||t|d |jd|_}||t|d |jd|_}||t|d |jd|_}||t|d |jd|_}|||D]}|jd d|j ddq(t ||_}|jj dd|jst||j_|jdt|d|j |jd|_!|j!j"ddd|j#st||j_#t|d|j$|j#d|_%|j%j"ddd|j&st||j_&|j&dt|d|j'|j&d|_(|j(j"ddd|j)s>t||j_)t|d|j*|j)d|_+|j+j"dddt,|dd|_-|j-j ddt,|dd|_.|j.j ddd|j./d|_0t |dd|_1|j1j dddt ||_2|j2j dddt |dd|_3|j3j ddd|j4r| |j&4r*|'|j)4r>|*dS)Nz Debug ControlZDebugZWM_DELETE_WINDOWzw)anchorZGo)textcommandZStepZOverZOutZQuitdisabledstateleft)sider8ZStack)rDrEZvariablerrowcolumnZSourceLocalsGlobalsx)rCfill background)heightbothexpandrQ)5r-flistr:rr=Zwm_titleZ wm_iconnameZ wm_protocolr?ZbindrbframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr; configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)rr-r:r=rXZblbrarrrr/s                        zDebugger.make_guic Csr||_|jj|d|r||\}}}z |j}WntyJdt|}Yn0|durvzd|t|f}Wn Yn0d}nd}d}|j}|jj||d|j} | r|j |j|\} } | | | | d|j r||jD]} | jdd q|j|jd7_|jjd d |jd8_|jD]} | jd d q4|jjdd|jjd|jdd|_dS) NrDz%sz%s: %sZyellow)rDrRr8ZnormalrGZvwait::idledebugwaitrF)rrnr`r(AttributeErrorstrrpror>r. get_stack load_stackshow_variablesrgrtsync_source_linerZr=wakeupr1r:tkcall) rrrrtypevaluetbZm1ZbgsvstackirurrrrsH         zDebugger.interactioncCsV|j}|sdS||\}}|dd|dddkrRtj|rR|j||dS)Nr8z<>)r_Debugger__frame2fileliner!r"existsrWZ gotofileline)rrr&r'rrrr~s (zDebugger.sync_source_linecCs|j}|j}|j}||fSr )rrr )rrr%r&r'rrrZ__frame2filelineszDebugger.__frame2filelinecCs|j|dSr )r.Z set_continuer9rrrrr[ s z Debugger.contcCs|j|dSr )r.rr9rrrrr]s z Debugger.stepcCs|j|j|dSr )r.Zset_nextrr9rrrrr^sz Debugger.nextcCs|j|j|dSr )r.Z set_returnrr9rrrrr_sz Debugger.retcCs|j|dSr )r.Zset_quitr9rrrrr;s z Debugger.quitcCs|jjddddS)Nrdrx1)r:rrrrrrr9szDebugger.abort_loopcCs~|jsN|jrNt|j|j||_}|jrz|j|jd\}}| ||n,|j}|rp|jspd|_| d|jd<dS)Nr8rS) r>rbrt StackViewerrqrWrr.r{r|r?)rrrrrrrre$szDebugger.show_stackcCs|jr|dSr )rgrtr~rrrrrh1s zDebugger.show_sourcecCs|d|_|dSr,)rr})rZ stackitemrrr show_frame5s zDebugger.show_framecCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrNr8rS) localsviewerrirtNamespaceViewerrrr?r})rlvrrrrj<s  zDebugger.show_localscCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrOr8rS) globalsviewerrkrtrrsr?r})rgvrrrrlHs  zDebugger.show_globalsrcCst|j}|j}|j}|s d}}n |j}|j}|r@|r@||ur@d}|rX||||jjj|rp||||jjjdSr ) rrrf_locals f_globals load_dictr-ZinterpZrpcclt)rforcerrrZldictZgdictrrrr}Ts zDebugger.show_variablescCs|j||dSr )r.Z set_breakrr&r'rrrset_breakpoint_heredszDebugger.set_breakpoint_herecCs|j||dSr )r.Z clear_breakrrrrclear_breakpoint_heregszDebugger.clear_breakpoint_herecCs|j|dSr )r.Zclear_all_file_breaks)rr&rrrclear_file_breaksjszDebugger.clear_file_breaksc CsP|jjjD]@}|jj}z|jD]}|||qWq tyHYq Yq 0q dS)z=Load PyShellEditorWindow breakpoints into subprocess debuggerN)r-rWZ inversedictior&Z breakpointsrry)rZeditwinr&r'rrrload_breakpointsms  zDebugger.load_breakpoints)N)N)N)r)!r(r)r*rbrgrirkr r3r?r/rr~rr[r]r^r_r;r9r>rerhrrrrjrlr}rrrrrrrrr+:s6 ( K 1   r+c@sVeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)rcCs<trt||ntj||dd||_||_g|_dS)NP)width)rZisAquaTkrr rWr r)rmasterrWr rrrr ys zStackViewer.__init__Nc Cs||_|tt|D]}||\}}z|jd}Wnd}Yn0|j}|j}|j} ddl} | ||} | } | dvrd||| f} nd|| || f} ||krd| } | | q|dur| |dS)Nr(rr)rrwNz%s, line %d: %sz%s.%s(), line %d: %sz> ) rclearrangelenrrrr$ linecachegetlinestripr\Zselect) rrindexrrr'modnamer%r&funcnamerZ sourcelineitemrrrr|s0    zStackViewer.load_stackcCs|jrt||SdSoverride base methodN)rr popup_eventrArrrrszStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)rzGo to source line)labelrEzShow stack frameN)menuZ add_commandgoto_source_lineshow_stack_frame)rrrrr fill_menuszStackViewer.fill_menucCs4d|krt|jkr0nn|j|j|dS)rrN)rrr rrrrrr on_selectszStackViewer.on_selectcCs||dSr)rhrrrr on_doubleszStackViewer.on_doublecCs|jd}||dS)Nactive)listboxrrhrrrrrs zStackViewer.goto_source_linecCs@|jd}d|kr&t|jkrs   .?SX