1from __future__ import print_function 2import lldb 3from lldbsuite.test.lldbtest import * 4from lldbsuite.test.decorators import * 5from gdbclientutils import * 6 7 8class TestMultiprocess(GDBRemoteTestBase): 9 def test_qfThreadInfo(self): 10 class MyResponder(MockGDBServerResponder): 11 def qfThreadInfo(self): 12 return "mp400.10200,p400.10204,p401.10300,p400.10208" 13 14 self.server.responder = MyResponder() 15 target = self.dbg.CreateTarget('') 16 if self.TraceOn(): 17 self.runCmd("log enable gdb-remote packets") 18 self.addTearDownHook( 19 lambda: self.runCmd("log disable gdb-remote packets")) 20 process = self.connect(target) 21 self.assertEqual(process.id, 0x400) 22 self.assertEqual( 23 [process.threads[i].id for i in range(process.num_threads)], 24 [0x10200, 0x10204, 0x10208]) 25 26 def test_stop_reason(self): 27 class MyResponder(MockGDBServerResponder): 28 def qfThreadInfo(self): 29 return "mp400.10200,p400.10204" 30 31 def cont(self): 32 return "S02thread:p400.10200;" 33 34 self.server.responder = MyResponder() 35 target = self.dbg.CreateTarget('') 36 if self.TraceOn(): 37 self.runCmd("log enable gdb-remote packets") 38 self.addTearDownHook( 39 lambda: self.runCmd("log disable gdb-remote packets")) 40 process = self.connect(target) 41 process.Continue() 42 self.assertEqual(process.GetThreadByID(0x10200).stop_reason, 43 lldb.eStopReasonSignal) 44 self.assertEqual(process.GetThreadByID(0x10204).stop_reason, 45 lldb.eStopReasonNone) 46