ó ükWc@sÑddlZddlZddlZddlZddlZddlZddlmZmZy1ej dddgdej ƒj ƒ\Z Z Wn ek r±ejdƒ‚nXejde ƒZeejd ƒƒZeejd ƒƒZed krejd e ƒ‚nejjd ƒr4ejdƒ‚nejjejjejƒdƒZd„Zedƒ\ZZ e rŒejdƒ‚ndejgZedejƒ\Z Z de krádZ!eje!e j"ƒƒ‚nd„Z#d„Z$e$ƒZ%dej&fd„ƒYZ'de'fd„ƒYZ(ej)e#ƒdƒde'fd„ƒYƒZ*de'fd „ƒYZ+d!e'fd"„ƒYZ,d#e'fd$„ƒYZ-d%e'fd&„ƒYZ.d'„Z/e0d(krÍe/ƒndS()iÿÿÿÿN(t run_unittesttfindfiletgdbs-nxs --versiontstdoutsCouldn't find gdb on the paths^GNU gdb [^\d]*(\d+)\.(\d)iiis=gdb versions before 7.0 didn't support python embedding Saw: tsunoss&test doesn't work very well on Solariss python-gdb.pycOs›|r%tjjƒ}|j|ƒnd }d }ttfd krZ|ddtf7}ntj ||dtj d tj d |ƒj ƒ\}}||fS(skRuns gdb in batch mode with the additional arguments given by *args. Returns its (stdout, stderr) Rs--batchs-nxiis-iexsadd-auto-load-safe-path RtstderrtenvN(Rs--batchs-nx(ii( tostenvirontcopytupdatetNonetgdb_major_versiontgdb_minor_versiontcheckout_hook_patht subprocesstPopentPIPEt communicate(targstenv_varsRtbase_cmdtoutterr((s#/usr/lib/python2.7/test/test_gdb.pytrun_gdb$s's9--eval-command=python import sys; print(sys.version_info)s*gdb not built with embedded python supports--argssauto-loading has been declineds3gdb security settings prevent use of custom hooks: cCsUtjƒd}d}x,|jƒD]}|jdƒr#|}q#q#W|oT|dkS(Nt PY_CFLAGSts-Os-O0(t sysconfigtget_config_varstsplitt startswith(tcflagst final_opttopt((s#/usr/lib/python2.7/test/test_gdb.pytpython_is_optimizedEs  cCs^tdƒ\}}tjd|ƒ}|s<tjdƒ‚n|jdƒjdƒ}d|kS(Ns+--eval-command=python print(dir(gdb.Frame))s .*\[(.*)\].*s1Unable to parse output from gdb.Frame.select testis, s'select'(RtretmatchtunittesttSkipTesttgroupR(Rt_tmt gdb_frame_dir((s#/usr/lib/python2.7/test/test_gdb.pytgdb_has_frame_selectMs t DebuggerTestscBsPeZdZdddded„Zded„Zd„Zd„Zd„Z RS(s(Test that the debugger can debug Python.tPyObject_Printc CsQdd|dg}|r&||7}n |dg7}dddg}|g|D]}d|^qL7}|d tjg7}|sŒ|d g7}n|r¥|d |g7}n|r»||g7}ntd d |Œ\} } | jƒ} g} d|dddddddddf } x-| D]%}|j| ƒs| j|ƒqqW|j| gƒ| S(sû Run 'python -c SOURCE' under gdb with a breakpoint. Support injecting commands after the breakpoint is reached Returns the stdout from gdb cmds_after_breakpoint: if provided, a list of strings: gdb commands sset breakpoint pending yessbreak %strunt backtraceRs--batchs-nxs--eval-command=%ss--argss-Ss-ctPYTHONHASHSEEDt0sFunction "%s" not defined.sLwarning: no loadable sections found in added symbol-file system-supplied DSOspwarning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.sLwarning: Cannot initialize thread debugging library: Debugger service faileds@warning: Could not load shared library symbols for linux-vdso.sos@warning: Could not load shared library symbols for linux-gate.sos5Do you need "set solib-search-path" or "set sysroot"?s4warning: Source file is more recent than executable.sMissing separate debuginfo for sTry: zypper install -C (tsyst executableRt splitlinesRtappendt assertEqual(tselftsourcetscriptt breakpointtcmds_after_breakpointt import_sitetcommandsRtcmdRRterrlinestunexpected_errlinestignore_patternstline((s#/usr/lib/python2.7/test/test_gdb.pytget_stack_trace\sD   !    cCsl|j|ddd|d|ƒ}tjd|tjƒ}|sY|jd||fƒn|jdƒ|fS(NR:R-R;R<s6.*#0\s+PyObject_Print\s+\(\s*op\=\s*(.*?),\s+fp=.*\).*sUnexpected gdb output: %r %si(RCR#R$tDOTALLtfailR'(R7R8R;R<t gdb_outputR)((s#/usr/lib/python2.7/test/test_gdb.pyt get_gdb_repr¶s   cCs*|j|j|ƒdd||fƒdS(s9Ensure that the given "actual" string ends with "exp_end"tmsgs%r did not end with %rN(t assertTruetendswith(R7tactualtexp_end((s#/usr/lib/python2.7/test/test_gdb.pytassertEndsWithÌscCs9tj||tjƒ}|j|dd||fƒdS(NRHs%r did not match %r(R#R$RDRI(R7RKtpatternR)((s#/usr/lib/python2.7/test/test_gdb.pytassertMultilineMatchesÑscCs tdƒS(Ns gdb_sample.py(R(R7((s#/usr/lib/python2.7/test/test_gdb.pytget_sample_scriptÕsN( t__name__t __module__t__doc__R tFalseRCRGRMRORP(((s#/usr/lib/python2.7/test/test_gdb.pyR,Xs X   tPrettyPrintTestscBs:eZd„Zd!d„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„Zd!d!d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d „Z#RS("cCs&|jdƒ}|jd|kƒdS(Nsprint 42R-(RCRI(R7RF((s#/usr/lib/python2.7/test/test_gdb.pyttest_getting_backtraceÙscCs<|jdt|ƒ|ƒ\}}|j|t|ƒƒdS(Nsprint (RGtreprR6(R7tvalR;tgdb_reprRF((s#/usr/lib/python2.7/test/test_gdb.pyt assertGdbReprÝscCsL|jdƒ|jdƒ|jdƒ|jtjƒ|jtj ƒdS(s2Verify the pretty-printing of various "int" valuesi*iiùÿÿÿN(RZR2tmaxint(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_intäs    cCs8|jdƒ|jdƒ|jdƒ|jdƒdS(s3Verify the pretty-printing of various "long" valuesllJ)£lÿÿÿÿlüÿÿÿIú5N(RZ(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_longìs   cCs+|jtƒ|jtƒ|jdƒdS(s2Verify the pretty-printing of True, False and NoneN(RZtTrueRTR (R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_singletonsós  cCs2|jiƒ|jidd6ƒ|jdƒdS(s*Verify the pretty-printing of dictionariestbartfoos{'foo': 'bar', 'douglas':42}N(RZ(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_dictsùs cCs$|jgƒ|jtdƒƒdS(s#Verify the pretty-printing of listsiN(RZtrange(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_listsÿs cCs8|jdƒ|jdƒ|jdƒ|jdƒdS(s%Verify the pretty-printing of stringsRs(And now for something hopefully the sames7string with embedded NUL here and then some more texts!this is byte 255:ÿ and byte 128:€N(RZ(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_stringss   cCs.|jtƒƒ|jdƒ|jdƒdS(s$Verify the pretty-printing of tuplesiRaR`tbazN(i(sfoosbarRf(RZttuple(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_tuples s cCsE|jdƒ|jdƒ|jdƒ|jdƒ|jdƒdS(s,Verify the pretty-printing of unicode valuesuu hello worldu☠u 文字化ã‘uð„¡N(RZ(R7((s#/usr/lib/python2.7/test/test_gdb.pyt test_unicodes     cCsï|jtƒƒ|jdƒd}|j|jdƒƒ|j|jdƒƒ|jt|ƒddhƒ|jdƒd}|j|jdƒƒ|j|jdƒƒ|jt|ƒdd hƒ|jd ƒ\}}|j|d ƒd S( s"Verify the pretty-printing of setssprint set(['a', 'b'])isset([s])tatbsprint set([4, 5])iis"s = set(['a','b']) s.pop() print ss set(['b'])N(RZtsetRGRIRRJR6teval(R7trepRYRF((s#/usr/lib/python2.7/test/test_gdb.pyt test_sets)scCsÊ|jtƒƒ|jdƒd}|j|jdƒƒ|j|jdƒƒ|jt|ƒddhƒ|jdƒd}|j|jdƒƒ|j|jdƒƒ|jt|ƒdd hƒd S( s(Verify the pretty-printing of frozensetssprint frozenset(['a', 'b'])is frozenset([s])RjRksprint frozenset([4, 5])iiN(RZt frozensetRGRIRRJR6Rm(R7Rn((s#/usr/lib/python2.7/test/test_gdb.pyttest_frozensets<scCsN|jdƒ\}}|j|dƒ|jdƒ\}}|j|dƒdS(NsR try: raise RuntimeError("I am an error") except RuntimeError, e: print e s)exceptions.RuntimeError('I am an error',)s= try: a = 1 / 0 except ZeroDivisionError, e: print e sCexceptions.ZeroDivisionError('integer division or modulo by zero',)(RGR6(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_exceptionsHs  cCsB|jdƒ\}}tjd|ƒ}|j|dd|ƒdS(s5Verify the pretty-printing of classic class instancess: class Foo: pass foo = Foo() foo.an_int = 42 print foos(RHs%Unexpected classic-class rendering %rN(RGR#R$RI(R7RYRFR)((s#/usr/lib/python2.7/test/test_gdb.pyttest_classic_class^s  cCsB|jdƒ\}}tjd|ƒ}|j|dd|ƒdS(s7Verify the pretty-printing of new-style class instancessB class Foo(object): pass foo = Foo() foo.an_int = 42 print foos(RHs'Unexpected new-style class rendering %rN(RGR#R$RI(R7RYRFR)((s#/usr/lib/python2.7/test/test_gdb.pyttest_modern_classjs  cCsB|jdƒ\}}tjd|ƒ}|j|dd|ƒdS(s<Verify the pretty-printing of an instance of a list subclasssQ class Foo(list): pass foo = Foo() foo += [1, 2, 3] foo.an_int = 42 print foos(RHs'Unexpected new-style class rendering %rN(RGR#R$RI(R7RYRFR)((s#/usr/lib/python2.7/test/test_gdb.pyttest_subclassing_listvs  cCsB|jdƒ\}}tjd|ƒ}|j|dd|ƒdS(s=Verify the pretty-printing of an instance of a tuple subclasssJ class Foo(tuple): pass foo = Foo((1, 2, 3)) foo.an_int = 42 print foos(RHs'Unexpected new-style class rendering %rN(RGR#R$RI(R7RYRFR)((s#/usr/lib/python2.7/test/test_gdb.pyttest_subclassing_tupleƒs  c Cs«|r|dg}n dg}|j|d|ƒ\}}|rX|t|ƒkrXdSn|rod|d}nd}tj||ƒ} | s§|jd||fƒndS(sÔRun Python under gdb, corrupting variables in the inferior process immediately before taking a backtrace. Verify that the variable's representation is the expected failsafe representationR/R;Nts<.* at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r %s(RGRWR#R$RE( R7R8t corruptiontexpvaluetexptypeR;RYRFRNR)((s#/usr/lib/python2.7/test/test_gdb.pyt assertSane‘s   cCs5|jddddgƒ\}}|j|dƒdS(s2Ensure that a NULL PyObject* is handled gracefullysprint 42R;sset variable op=0R/t0x0N(RGR6(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyt test_NULL_ptr²s cCs|jddƒdS(s?Ensure that a PyObject* with NULL ob_type is handled gracefullysprint 42sset op->ob_type=0N(R{(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_NULL_ob_type¼s cCs|jddddƒdS(sDEnsure that a PyObject* with a corrupt ob_type is handled gracefullysprint 42sset op->ob_type=0xDEADBEEFRyi*N(R{(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_corrupt_ob_typeÁs cCs|jddddƒdS(sDEnsure that a PyObject* with a type with corrupt tp_flags is handledsprint 42sset op->ob_type->tp_flags=0x0Ryi*N(R{(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_corrupt_tp_flagsÇs cCs|jddddƒdS(sCEnsure that a PyObject* with a type with corrupt tp_name is handledsprint 42s#set op->ob_type->tp_name=0xDEADBEEFRyi*N(R{(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_corrupt_tp_nameÍs cCs|jddddƒdS(sBEnsure that a PyInstanceObject with with a NULL in_dict is handleds: class Foo: pass foo = Foo() foo.an_int = 42 print foos(set ((PyInstanceObject*)op)->in_dict = 0RztFooN(R{(R7((s#/usr/lib/python2.7/test/test_gdb.pyttest_NULL_instance_dictÓscCsH|jddtƒ\}}tjd|ƒ}|j|dd|ƒdS(sAEnsure that the new-style class _Helper in site.py can be handledsprint __builtins__.helpR<s<_Helper at remote 0x[0-9a-f]+>RHsUnexpected rendering %rN(RGR^R#R$RI(R7RYRFR)((s#/usr/lib/python2.7/test/test_gdb.pyttest_builtins_helpÞs cCsN|jdƒ\}}|j|dƒ|jdƒ\}}|j|dƒdS(sbEnsure that a reference loop involving a list doesn't lead proxyval into an infinite loop:s%a = [3, 4, 5] ; a.append(a) ; print as[3, 4, 5, [...]]s/a = [3, 4, 5] ; b = [a] ; a.append(b) ; print as[3, 4, 5, [[...]]]N(RGR6(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_selfreferential_listèscCs)|jdƒ\}}|j|dƒdS(sbEnsure that a reference loop involving a dict doesn't lead proxyval into an infinite loop:s/a = {} ; b = {'bar':a} ; a['foo'] = b ; print as{'foo': {'bar': {...}}}N(RGR6(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_selfreferential_dictõscCs?|jdƒ\}}|jtjd|ƒd||fƒdS(Ns< class Foo: pass foo = Foo() foo.an_attr = foo print foos/\) at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r %s(RGRIR#R$(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyt'test_selfreferential_old_style_instanceýs cCsz|jdƒ\}}|jtjd|ƒd||fƒ|jdƒ\}}|jtjd|ƒd||fƒdS(NsD class Foo(object): pass foo = Foo() foo.an_attr = foo print foos/\) at remote 0x[0-9a-f]+>s$Unexpected gdb representation: %r %ssT class Foo(object): pass a = Foo() b = Foo() a.an_attr = b b.an_attr = a print asV\) at remote 0x[0-9a-f]+>\) at remote 0x[0-9a-f]+>(RGRIR#R$(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyt'test_selfreferential_new_style_instance scCsI|jdƒ\}}|j|dƒ|jt|ƒdtdƒƒdS(s)Verify that very long output is truncatedsprint range(1000)s[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226...(truncated)is...(truncated)N(RGR6tlen(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_truncation%s  cCs)|jdƒ\}}|j|dƒdS(Ns print lens(RGR6(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_builtin_functionAscCs?|jdƒ\}}|jtjd|ƒd||fƒdS(Ns&import sys; print sys.stdout.readliness@s$Unexpected gdb representation: %r %s(RGRIR#R$(R7RYRF((s#/usr/lib/python2.7/test/test_gdb.pyttest_builtin_methodEs cCsN|jdddddgƒ}|jtjd|tjƒd||fƒdS(Ns< def foo(a, b, c): pass foo(3, 4, 5) print foo.__code__R:R-R;s;print (PyFrameObject*)(((PyCodeObject*)op)->co_zombieframe)sK.*\s+\$1 =\s+Frame 0x[0-9a-f]+, for file , line 3, in foo \(\)\s+.*s$Unexpected gdb representation: %r %s(RCRIR#R$RD(R7RF((s#/usr/lib/python2.7/test/test_gdb.pyt test_framesLs  N($RQRRRVR RZR\R]R_RbRdReRhRiRoRqRrRsRtRuRvR{R}R~RR€RRƒR„R…R†R‡RˆRŠR‹RŒR(((s#/usr/lib/python2.7/test/test_gdb.pyRUØsB             !         s&Python was compiled with optimizationst PyListTestscBs,eZd„Zd„Zd„Zd„ZRS(cCs|j||ƒdS(N(RM(R7texpectedRK((s#/usr/lib/python2.7/test/test_gdb.pyt assertListing^scCs5|jd|jƒddgƒ}|jd|ƒdS(s'Verify that the "py-list" command worksR9R;spy-lists‘ 5 6 def bar(a, b, c): 7 baz(a, b, c) 8 9 def baz(*args): >10 print(42) 11 12 foo(1, 2, 3) N(RCRPR(R7tbt((s#/usr/lib/python2.7/test/test_gdb.pyttest_basic_commandas  cCs5|jd|jƒddgƒ}|jd|ƒdS(s7Verify the "py-list" command with one absolute argumentR9R;s py-list 9sL 9 def baz(*args): >10 print(42) 11 12 foo(1, 2, 3) N(RCRPR(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_one_abs_argps  cCs5|jd|jƒddgƒ}|jd|ƒdS(s8Verify the "py-list" command with two absolute argumentsR9R;s py-list 1,3sR 1 # Sample script for use by test_gdb.py 2 3 def foo(a, b, c): N(RCRPR(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_two_abs_args{s  (RQRRRR’R“R”(((s#/usr/lib/python2.7/test/test_gdb.pyRŽ[s   tStackNavigationTestscBsžeZejedƒejeƒdƒd„ƒƒZejedƒd„ƒZejedƒd„ƒZ ejedƒejeƒdƒd„ƒƒZ RS(s$test requires py-up/py-down commandss&Python was compiled with optimizationscCs5|jd|jƒddgƒ}|j|dƒdS(s%Verify that the "py-up" command worksR9R;spy-upsn^.* #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) $N(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_pyup_command†s  cCs5|jd|jƒddgƒ}|j|dƒdS(s7Verify handling of "py-down" at the bottom of the stackR9R;spy-downs$Unable to find a newer python frame N(RCRPRM(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_down_at_bottom“s  cCs9|jd|jƒddgdƒ}|j|dƒdS(s2Verify handling of "py-up" at the top of the stackR9R;spy-upis%Unable to find an older python frame N(RCRPRM(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_up_at_top›s cCs8|jd|jƒdddgƒ}|j|dƒdS(s$Verify "py-up" followed by "py-down"R9R;spy-upspy-downsØ^.* #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 10, in baz \(args=\(1, 2, 3\)\) print\(42\) $N(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_up_then_down£s ( RQRRR%t skipUnlesstHAS_PYUP_PYDOWNtskipIfR"R–R—R˜R™(((s#/usr/lib/python2.7/test/test_gdb.pyR•…s   t PyBtTestscBs&eZejeƒdƒd„ƒZRS(s&Python was compiled with optimizationscCs5|jd|jƒddgƒ}|j|dƒdS(s%Verify that the "py-bt" command worksR9R;spy-bts8^.* #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\) baz\(a, b, c\) #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \(a=1, b=2, c=3\) bar\(a, b, c\) #[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 12, in \(\) foo\(1, 2, 3\) N(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyR’³s  (RQRRR%RœR"R’(((s#/usr/lib/python2.7/test/test_gdb.pyR²s t PyPrintTestscBs’eZejeƒdƒd„ƒZejedƒejeƒdƒd„ƒƒZejeƒdƒd„ƒZ ejeƒdƒd„ƒZ RS(s&Python was compiled with optimizationscCs5|jd|jƒddgƒ}|j|dƒdS(s(Verify that the "py-print" command worksR9R;s py-print argss".*\nlocal 'args' = \(1, 2, 3\)\n.*N(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyR’Äs  s$test requires py-up/py-down commandscCs>|jd|jƒdddddgƒ}|j|dƒdS(NR9R;spy-ups py-print cs py-print bs py-print as3.*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_print_after_upÍs cCs5|jd|jƒddgƒ}|j|dƒdS(NR9R;spy-print __name__s&.*\nglobal '__name__' = '__main__'\n.*(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_printing_globalÖs  cCs5|jd|jƒddgƒ}|j|dƒdS(NR9R;s py-print lens/.*\nbuiltin 'len' = \n.*(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_printing_builtinÞs  ( RQRRR%RœR"R’RšR›RŸR R¡(((s#/usr/lib/python2.7/test/test_gdb.pyRžÃs    t PyLocalsTestscBsVeZejeƒdƒd„ƒZejedƒejeƒdƒd„ƒƒZRS(s&Python was compiled with optimizationscCs5|jd|jƒddgƒ}|j|dƒdS(NR9R;s py-localss.*\nargs = \(1, 2, 3\)\n.*(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyR’çs  s$test requires py-up/py-down commandscCs8|jd|jƒdddgƒ}|j|dƒdS(NR9R;spy-ups py-localss.*\na = 1\nb = 2\nc = 3\n.*(RCRPRO(R7R‘((s#/usr/lib/python2.7/test/test_gdb.pyttest_locals_after_upïs ( RQRRR%RœR"R’RšR›R£(((s#/usr/lib/python2.7/test/test_gdb.pyR¢æs   cCstttttttƒdS(N(RRURŽR•RRžR¢(((s#/usr/lib/python2.7/test/test_gdb.pyt test_mainøs t__main__(1RR#RR2R%Rttest.test_supportRRRRRt gdb_versionR(tOSErrorR&tsearchtgdb_version_numbertintR'R R tplatformRtpathtjointdirnameR3RRt gdbpy_versionR>t gdbpy_errorsRHtrstripR"R+R›tTestCaseR,RURœRŽR•RRžR¢R¤RQ(((s#/usr/lib/python2.7/test/test_gdb.pyts\               €ÿ„  (-#