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 r3/opt/alt/python37/lib/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)rArBvariabler)rowcolumnZSourceLocalsGlobalsx)r@fill background)heightboth)expandrM)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:rSZblbr\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!existsrRZ gotofileline)r rr%r&rrrrws (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 rrrrV s z Debugger.contcCs|j|dS)N)r,rr6)r rrrrXs z Debugger.stepcCs|j|j|dS)N)r,Zset_nextrr6)r rrrrYsz Debugger.nextcCs|j|j|dS)N)r,Z set_returnrr6)r rrrrZsz Debugger.retcCs|j|dS)N)r,Zset_quitr6)r rrrr8s z Debugger.quitcCs|jjddddS)Nr_z::idledebugwait1)r7ryrz)r rrrr6szDebugger.abort_loopcCs~|jsN|jrNt|j|j||_}|jrz|j|jd\}}| ||n,|j}|rp|jspd|_| d|jd<dS)Nr5rO) r;r]ro StackViewerrlrRrr,rtrur<)r rrrrrrr`$szDebugger.show_stackcCs|jr|dS)N)rbrorw)r rrrrc1s zDebugger.show_sourcecCs|d|_|dS)Nr)rrv)r Z stackitemrrr show_frame5s zDebugger.show_framecCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrJr5rO) localsviewerrdroNamespaceViewerrmr<rv)r lvrrrre<s  zDebugger.show_localscCsL|j}|jr$|s@t|jd|_n|r@d|_|d|jd<|dS)NrKr5rO) globalsviewerrfrorrnr<rv)r gvrrrrgHs  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 forcerrrZldictZgdictrrrrvTs 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)N)r+rRZ inversedictior%Z breakpointsrrr)r Zeditwinr%r&rrrload_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r'r(r)r]rbrdrfr r1r<r-rrwrrVrXrYrZr8r6r;r`rcrrrrergrvrrrrrrrrr*:s6 ( K 1   r*c@sVeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)rcCs<trt||ntj||dd||_||_g|_dS)NP)width)rZisAquaTkrr rRr r)r masterrRr 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)rrqNz%s, line %d: %sz%s.%s(), line %d: %sz> ) rclearrangelenrrrr# linecachegetlinestriprWZselect) r rindexrrr&modnamer$r%funcnamerZ sourcelineitemrrrrus.    zStackViewer.load_stackcCs|jrt||SdS)N)rr popup_event)r r>rrrrszStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)NzGo to source line)labelrBzShow stack frame)menuZ add_commandgoto_source_lineshow_stack_frame)r rrrr fill_menus  zStackViewer.fill_menucCs4d|krt|jkr0nn|j|j|dS)Nr)rrr r)r rrrr on_selectszStackViewer.on_selectcCs||dS)N)rc)r rrrr on_doubleszStackViewer.on_doublecCs|jd}||dS)Nactive)listboxrrc)r rrrrrs zStackViewer.goto_source_linecCs@|jd}d|kr&t|jkrs   .?SX