B _n#~@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|dS)N)guibdbBdb__init__)selfr r5/opt/alt/python37/lib64/python3.7/idlelib/debugger.pyr sz Idb.__init__cCsL||r|dS||}y|j||Wntk rFYnXdS)N) in_rpc_codeset_step_Idb__frame2messager interactionZTclError)r framemessagerrr user_lines  z Idb.user_linecCs4||r|dS||}|j|||dS)N)rrrr r)r rinforrrruser_exceptions   zIdb.user_exceptioncCsB|jjdrdS|j}|jj}d|kr4d|kr4dS||SdS)Nzrpc.pyTidlelibZdebuggerF)f_code co_filenamecountf_backr)r rZ 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)r rcodefilenamelinenor"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:|dkrt|}||_||_d|_|d|_d|_dS)Nr)rpyshellidbrmake_gui interacting nesting_level)r r+r,rrrr >szDebugger.__init__csNjdkr.jdfdddSzd_jjSd_XdS)Nrdcs jS)N)runr)argsr rrhzDebugger.run..)r/ abort_looprootZafterr.r,r1)r r2r)r2r rr1Hs  z Debugger.runcCsdy |Wntk r YnX|jr6|jdS|jrL|jd|_|j|j dS)N) quit Exceptionr.topZbell stackviewercloser+Zclose_debuggerdestroy)r eventrrrr<ps    zDebugger.closecCsF|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|_}||x&|D]}|jd d|j ddq*Wt ||_}|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)sBt||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)4rB|*dS)Nz Debug ControlZDebugZWM_DELETE_WINDOWzw)anchorZGo)textcommandZStepZOverZOutZQuitdisabled)stateleft)sider5ZStack)rArBZvariabler)rowcolumnZSourceLocalsGlobalsx)r@fill background)heightboth)expandrL)5r+flistr7rr:Zwm_titleZ wm_iconnameZ wm_protocolr<ZbindrbframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr8 configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)r r+r7r:rRZblbr[rrrr-s                     zDebugger.make_guic Cs|||_|jj|d|r~|\}}}y |j}Wn tk rLdt|}YnX|dk rxyd|t|f}Wn YnXd}nd}d}|j}|jj||d|j} | r|j |j|\} } | | | | d|j r|x|jD]} | jdd qW|j|jd7_|jjd d |jd8_x|jD]} | jd d q)r_Debugger__frame2fileliner r!existsrQZ gotofileline)r rr%r&rrrrvs (zDebugger.sync_source_linecCs|j}|j}|j}||fS)N)rrr)r rr$r%r&rrrZ__frame2filelineszDebugger.__frame2filelinecCs|j|dS)N)r,Z set_continuer6)r rrrrU s z Debugger.contcCs|j|dS)N)r,rr6)r rrrrWs z Debugger.stepcCs|j|j|dS)N)r,Zset_nextrr6)r rrrrXsz Debugger.nextcCs|j|j|dS)N)r,Z set_returnrr6)r rrrrYsz Debugger.retcCs|j|dS)N)r,Zset_quitr6)r rrrr8s z Debugger.quitcCs|jjddddS)Nr^z::idledebugwait1)r7rxry)r rrrr6szDebugger.abort_loopcCs~|jsN|jrNt|j|j||_}|jrz|j|jd\}}| ||n,|j}|rp|jspd|_| d|jd<dS)Nr5rN) r;r\rn StackViewerrkrQrr,rsrtr<)r r}r~rrrrr_$szDebugger.show_stackcCs|jr|dS)N)rarnrv)r rrrrb1s zDebugger.show_sourcecCs|d|_|dS)Nr)rru)r Z stackitemrrr show_frame5s zDebugger.show_framecCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrIr5rN) localsviewerrcrnNamespaceViewerrlr<ru)r lvrrrrd<s  zDebugger.show_localscCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrJr5rN) globalsviewerrernrrmr<ru)r gvrrrrfHs  zDebugger.show_globalsrcCst|j}|j}|j}|s d}}n |j}|j}|r@|r@||kr@d}|rX||||jjj|rp||||jjjdS)N) rrrf_locals f_globals load_dictr+ZinterpZrpcclt)r forcerrrZldictZgdictrrrruTs zDebugger.show_variablescCs|j||dS)N)r,Z set_break)r r%r&rrrset_breakpoint_heredszDebugger.set_breakpoint_herecCs|j||dS)N)r,Z clear_break)r r%r&rrrclear_breakpoint_heregszDebugger.clear_breakpoint_herecCs|j|dS)N)r,Zclear_all_file_breaks)r r%rrrclear_file_breaksjszDebugger.clear_file_breaksc CsXxR|jjjD]D}|jj}y x|jD]}|||q"WWq tk rNw Yq Xq WdS)z=Load PyShellEditorWindow breakpoints into subprocess debuggerN)r+rQZ inversedictior%Z breakpointsrrq)r Zeditwinr%r&rrrload_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r'r(r)r\rarcrer r1r<r-rrvrrUrWrXrYr8r6r;r_rbrrrrdrfrurrrrrrrrr*:s6 ( K 1   r*c@sVeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)rcCs<trt||ntj||dd||_||_g|_dS)NP)width)rZisAquaTkrr rQr r~)r masterrQr rrrr ys zStackViewer.__init__Nc Cs||_|xtt|D]}||\}}y|jd}Wnd}YnX|j}|j}|j} ddl} | ||} | } | dkrd||| f} nd|| || f} ||krd| } | | qW|dk r| |dS)Nr'rr)rrpNz%s, line %d: %sz%s.%s(), line %d: %sz> ) r~clearrangelenrrrr# linecachegetlinestriprVZselect) r r~indexrrr&modnamer$r%funcnamerZ sourcelineitemrrrrts.    zStackViewer.load_stackcCs|jrt||SdS)zoverride base methodN)r~r popup_event)r r>rrrrszStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)zoverride base methodzGo to source line)labelrBzShow stack frameN)menuZ add_commandgoto_source_lineshow_stack_frame)r rrrr fill_menus  zStackViewer.fill_menucCs4d|krt|jkr0nn|j|j|dS)zoverride base methodrN)rr~r r)r rrrr on_selectszStackViewer.on_selectcCs||dS)zoverride base methodN)rb)r rrrr on_doubleszStackViewer.on_doublecCs|jd}||dS)Nactive)listboxrrb)r rrrrrs zStackViewer.goto_source_linecCs@|jd}d|kr&t|jkrs   .?SX