3 2al/@sddlZddlmZdZdadZiZiZiZiZ ddZ ddZ Gd d d Z Gd d d Z d dZGdddZGdddZGdddZGdddZGdddZddZddZddZdd Zed!krdd"lmZed#d$d%d&dS)'N)debugger idb_adapterZ gui_adaptercCst|}|t|<|S)N)id frametable)framefidr//opt/alt/python36/lib64/python3.6/debugger_r.py wrap_frame(sr cCs>|dkr dS|d}t|}|t|<|d|d|f}|SdS)Nr)rtracebacktable)info tracebackZ traceback_id modified_inforrr wrap_info-src@seZdZddZdddZdS)GUIProxycCs||_||_dS)N)connoid)selfr gui_adap_oidrrr __init__;szGUIProxy.__init__NcCs&|jj|jd|t|t|fidS)N interaction)r remotecallrr r)rmessagerrrrr r?s zGUIProxy.interaction)N)__name__ __module__ __qualname__rrrrrr r9src@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)S)* IdbAdaptercCs ||_dS)N)idb)rrrrr rHszIdbAdapter.__init__cCs|jjdS)N)rset_step)rrrr r MszIdbAdapter.set_stepcCs|jjdS)N)rset_quit)rrrr r!PszIdbAdapter.set_quitcCs|jjdS)N)r set_continue)rrrr r"SszIdbAdapter.set_continuecCst|}|jj|dS)N)rrset_next)rrrrrr r#VszIdbAdapter.set_nextcCst|}|jj|dS)N)rr set_return)rrrrrr r$ZszIdbAdapter.set_returncCsFt|}|dkrd}nt|}|jj||\}}dd|D}||fS)NcSsg|]\}}t||fqSr)r ).0Zframe2krrr esz(IdbAdapter.get_stack..)rr r get_stack)rrtbidrtbstackirrr r(^szIdbAdapter.get_stackcCsddl}|jj||jdS)Nr)__main__rrun__dict__)rcmdr-rrr r.hszIdbAdapter.runcCs|jj||}|S)N)r set_break)rfilenamelinenomsgrrr r1lszIdbAdapter.set_breakcCs|jj||}|S)N)r clear_break)rr2r3r4rrr r5pszIdbAdapter.clear_breakcCs|jj|}|S)N)rclear_all_file_breaks)rr2r4rrr r6ts z IdbAdapter.clear_all_file_breakscCst|}t||S)N)rgetattr)rrnamerrrr frame_attrzszIdbAdapter.frame_attrcCs"t|}|j}t|}|t|<|S)N)r f_globalsr dicttable)rrrdictdidrrr frame_globals~s zIdbAdapter.frame_globalscCs"t|}|j}t|}|t|<|S)N)rf_localsrr;)rrrr<r=rrr frame_localss zIdbAdapter.frame_localscCs"t|}|j}t|}|t|<|S)N)rf_coder codetable)rrrcodecidrrr frame_codes zIdbAdapter.frame_codecCst|}|jS)N)rBco_name)rrDrCrrr code_nameszIdbAdapter.code_namecCst|}|jS)N)rB co_filename)rrDrCrrr code_filenameszIdbAdapter.code_filenamecCs tddS)Nz"dict_keys not public or pickleable)NotImplementedError)rr=rrr dict_keysszIdbAdapter.dict_keyscCst|}t|jS)N)r;listkeys)rr=r<rrr dict_keys_listszIdbAdapter.dict_keys_listcCst|}||}t|}|S)N)r;repr)rr=keyr<valuerrr dict_itemszIdbAdapter.dict_itemN)rrrrr r!r"r#r$r(r.r1r5r6r9r>r@rErGrIrKrNrRrrrr rFs(  rcCs,t||}tj|}t|}|jt|tS)N)rrZIdbrregister idb_adap_oid)Z rpchandlerrZ gui_proxyrZidb_adaprrr start_debuggers   rUc@s<eZdZddZddZddZddZd d Zd d Zd S) FrameProxycCs||_||_d|_i|_dS)Nr)_conn_fid_oid _dictcache)rrrrrr rszFrameProxy.__init__cCsb|dddkrt||dkr(|jS|dkr8|jS|dkrH|jS|jj|jd|j|fiS)Nr _rAr:r?r9)AttributeError _get_f_code_get_f_globals _get_f_localsrWrrYrX)rr8rrr __getattr__s zFrameProxy.__getattr__cCs(|jj|jd|jfi}t|j|j|S)NrE)rWrrYrX CodeProxy)rrDrrr r]szFrameProxy._get_f_codecCs"|jj|jd|jfi}|j|S)Nr>)rWrrYrX_get_dict_proxy)rr=rrr r^s  zFrameProxy._get_f_globalscCs"|jj|jd|jfi}|j|S)Nr@)rWrrYrXrb)rr=rrr r_s  zFrameProxy._get_f_localscCs2||jkr|j|St|j|j|}||j|<|S)N)rZ DictProxyrWrY)rr=Zdprrr rbs    zFrameProxy._get_dict_proxyN) rrrrr`r]r^r_rbrrrr rVs  rVc@seZdZddZddZdS)racCs||_||_||_dS)N)rWrY_cid)rrrrDrrr rszCodeProxy.__init__cCsD|dkr |jj|jd|jfiS|dkr@|jj|jd|jfiSdS)NrFrGrHrI)rWrrYrd)rr8rrr r`s    zCodeProxy.__getattr__N)rrrrr`rrrr rasrac@s,eZdZddZddZddZddZd S) rccCs||_||_||_dS)N)rWrY_did)rrrr=rrr rszDictProxy.__init__cCs|jj|jd|jfiS)NrN)rWrrYre)rrrr rMs zDictProxy.keyscCs|jj|jd|j|fiS)NrR)rWrrYre)rrPrrr __getitem__s zDictProxy.__getitem__cCs t|dS)N)r\)rr8rrr r`szDictProxy.__getattr__N)rrrrrMrfr`rrrr rcs rcc@seZdZddZddZdS) GUIAdaptercCs||_||_dS)N)rgui)rrrhrrr rszGUIAdapter.__init__cCs t|j|}|jj|||dS)N)rVrrhr)rrrrrrrr r!s zGUIAdapter.interactionN)rrrrrrrrr rgsrgc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)IdbProxycCs||_||_||_dS)N)rrshell)rrrjrrrr r)szIdbProxy.__init__cOs|jj|j|||}|S)N)rrr)rZ methodnameargskwargsrQrrr call.sz IdbProxy.callcCs$|jj|jd|fi}||jj_dS)Nr.)rZ asyncqueuerrjZinterpZ active_seq)rr0localsseqrrr r.4sz IdbProxy.runcs.jd|j|\}}fdd|D}||fS)Nr(cs g|]\}}tj||fqSr)rVr)r%rr&)rrr r'<sz&IdbProxy.get_stack..)rmrX)rrr)r+r,r)rr r(9szIdbProxy.get_stackcCs|jddS)Nr")rm)rrrr r"?szIdbProxy.set_continuecCs|jddS)Nr )rm)rrrr r BszIdbProxy.set_stepcCs|jd|jdS)Nr#)rmrX)rrrrr r#EszIdbProxy.set_nextcCs|jd|jdS)Nr$)rmrX)rrrrr r$HszIdbProxy.set_returncCs|jddS)Nr!)rm)rrrr r!KszIdbProxy.set_quitcCs|jd||}|S)Nr1)rm)rr2r3r4rrr r1NszIdbProxy.set_breakcCs|jd||}|S)Nr5)rm)rr2r3r4rrr r5RszIdbProxy.clear_breakcCs|jd|}|S)Nr6)rm)rr2r4rrr r6Vs zIdbProxy.clear_all_file_breaksN)rrrrrmr.r(r"r r#r$r!r1r5r6rrrr ri'sricCsD|jddtfiat||t}tj||}t||}|jt||S)Nexecstart_the_debugger)rrrTrirZDebuggerrgrS)rpccltZpyshellZ idb_proxyrhZgui_adaprrr start_remote_debuggerZs     rscCst||jtdS)N)close_subprocess_debuggerZ unregisterr)rrrrr close_remote_debuggerrs rucCs|jddtfidS)NrpZstop_the_debugger)rrT)rrrrr rt~srtcCs|jddtfi}dS)Nrprq)rr)rrZidb_adap_oid_retrrr restart_subprocess_debuggers rvr-)mainzidlelib.idle_test.test_debuggerr F) verbosityexit)typesZidlelibrZ debuggingrTrrr;rBr r rrrrUrVrarcrgrirsrurtrvrZunittestrwrrrr s2   m* 3