B „ f Jã@s°ddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z Gdd„dej ƒZ Gd d „d ƒZGd d „d e ƒZGd d„dƒZedkr¬ddlmZedddddS)éN)Ú*)ÚFrameÚ Scrollbar)Úmacosx)Ú ScrolledList)ÚListedToplevelc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚIdbcCs||_tj |¡dS)N)ÚguiÚbdbÚBdbÚ__init__)Úselfr ©rú5/opt/alt/python37/lib64/python3.7/idlelib/debugger.pyr sz Idb.__init__cCsL| |¡r| ¡dS| |¡}y|j ||¡Wntk rFYnXdS)N)Ú in_rpc_codeÚset_stepÚ_Idb__frame2messager Ú interactionZTclError)r ÚframeÚmessagerrrÚ user_lines  z Idb.user_linecCs4| |¡r| ¡dS| |¡}|j |||¡dS)N)rrrr r)r rÚinforrrrÚuser_exceptions   zIdb.user_exceptioncCsB|jj d¡rdS|j}|jj}d|kr4d|kr4dS| |¡SdS)Nzrpc.pyTÚidlelibZdebuggerF)Úf_codeÚ co_filenameÚcountÚf_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())rrÚf_linenoÚosÚpathÚbasenameÚco_name)r rÚcodeÚfilenameÚlinenor"rrrrZ__frame2message/s   zIdb.__frame2messageN)Ú__name__Ú __module__Ú __qualname__r rrrrrrrrr s   rc@sèeZdZdZZZZd1dd„Zdd„Zd2dd„Z dd „Z d3d d „Z d d „Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdZdd„Zdd„Zd d!„ZdZdZd"d#„Zd$d%„Zd4d'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Z dS)5ÚDebuggerNcCs:|dkrt|ƒ}||_||_d|_| ¡d|_d|_dS)Nr)rÚpyshellÚidbrÚmake_guiÚ interactingÚ nesting_level)r r+r,rrrr >szDebugger.__init__csNˆjdkr.ˆ ¡ˆj d‡‡fdd„¡dSzdˆ_ˆjjˆŽSdˆ_XdS)Nrédcs ˆjˆŽS)N)Úrunr)Úargsr rrÚhózDebugger.run..é)r/Ú abort_loopÚrootZafterr.r,r1)r r2r)r2r rr1Hs  z Debugger.runcCsdy | ¡Wntk r YnX|jr6|j ¡dS|jrL|j ¡d|_|j ¡|j  ¡dS)N) ÚquitÚ Exceptionr.ÚtopZbellÚ stackviewerÚcloser+Zclose_debuggerÚdestroy)r Úeventrrrr<ps    zDebugger.closecCsF|j}|j|_|j|_}t|ƒ|_}|j d¡|j d¡| d|j¡|j  d|j¡t |ƒ|_ }|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|jsˆt|ƒ|j_|j d¡t|d|j |jd|_!|j!j"ddd|j#sÂt|ƒ|j_#t|d|j$|j#d|_%|j%j"ddd|j&st|ƒ|j_&|j& d¡t|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|j 4¡r|  ¡|j& 4¡r.| '¡|j) 4¡rB| *¡dS)Nz Debug ControlZDebugZWM_DELETE_WINDOWzÚw)ÚanchorZGo)ÚtextÚcommandZStepZOverZOutZQuitÚdisabled)ÚstateÚleft)Úsider5ZStack)rArBZvariabler)ÚrowÚcolumnZSourceÚLocalsÚGlobalsÚx)r@ÚfillÚ background)ÚheightÚboth)ÚexpandrL)5r+Úflistr7rr:Zwm_titleZ wm_iconnameZ wm_protocolr<ZbindrÚbframeÚpackÚbuttonsZButtonÚcontZbcontÚappendÚstepZbstepÚnextZbnextÚretZbretr8Ú configureÚcframeÚvstackZ BooleanVarÚ __class__ÚsetZ CheckbuttonÚ show_stackZbstackÚgridÚvsourceÚ show_sourceZbsourceÚvlocalsÚ show_localsZblocalsÚvglobalsÚ show_globalsZbglobalsÚLabelÚstatusÚerrorZcgetÚerrorbgÚfstackÚflocalsÚfglobalsÚget)r r+r7r:rRZblÚbr[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 qêW|j ¡|jd7_|jj d d ¡|jd8_x|jD]} | jd d q)rÚ_Debugger__frame2fileliner r!ÚexistsrQZ gotofileline)r rr%r&rrrrvýs (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|jj ddd¡dS)Nr^z::idledebugwaitÚ1)r7rxry)r rrrr6szDebugger.abort_loopcCs~|jsN|j ¡rNt|j|j|ƒ|_}|jrz|j |jd¡\}}|  ||¡n,|j}|rp|j ¡spd|_|  ¡d|jd<dS)Nr5rN) r;r\rnÚ StackViewerrkrQrr,rsrtr<)r r}r~rrrrr_$szDebugger.show_stackcCs|j ¡r| ¡dS)N)rarnrv)r rrrrb1s zDebugger.show_sourcecCs|d|_| ¡dS)Nr)rru)r Z stackitemrrrÚ show_frame5s zDebugger.show_framecCsL|j}|j ¡r$|s@t|jdƒ|_n|r@d|_| ¡d|jd<| ¡dS)NrIr5rN)Ú localsviewerrcrnÚNamespaceViewerrlr<ru)r Úlvrrrrd<s  zDebugger.show_localscCsL|j}|j ¡r$|s@t|jdƒ|_n|r@d|_| ¡d|jd<| ¡dS)NrJr5rN)Ú globalsviewerrernr‡rmr<ru)r ÚgvrrrrfHs  zDebugger.show_globalsrcCst|j}|j}|j}|s d}}n |j}|j}|r@|r@||kr@d}|rX| |||jjj¡|rp| |||jjj¡dS)N) r†r‰rÚf_localsÚ f_globalsÚ load_dictr+ZinterpZrpcclt)r ÚforcerˆrŠrZldictZgdictrrrruTs zDebugger.show_variablescCs|j ||¡dS)N)r,Z set_break)r r%r&rrrÚset_breakpoint_heredszDebugger.set_breakpoint_herecCs|j ||¡dS)N)r,Z clear_break)r r%r&rrrÚclear_breakpoint_heregszDebugger.clear_breakpoint_herecCs|j |¡dS)N)r,Zclear_all_file_breaks)r r%rrrÚclear_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 inversedictÚior%Z breakpointsrrq)r Zeditwinr%r&rrrÚload_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r'r(r)r\rarcrer r1r<r-rrvrrUrWrXrYr8r6r;r_rbr…r†r‰rdrfrurrr‘r“rrrrr*:s6 ( K 1   r*c@sVeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)r„cCs<t ¡rt ||¡ntj||dd||_||_g|_dS)NéP)Úwidth)rZisAquaTkrr rQr r~)r ÚmasterrQr rrrr ys zStackViewer.__init__Nc CsÖ||_| ¡x°tt|ƒƒD] }||\}}y|jd}Wnd}YnX|j}|j}|j} ddl} |   ||¡} |   ¡} | dkr’d||| f} nd|| || f} ||kr²d| } |  | ¡qW|dk rÒ|  |¡dS)Nr'rr)rrpNz%s, line %d: %sz%s.%s(), line %d: %sz> ) r~ÚclearÚrangeÚlenrŒrrr#Ú linecacheÚgetlineÚstriprVZselect) r r~Úindexrrr&Úmodnamer$r%ÚfuncnameršZ sourcelineÚitemrrrrt…s.    zStackViewer.load_stackcCs|jrt ||¡SdS)zoverride base methodN)r~rÚ popup_event)r r>rrrr¡ŸszStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)zoverride base methodzGo to source line)ÚlabelrBzShow stack frameN)ÚmenuZ add_commandÚgoto_source_lineÚshow_stack_frame)r r£rrrÚ fill_menu¤s  zStackViewer.fill_menucCs4d|krt|jƒkr0nn|j |j|¡dS)zoverride base methodrN)r™r~r r…)r rrrrÚ on_select¬szStackViewer.on_selectcCs| |¡dS)zoverride base methodN)rb)r rrrrÚ on_double±szStackViewer.on_doublecCs|j d¡}| |¡dS)NÚactive)Úlistboxrrb)r rrrrr¤µs zStackViewer.goto_source_linecCs@|j d¡}d|kr&t|jƒkrs   .?SX