oiFdZddlZddlZddlZddlZddlZddlZddlZddlZ ddl m Z m Z ddl mZmZmZdZdejvZeZeZere Ze ZGdd Zd Zdad ZGd d ejejZdZdS)zPThe glue between the Python debugger interface and the Active Debugger interfaceN)_wraptrace)axdebuggateways stackframecdSN)argss GC:\PYTHON\Scheduler\python\Lib\site-packages\win32comext/axdebug/adb.pyfnullrsD DEBUG_AXDEBUGc eZdZdZdZdZdS)OutputReflectorc"||_||_dSr ) writefuncfile)selfrrs r __init__zOutputReflector.__init__s" rc,t|j|Sr )getattrrrnames r __getattr__zOutputReflector.__getattr__#sty$'''rcd|||j|dSr )rrwrite)rmessages r rzOutputReflector.write&s. w      rN)__name__ __module__ __qualname__rrrr rr rrsA(((!!!!!rrcr|dSd}|jd}dt|d|jjd|j|S)Nzz (with trace!)z **No Trace Set **z Frame at z, file z, line: )f_traceidf_code co_filenamef_lineno)frameaddns r _dumpfr++sO }x = 'De2e99eeU\-Eeeu~e_ceeerc |j}ddl}dd|j|f|j|<t ||||dzdS#tjYdSxYw)Nrr) codeContainer GetFileName linecacheGetTextcacheg_adb_OnSetBreakPoint traceback print_exc) codeContextbreakPointStatelineNofileNamer/s r OnSetBreakPointr:8s,88::$%q+*C*K*K*M*Mx$W ! xovPQzRRRRRs A"A&&A>ceZdZdZdZdZd"dZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZd#dZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"dS)$Adbc`d|_d|_d|_dx|_|_d|_d|_d|_d|_d|_d|_ d|_ d|_ g|_ tj|t!j|_|dSr )debugApplicationdebuggingThreaddebuggingThreadStateHandlestackSnifferCookie stackSniffercodeContainerProvider breakFlags breakReason appDebuggerappEventConnectionlogicalbotframe currentframe recursiveDatabdbBdbr_thread allocate_lock_threadprotectlockresetrs r rz Adb.__init__Es $#*.'6::$"3%)"#"&#  ")"7"9"9 rc^|ddkr|Stj||S)Nr<)rKrLcanonic)rfnames r rTz Adb.canonicWs* 8s??LwtU+++rcbtdtj|dS)Nz adb.reset) traceenterrKrLrPrQs r rPz Adb.reset\s*;  drNc||jvr g|j|<|j|}||vrdS|||||j||f<dSdS)Nz$There is already a breakpoint there!)breaksappendcbreaks)rfilenamelinenocondlists r __xxxxx__set_breakzAdb.__xxxxx__set_break`sm 4; & &$&DK !{8$ T>>99 F  -1DL6) * * *  rctdt|t|j||jurdStddS)N stop_hererzstop_here said 'No'!r)rWr+ stopframetracevrr)s r rbz Adb.stop_hereksL;u vdn/E/EFFF DN " "1%&&&qrctd|jt|d|_|jtjkrtj|_n|jtjkrtj|_nm|jtj krtj |_nFtd|j tj||rtj|_|jduS)N break_herezCalling base 'break_here' with)rWrDr+rErAPPBREAKFLAG_DEBUGGER_HALTBREAKREASON_DEBUGGER_HALTAPPBREAKFLAG_DEBUGGER_BLOCKBREAKREASON_DEBUGGER_BLOCKAPPBREAKFLAG_STEPBREAKREASON_STEPprintrYrKrLrgBREAKREASON_BREAKPOINTres r rgzAdb.break_herevs<&--@@@ ?g@ @ @&@D   _ C C C&AD   _ 9 9 9&7D   2DK @ @ @w!!$.. B#*#A t++rctdt||jtjkrtj|_dStj ||}tdt|d||S)Nbreak_anywherer returning) rWr+rDrrhrirErKrLrqrd)rr)rcs r rqzAdb.break_anywheresp#VE]]333 ?g@ @ @&@D 1 W # #D% 0 0 R@@@ rctdt|||j|ur%tdt jddS|j|_tj |||S)Ndispatch_returnz#dispatch_return resetting sys.trace) rWr+rHrdsyssettracef_backrIrKrLrurr)args r ruzAdb.dispatch_returnsq$fUmmS999  5 ( ( 8 9 9 9 L    F!Lw&&tUC888rctdt|t|j||jur>t dt|dt j|j|jS|j |j j  t dt|ddS||_ tj||S)N dispatch_linez for bottom frame returing tracerz!dispatch_line has no document for- skipping trace!)rWr+botframerHrrvrwtrace_dispatchrC FromFileNamer&r'rIrKrLr|res r r|zAdb.dispatch_lines?F5MM6$-3H3HIII D( ( ( /6%==2T U U U L, - - -& &  % 2 25<3K L L T 3VE]]DW   4  w$$T5111rcFtdt|tj|jd<||jurt d|jS|j |j j  t dt|ddS|jS)N dispatch_call__axstack_address__z1dispatch_call is self.botframe - returning tracerz!dispatch_call has no document forr}) rWr+rGetStackAddressf_localsr~rrrCrr&r'rys r rzAdb.dispatch_calls?F5MM222070G0I0I,- DM ! ! E F F F& &  % 2 25<3K L L T 3VE]]DW   4""rctdt||||jtddStj||||S)Nrz"trace_dispatch has no application!)rWr+r>rrKrLr)rr)eventrzs r rzAdb.trace_dispatchsV#VE]]E3???  ( 6 7 7 7 Fw%%dE5#>>>rctdt||jdkr.|j}| tj}||d|dSdS)N user_liner)rWr+r(rErrm_HandleBreakPoint)rr)rEs r rz Adb.user_linesa;u ... >Q  *K"%6  " "5$ < < < < <  rcHtj|||dSr )rKrL user_return)rr) return_values r rzAdb.user_returns" D%66666rcHtj|||dSr )rKrLuser_exception)rr)exc_infos r rzAdb.user_exceptions" tUH55555rctd|dt|tdt|j |j|}t d|n8#t j$r&}tj }td|Yd}~nd}~wwxYwg|_ d|_ |tj kr|n|tj kr$t d|n|tjkr$t d|ny|tjkr%t d ||nD|tjkr%t d ||nt-d d|_dS) Nz$Calling HandleBreakPoint with reasonzat framez Current frame iszHandleBreakPoint returned with zHandleBreakPoint FAILED withrzresume action is continuezresume action is stepzresume action is nextzresume action is stop outzunknown resume action flags)rWr+rIr>HandleBreakPointrd pythoncom com_errorrBREAKRESUMEACTION_CONTINUErstackcurindexBREAKRESUMEACTION_ABORTset_quit set_continueBREAKRESUMEACTION_STEP_INTOset_stepBREAKRESUMEACTION_STEP_OVERset_nextBREAKRESUMEACTION_STEP_OUT set_return ValueErrorrE)rr)tbreason resumeActiondetailss r rzAdb._HandleBreakPoints 2FJu     &t/@(A(ABBB ;0AA&IIL 4l C C C C" ; ; ;#=L 0' : : : : : : : :  ;   7: : : MMOOOO W? ? ? . / / /        W@ @ @ * + + + MMOOOO W@ @ @ * + + + MM% W? ? ? . / / / OOE " " " ":;; ;s*A..B#=BB#cftj|_tj|dSr )rBREAKREASON_LANGUAGE_INITIATEDrErKrL set_tracerQs r rz Adb.set_traces)"A $rctd|d|_|jM |j|jn,#t j$rtd|jYnwxYwdx|_|_ |j |j d|_ d|_d|_ |j "|j d|_ dSdS)N ClosingAppz&*** Could not RemoveStackFrameSniffer )rWrPrHrAr>RemoveStackFrameSnifferrrrrBrG DisconnectrFrCCloserQs r CloseAppz Adb.CloseApps<    #  " . %==d>UVVVV&   VT=TVV 7;:$"3  " .  # . . 0 0 0&*D # $  % 1  & , , . . .)-D & & & 2 1sA&A<;A<c6||_||_ttj|t j|_||j|_ tj j |j|t j|_dSr )rCr>rrDebugStackFrameSnifferrIID_IDebugStackFrameSnifferrBAddStackFrameSnifferrAwin32comclientconnectSimpleConnection!IID_IRemoteDebugApplicationEventsrG)rr>rCs r AttachAppz Adb.AttachApps%:" 0!  -d 3 3W5X  #3"G"G  # #  #+/"9"J"J  !4)R# # rctd|dt|jtj|jkrt ddSt|jdkrd|_d|_d|_d|_ dS|jd\|_ |_ |_|_ |jdd|_dS)NResetAXDebuggingz with refcountz'ResetAXDebugging called on other threadrr) rWlenrJwin32apiGetCurrentThreadIdr?rrHrIr@ logbotframercrQs r rzAdb.ResetAXDebugging/s%t_c$BT>U>UVVV  & ( (D,@ @ @ ; < < < F t! " "a ' '#'D #'D $D .2D + F  q !    N    +!/3rc||}ntj|jd<td||j t j}|j||_ni|j|kr+td |j dS|j d|j |j|j|jf|j n#|j wxYwtdt#|||_||_||_ d|_tj|_|dS)ziGet ready for potential debugging. Must be called on the thread that is being debugged. NrSetupAXDebuggingz2SetupAXDebugging called on other thread - ignored!rz"SetupAXDebugging has base frame as)rrrrWrOacquirerrr?rreleaserJinsertrHrcrIr@r+r~GetThreadStateHandle_BreakFlagsChanged)r baseFrame userFrame thisThreads r rzAdb.SetupAXDebuggingEs  !II9@8O8Q8QI 4 5%t,,, ''))) .!466J#+'1$$':55NOOO  # + + - - - - -")),)7   # + + - - - -D # + + - - - - 2F94E4EFFF! "( *1*F*H*H' !!!!!s z'Adb.OnConnectDebugger..vsk77::r)rWrFrrvstdoutstderr)rrFrs ` r rzAdb.OnConnectDebuggerrsT& 444&:::: $SZ;; $SZ;; rcBtdttjtrtjjt_ttjtrtjjt_d|_|dS)NOnDisconnectDebugger) rW isinstancervrrrrrFrrQs r rzAdb.OnDisconnectDebuggerzsh)*** cj/ 2 2 )CJ cj/ 2 2 )CJ rc&td|dS)N OnSetNamerWrs r rz Adb.OnSetNames;%%%%%rc&td|dS)N OnDebugOutputr)rstrings r rzAdb.OnDebugOutputs?F+++++rc$tddS)NOnCloserrQs r rz Adb.OnCloses9rc&td|dS)NOnEnterBreakPointrrrdats r rzAdb.OnEnterBreakPoint&-----rc&td|dS)NOnLeaveBreakPointrrs r rzAdb.OnLeaveBreakPointrrc&td|dS)NOnCreateThreadrrs r rzAdb.OnCreateThreads#T*****rc&td|dS)NOnDestroyThreadrrs r rzAdb.OnDestroyThreads$d+++++rc^td||||_|dS)NzDebugger OnBreakFlagChange)rWrDr)rabfrs r OnBreakFlagChangezAdb.OnBreakFlagChanges4/d;;; !!!!!rc>td|jdd|jdzdtjzt d|jt|js|jrb|jr4t dt|j|j |j_ n't d|j |j |j _ |j D|jr?|jtjkr%tj|j |j dSdSdSdS) Nz_BreakFlagsChanged to  zwith our thread = z, zand debugging thread = z_BreakFlagsChanged has breakszBreakFlagsChange with bot framez&BreakFlagsChanged, but no bottom frame)rWrDr?rrrrYrrHr+rr$rcr@rSetThreadStateTracerQs r rzAdb._BreakFlagsChangedsQ 7T_ 7 7 7;4#7;;; <G(C(E(EGG H   -t{;;; t{   At A# A7@T9U9UVVV 04/B$,,>???>--1-@DN*  + 7 8$(C(E(EEE  '/1D      8 7 7 7EErcHtd||||||tjkr>|||}|rt d|t d|jn||||t d|jdS)Nr3z*** set_break failed -z+_OnSetBreakPoint just set BP and has breaksz$_OnSetBreakPoint leaving with breaks) rWrBREAKPOINT_ENABLED set_breakrnrrY clear_breakr)rkeyr6bpsr8problems r r3zAdb._OnSetBreakPoints%tS+sFKKK ', , ,nnS&11G 9.888 ? M M M M   S& ) ) ) !!! 4dkBBBBBrr )NN)#r r!r"rrTrP_Adb__xxxxx__set_breakrbrgrqrur|rrrrrrrrrrrrrrrrrrrrrrr3r rr r<r<Ds$,,,  2 2 2 2    , , , 9 9 9222,###(???===777666    D   ....   "444,*"*"*"*"Z<<<&&&,,,......+++,,,""" """H C C C C Crr<c:ttatSr )r2r<r rr Debuggerrs } Lr)__doc__rMrKosrvr4rrwin32com.client.connectrwin32com.axdebug.utilrrrrrrenviron debuggingrWrdrr+r2r:rLRemoteDebugApplicationEventsr<rr rr rsvVV ........++++++++++    rz )   J F ! ! ! ! ! ! ! !fff    HCHCHCHCHC#'88HCHCHCV r