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